FastGraphRAG:用 PageRank 优化检索增强生成
新开源项目用经典算法改进 RAG 效果,社区热度 457 点,值得关注。
新开源项目用经典算法改进 RAG 效果,社区热度 457 点,值得关注。
简化且可提示的 Fast GraphRAG 框架,为可解释的、高精度的、Agent 驱动的检索工作流而设计。
以《圣诞颂歌》为例,fast-graphrag 的成本为 $0.08,而 graphrag 为 $0.48 — 节省 6 倍成本,随着数据规模和插入次数增加还会进一步优化。
可解释且可调试的知识:图提供了一个人类可导航的知识视图,可以被查询、可视化和更新。
快速、低成本且高效:设计用于大规模运行,无需大量资源或成本。
动态数据:自动生成和优化图以最适应你的领域和本体需求。
增量更新:支持随着数据演进进行实时更新。
智能探索:利用基于 PageRank 的图探索来增强准确性和可靠性。
异步且类型安全:完全异步,具有完整的类型支持,确保工作流健壮且可预测。
Fast GraphRAG 被设计用于无缝融入你的检索流水线,为你提供高级 RAG 的能力,而无需构建和设计 agentic 工作流的开销。
从源码安装(推荐以获得最佳性能)
# clone this repo first
cd fast_graphrag
poetry install
从 PyPi 安装(推荐用于稳定性)
pip install fast-graphrag
在环境中设置 OpenAI API 密钥:
export OPENAI_API_KEY="sk-..."
下载一份 Charles Dickens 的《圣诞颂歌》:
curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/refs/heads/main/mock_data.txt > ./book.txt
可选:设置对 LLM 并发请求的限制(即控制 LLM 同时处理的任务数,这在运行本地模型时很有帮助)
export CONCURRENT_TASK_LIMIT=8
使用下面的 Python 代码片段:
from fast_graphrag import GraphRAG
DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships."
EXAMPLE_QUERIES = [
"What is the significance of Christmas Eve in A Christmas Carol?",
"How does the setting of Victorian London contribute to the story's themes?",
"Describe the chain of events that leads to Scrooge's transformation.",
"How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?",
"Why does Dickens choose to divide the story into \"staves\" rather than chapters?"
]
ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"]
grag = GraphRAG(
working_dir="./book_example",
domain=DOMAIN,
example_queries="\n".join(EXAMPLE_QUERIES),
entity_types=ENTITY_TYPES
)
with open("./book.txt") as f:
grag.insert(f.read())
print(grag.query("Who is Scrooge?").response)
下次从同一工作目录初始化 fast-graphrag 时,它会自动保留所有知识。
请参阅示例文件夹,了解该库常见用例的教程列表:
custom_llm.py:关于如何配置 fast-graphrag 来运行与不同 OpenAI API 兼容的语言模型和 embedder 的简短示例;
checkpointing.ipynb:关于如何使用检查点来避免不可逆的数据损坏的教程;
query_parameters.ipynb:关于如何使用不同查询参数的教程。特别是,它展示了如何在提供的答案中包含所使用信息的引用(使用 with_references=True 参数)。
无论规模大小,我们都喜欢贡献。贡献正是开源社区成为如此神奇的学习、灵感和创新之地的原因。我们非常感谢你所做的任何贡献。查看我们的指南了解如何开始。
不确定从哪里开始?你可以加入我们的 Discord,在那里提出任何问题。
我们的使命是增加世界上成功的 GenAI 应用的数量。为此,我们构建记忆和数据工具,使 LLM 应用能够利用高度专业化的检索流水线,而无需设置和维护 agentic 工作流的复杂性。
Fast GraphRAG 目前利用个性化 pagerank 算法来探索图并找到最相关的信息来回答你的查询。如果想了解为什么这有效,你可以查看 HippoRAG 论文。
该仓库采用 MIT 许可证。详见 LICENSE.txt。
开始使用 Fast GraphRAG 最快和最可靠的方式是使用我们的托管服务。你每月的前 100 个请求是免费的,之后按使用情况付费。
如需了解更多关于我们的托管服务、预约演示或查看我们的文档,请联系。