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 系统。
相关
- 项目
- 项目
- 项目
- 项目
- 项目