FalkorDB/GraphRAG-SDK
Build fast and accurate GenAI apps with GraphRAG SDK at scale 🌟
GraphRAG‑SDK – 基於圖的檢索增強生成框架
是什麼 – 一個 Python SDK,可將文件集合(文字、PDF、Markdown、CSV 等)轉換為儲存在 FalkorDB 中的 知識圖譜,並透過檢索與遍歷該圖譜來回答自然語言問題。此套件的核心理念是 檢索步驟比 LLM 更重要;透過將答案建立在圖譜節點與邊上,可大幅減少幻覺。
為何重要 – 傳統 RAG 流水線依賴平面的向量相似度搜尋,常會遺漏多跳事實且無法追蹤來源。GraphRAG‑SDK 增加了:
- 關係遍歷 – 即使事實在文字上不相似,只要透過實體連結,也能被發現。
- 出處邊(
MENTIONED_IN) – 每個答案均可追溯到支持它的精確來源區塊(chunk)。 - 拒答支援 – SDK 可偵測圖譜中缺乏足夠證據的情況,並返回明確的「證據不足」回應,而非捏造答案。
- 基準領先準確度 – README 指出,在 GraphRAG‑Bench 上整體準確率達 71.48 %,優於標準向量 RAG 基線。
核心概念
| 概念 | 作用 |
|---|---|
| 圖譜模式 | 可選的 GraphSchema 允許宣告實體類型(如 Person、Organization)和關係類型(如 WORKS_AT)。模式指導萃取並確保類型化、可驗證的事實。 |
| 攝入 | rag.ingest(text, document_id) 使用 LLM 提取實體/關係,去重,建立嵌入,並將節點/邊寫入 FalkorDB。 |
| 最終化 | rag.finalize() 執行跨文件去重並補全遺漏嵌入;其時間複雜度為 O(圖大小),應在一批變更後呼叫一次。 |
| 檢索 + 生成 | rag.completion(question, return_context=True) 執行基於圖的檢索(向量、全文、可選文字轉 Cypher),然後將檢索到的上下文傳遞給 LLM 生成答案。 |
| 增量更新 | update()、delete_document() 和 apply_changes() 允許在不從頭重建的情況下,將圖譜與來源倉儲(如 CI 流水線)保持同步。 |
典型工作流程(5分鐘示範)
- 安裝 –
pip install graphrag-sdk[litellm](如需 PDF 支援,加入[pdf])。執行 FalkorDB 容器(docker run … falkordb/falkordb:latest)。 - 建立
GraphRAG實例 – 提供ConnectionConfig(主機 + 圖名用於租戶隔離)和 LLM/嵌入提供者(SDK 提供 LiteLLM 的輕量封裝,任何 OpenAI 相容模型皆可使用)。 - 攝入文件 – 對每個來源呼叫
ingest()。LLM 提取實體,嵌入器建立向量,SDK 寫入 Cypher upsert。 - 最終化 – 每批處理後呼叫一次
finalize()以去重和索引。 - 查詢 –
await rag.completion("Where does Alice work?")回傳Answer物件,包含answer.answer和(如請求)完整的檢索路徑。
安裝與快速開始程式碼片段
pip install graphrag-sdk[litellm]
# 啟動 FalkorDB(Docker)並設定你的 OpenAI 金鑰
export OPENAI_API_KEY=sk-…
import asyncio
from graphrag_sdk import GraphRAG, ConnectionConfig, LiteLLM, LiteLLMEmbedder
async def main():
async with GraphRAG(
connection=ConnectionConfig(host="localhost", graph_name="demo"),
llm=LiteLLM(model="openai/gpt-4o-mini"),
embedder=LiteLLMEmbedder(model="openai/text-embedding-3-large", dimensions=256),
) as rag:
await rag.ingest(text="Alice Johnson works at Acme Corp in London.", document_id="doc1")
await rag.finalize()
ans = await rag.completion("Where does Alice work?", return_context=True)
print(ans.answer)
print(ans.context) # 出處邊、來源區塊等
asyncio.run(main())
主要特性(README 中列出)
- 基準領先準確度(撰寫時在 GraphRAG‑Bench 上排名第一)。
- 透過圖譜基礎檢索與出處邊實現幻覺減少。
- 快速、多租戶 – 每個圖譜由名稱隔離;FalkorDB 提供亞毫秒級 Cypher 查詢。
- 模組化流程 – 可插入自訂攝入策略、LLM 提供者或嵌入後端。
- 增量更新 – 安全、冪等的
update(),具備崩潰復原語意;支援 CI 的批次處理。 - 可擴展模式 – 可宣告或演進本體;SDK 可從傳入文件中發現新類型。
- 可觀測性鈎子 – 2026 年 Q2 發布(即將推出),將新增生產級指標。
誰應該使用它
- 企業:需要可靠、可審計的 RAG 回答的領域(如法律、醫療、金融),其中幻覺不可接受。
- 開發者:建構聊天機器人、問答助手或內部知識庫,希望實現圖級推理(多跳事實、以實體為中心的查詢)的人。
- 研究人員:對比較基於圖的 RAG 與純向量 RAG 感興趣者;SDK 隨附基準腳本與可重現文件。
如何進一步學習
- 完整文件: https://docs.falkordb.com/graphrag
- 入門指南、架構概覽和可靠性/根植性文件(均連結自 README)。
- 範例畫廊(
graphrag_sdk/examples/…)涵蓋快速入門、PDF 攝入、自訂策略、本體演進和「帶拒答的根植答案」模式。
社群與貢獻
- 開源,採用 Apache 2.0 許可。
- 活躍的 Discord、GitHub Discussions 和問題追蹤器,用於支援與功能請求。
- 提供貢獻指南與行為準則。
總結 – GraphRAG‑SDK 是一個生產就緒、以 Python 為首的框架,結合 FalkorDB 的圖引擎與 LLM 驅動的實體萃取,提供比純向量搜尋流程更準確、可追蹤、可控制的 RAG 系統。
相關
- 專案
- 專案
- 專案
- 專案
- 專案