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 系统。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目