【項目】在AUTODL上使用langchain實現《紅樓夢》知識圖譜和RAG混合檢索(三)知識圖譜和路由部分

首先在數據集 - 開放知識圖譜下載紅樓夢的知識圖譜,這個網站上有各種各樣的知識圖譜,可以挑你感興趣的做( ? ?ω?? )

這個知識圖譜的作者們已經將三元組抽取出來了,我們可以直接用,如果你對三元組是如何生成的感興趣,可以看看他們之前的步驟。對于這個項目,我們只需要打開neo_db文件夾,修改config文件并運行creat_graph文件即可在neo4j上生成圖譜,這個數據集中還提供了紅樓夢的txt文件,我們在后面的RAG部分可以用。

導包

from langchain_community.graphs import Neo4jGraph
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain.schema import StrOutputParser

配置graph和llm

graph=Neo4jGraph(url="bolt://127.0.0.1:7687",username="neo4j",password="yourpassword",refresh_schema=False
)
llm=ChatOpenAI(model='your model',temperature=0,max_tokens=None,max_retries=2,api_key='your api_key',base_url='your url'
)

不使用GraphCypherQAChain,GraphCypherQAChain依賴 APOC,易出錯,且不透明。

自己控制 Cypher 生成流程,更安全、更可控。

schema不需要列出所有關系,但必須包含與當前任務相關的“核心模式”(Relevant Schema)。

SCHEMA="""
- (:Entity {Name: STRING})
- (:Entity)-[:FATHER|MOTHER|SPOUSE|CHILD|LOVES]->(:Entity)
"""cypher_prompt=PromptTemplate.from_template(
"""
你是一個Cypher專家,請根據以下schema,將自然語言問題轉換成Cypher查詢。
只返回Cypher語句,不要解釋。Schema:
{schema}問題:{question}
Cypher:
"""
).partial(schema=SCHEMA)graph_chain=cypher_prompt | llm | StrOutputParser()question = '邢夫人和邢岫煙是什么關系?'
cypher=graph_chain.invoke({'question':question})
print(cypher)

使用雙層路由,簡單規則 + LLM fallback,兼顧效率與準確

def double_router(question):kg_keywords=['誰','關系','共同','一起','屬于','路徑']rag_keywords=['介紹','原理','解釋','背景']kg_score=sum(1 for kw in kg_keywords if kw in question)rag_score=sum(1 for kw in rag_keywords if kw in question)if kg_score>rag_score:category='KG'print(category)return categoryelif rag_score>0:category='RAG'print(category)return categoryrouter_prompt=PromptTemplate.from_template("""你是一個問題分類器,請判斷一下問題更適合通過哪種方式回答:-RAG:基于文檔檢索的答案(如定義,描述,解釋)-KG:基于知識圖譜的關系查詢(如人物關系)只需返回RAG或KG問題:{question}類別:"""))router_chain=router_prompt | llm | StrOutputParser()category=router_chain.invoke({'question':question})print(category)return category
category=double_router(question)

對相同或相似問題使用緩存,提升響應速度。

先查圖譜找核心實體 → 用實體去文檔中找更多背景信息

@lru_cache(maxsize=100)
def cached_kg_query(question):cypher=graph_chain.invoke({'question':question})return graph.query(cypher)
def answer(question,category):if category=='KG':try:result=cached_kg_query(question)if result:relationship=result[0].get("type(r)") or result[0].get("relationship")enhanced_query=f"{question},涉及{relationship}的背景信息"context=with_message_history.invoke({'question':enhanced_query},config=config)answer="{}\n{}".format(relationship,context)category='KG+RAG'else:answer="圖譜中未找到"except Exception as e:answer = f"查詢出錯:{str(e)}"print('result:{},source:{}'.format(answer,category))else:response=with_message_history.invoke({'question':question},config=config)print('result:{},source:{}'.format(response,category))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96182.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pycharm 最新版上一次編輯位置

2025nipycharm方法一:用快捷鍵(最方便)跳回上一次編輯位置:Windows/Linux: Ctrl Alt ←macOS: ? Option ←跳到前一次位置:Windows/Linux: Ctrl Alt →macOS: ? Option →方法二:顯示工具欄按鈕在…

前端性能監控與優化:從 Lighthouse 到 APM

在當今競爭激烈的數字環境中,用戶對Web應用性能的要求日益提高。一個緩慢或響應遲鈍的應用不僅會流失用戶,更可能損害品牌形象和商業價值。因此,前端性能的監控與優化已成為前端開發不可或缺的關鍵環節。本文將深入探討從基礎的性能評估工具L…

TC_Motion多軸運動-電子齒輪

目錄 電子齒輪 【基本概念】 【應用示例】 【開發總結】 END 電子齒輪 【基本概念】 定義:通過軟件方法實現機械齒輪的速比調節功能(兩個軸成線性比例旋轉) 優點 免維護,告別機械損耗 易調節,任意修改齒輪比 精度高,無機械背隙 應用場景 多臺電機拖動同一負載,要求多臺…

CentOS 7 下載教程

訪問阿里云鏡像站 阿里巴巴開源鏡像站 選擇centos 點這個 選擇7版本 進入isos目錄 點這個 選擇這個版本 因為這個鏡像的日期更新 推薦下載 DVD 版:包含完整系統和常用軟件,無需額外聯網安裝組件Minimal 版:精簡版,僅包含基礎系…

MAC在home下新建文件夾報錯“mkdir: test: Operation not supported”

在Mac電腦中,home文件夾下不能直接mkdir,sudo 也還是不行,提示“mkdir: test: Operation not supported”。網上找的解決方案不好使,因為沒有關閉系統完整性保護關閉系統完整性保護查看SIP當前的狀態csrutil status如果是開啟狀態…

