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 允許宣告實體類型(如 PersonOrganization)和關係類型(如 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分鐘示範)

  1. 安裝pip install graphrag-sdk[litellm](如需 PDF 支援,加入 [pdf])。執行 FalkorDB 容器(docker run … falkordb/falkordb:latest)。
  2. 建立 GraphRAG 實例 – 提供 ConnectionConfig(主機 + 圖名用於租戶隔離)和 LLM/嵌入提供者(SDK 提供 LiteLLM 的輕量封裝,任何 OpenAI 相容模型皆可使用)。
  3. 攝入文件 – 對每個來源呼叫 ingest()。LLM 提取實體,嵌入器建立向量,SDK 寫入 Cypher upsert。
  4. 最終化 – 每批處理後呼叫一次 finalize() 以去重和索引。
  5. 查詢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 系統。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案