重點摘要:在 Neo4j 知識圖譜上建構 Agentic RAG¶
TL;DR¶
用 LLM 工具路由結合 Text2Cypher,讓 RAG 在結構化、多跳查詢上不再幻覺。
核心問題¶
純向量相似度搜尋擅長模糊、概念性問題,但遇到精確、結構化或多跳(multi-hop)查詢就失效,只會給出「聽起來合理但不保證正確」的答案。本文示範如何用 Neo4j 知識圖譜 + Agentic 流程,把聚合、關係推理類問題交給 Cypher 查詢來保證正確性。
關鍵發現 / 數據¶
- 本文為教學型文章,無 benchmark 或量化對比數據(無百分比、無 A/B 結果)。
- 列舉向量 RAG 失效的四類問題:聚合(哪些合約有效)、多跳(演員還演過哪些片)、兩跳供應商關係、時間聚合(下季到期的協議數)。
- 範例以 Neo4j 內建 Movie 圖譜(Person、Movie 兩類節點,ACTED_IN/DIRECTED/PRODUCED 等關係)實作。
- 最終 demo 成功回答「Matrix 主演及其他作品」這類多跳問題,答案完全由圖譜查詢結果支撐。
- 技術棧:Neo4j 2025.10 + APOC + LangChain + Vertex AI Gemini 2.0 Flash。
方法亮點¶
- Schema 萃取器:用
apoc.meta.data()抽出節點/關係/屬性,格式化成 LLM 友善文字(如(:Person)-[:ACTED_IN]->(:Movie))注入 prompt,避免 LLM 幻覺出不存在的屬性。 - LLM 工具路由:定義專用工具(依片名/演員查詢)與通用 fallback(text2cypher),用 function-calling schema 讓模型自行選路。
- Critic 自我批判迴圈:critic agent 判斷答案是否完整,若缺資訊則自動生成原子化子問題,重新進入路由迴圈。
- 問題正規化:query updater 把模糊問題改寫成單一、原子、明確的形式再執行。
對我的研究有用嗎?¶
對 GraphRAG 研究者而言,「結構化/聚合/多跳問題交給確定性圖查詢、模糊問題交給向量」的混合路由設計是清楚可借鑒的範式。Schema-grounding 注入 prompt 來壓低 Text2Cypher 幻覺,以及 critic→子問題→re-route 的 agentic 補全迴圈,都是可直接套用到自己 pipeline 的工程模式。不過它缺乏對照實驗,無法驗證這些設計各自貢獻多少。
評語¶
工程教學紮實、架構清楚值得快讀,但屬「示範可行」而非「實證有效」——無 benchmark、單一玩具圖譜、程式碼有明顯筆誤(imporpyt tiktoken),結論的「保證正確」偏宣稱,不宜當研究證據引用。