交叉導軌從測試儀到工作臺的精密運動控制

在精密儀器領域微米級的運動精度與納米級的穩定性往往是決定設備性能上限的核心指標。而支撐這一技術鴻溝跨越的,往往隱匿于機械結構的“毫厘之間”——交叉導軌。以下是其在不同精密儀器中的具體應用:光學測試儀:光學測試儀主要用于各種高精…

內網穿透的應用-Navidrome與cpolar本地搭建跨網絡訪問的云音樂服務器

文章目錄前言1. 安裝Docker2. 創建并啟動Navidrome容器3. 公網遠程訪問本地Navidrome3.1 內網穿透工具安裝3.2 創建遠程連接公網地址3.3 使用固定公網地址遠程訪問前言 音樂收藏存在平臺版權限制、音質壓縮和訪問不便等問題。Navidrome 開源音樂服務器與 cpolar 內網穿透服務的…

FastAPI 訪問不了API文檔或配置不生效的解決方法

FastAPI中文教程 本文背景 FastAPI框架自帶交互式api文檔,通過路由/docs或者/redoc 訪問,但是FastAPI 的文檔界面(如 /docs 和 /redoc)依賴于外部的 JavaScript 和 CSS 庫,如果項目部署環境網絡不佳或者無法訪問外網的時候&…

IAR 集成開發環境入門指南:字體設置與調試實戰

一、IAR 的基本使用教程1. IAR 顏色字體大小設置打開設置路徑:點擊頂部菜單欄 Tools → 選擇 Options,打開 IDE 配置窗口。進入字體顏色設置界面:在彈出的 “IDE Options” 窗口中,雙擊展開 Editor 選項,然后點擊 Colo…

10:00開始面試,10:06就出來了,問的問題有點變態。。。

從小廠出來,沒想到在另一家公司又寄了。到這家公司開始上班,加班是每天必不可少的,看在錢給的比較多的份上,就不太計較了。沒想到8月一紙通知,所有人不準加班,加班費不僅沒有了,薪資還要降40%,這…

Flink 狀態管理的核心能力

我們來看一個復雜的實際案例:阿里巴巴菜鳥的實時物流追蹤系統。 該系統處理來自多個電商平臺(天貓、淘寶、速賣通)的訂單包裹,通過一個復雜的處理流程: 合并與去重:通過聚合操作將不同來源的訂單合并并去重…

基于go語言的云原生TodoList Demo 項目,驗證云原生核心特性

以下是一個基于 Go 語言 的云原生 TodoList Demo 項目,涵蓋 容器化、Kubernetes 編排、CI/CD、可觀測性、彈性擴縮容 等核心云原生特性,代碼簡潔且附詳細操作指南,適合入門學習。項目概覽 目標:實現一個支持增刪改查(C…

手機能看、投屏 / 車機不能看與反向鏈接驗證類似嗎?

有一定關聯,但兩者的技術邏輯并非完全等同 ——“手機能看、投屏 / 車機不能看” 的核心原因更復雜,反向鏈接驗證是其中一種可能的限制手段,但不是唯一甚至不是最主要的手段。要理清這個問題,需要先拆解 “投屏 / 車機播放受限” …

25年9月通信基礎知識補充1:NTN-TDL信道建模matlab代碼(satellite-communications toolbox學習)

看文獻過程中不斷發現有太多不懂的基礎知識,故長期更新這類blog不斷補充在這過程中學到的知識。由于這些內容與我的研究方向并不一定強相關,故記錄不會很深入請見諒。 【通信基礎知識補充10】25年9月通信基礎知識補充1:NTN-TDL信道建模matlab…

洛谷P3370 【模板】字符串哈希 (哈希表)詳解

題目如下:(注:解此題我只需左手一根指頭,哈哈哈哈哈哈哈)注意,哈希表的好處是能大幅度減少尋找遍歷的時間可能有人不理解哈希值, 這里哈希的模的值一般得是比較大的質數,如標準的100…

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法(未做完)

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法 1 論文核心概念 本文提出了一種基于集成光子芯片的光學子空間神經網絡(Optical Subspace Neural Network, OSNN),用于胰腺癌的早期檢測與圖像分割。其核心思想是利用光子芯片的高并行性、低延遲和低能…

GraphRAG 工作原理逐步解析:從圖創建到搜索的實戰示例

本篇文章How GraphRAG Works Step-By-Step: From Graph Creation to Search with Real Examples | Towards AI詳細介紹了GraphRAG的工作原理,適合對檢索增強生成(RAG)和知識圖譜感興趣的讀者。文章的技術亮點在于通過圖結構提升信息檢索效率&…

LAMPSecurity: CTF8靶場滲透

LAMPSecurity: CTF8 來自 <https://www.vulnhub.com/entry/lampsecurity-ctf8,87/> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.128&#xff0c;靶場IP192.168…

綠算技術閃耀智博會 賦能鄉村振興與產業升級

9月5日至7日&#xff0c;由寧波市人民政府、浙江省經濟和信息化廳、中國信息通信研究院聯合主辦的第十五屆智慧城市與智能經濟博覽會在寧波國際會展中心圓滿落幕。綠算技術受邀參展&#xff0c;并發布與北京東方聯鳴科技發展有限公司聯合打造的《360數智牧業AI模型支撐底座》&a…

淺談“SVMSPro視頻切片”技術應用場景

技術定義視頻切片是一項將連續不斷的視頻流&#xff0c;按特定規則&#xff08;如時間點、事件觸發&#xff09;切割成一個個獨立、完整的MP4等標準視頻文件的技術。這些切片文件體積小、格式通用&#xff0c;易于管理、傳輸和播放。核心價值精準存檔&#xff1a;從海量錄像中精…