一个流线化、可提示的 Fast GraphRAG 框架,专为可解释、高精度、智能体驱动的检索工作流而设计。
[!NOTE]
以《绿野仙踪》为例,fast-graphrag的成本为 $0.08,而graphrag为 $0.48 — 节省了 6 倍成本,并且随着数据量和插入次数的增加,节省效果会更显著。
Fast GraphRAG 旨在无缝集成到您的检索管道中,为您提供高级 RAG 的能力,而无需构建和设计智能体工作流的开销。
从源码安装(推荐以获得最佳性能)
# 首先克隆此仓库
cd fast_graphrag
poetry install
从 PyPi 安装(推荐以获得稳定性)
pip install fast-graphrag
在环境中设置 OpenAI API 密钥:
export OPENAI_API_KEY="sk-..."
下载查尔斯·狄更斯的《圣诞颂歌》副本:
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 = "分析这个故事并识别其中的角色。重点关注他们如何互动、探索的地点以及他们之间的关系。"
EXAMPLE_QUERIES = [
"圣诞夜在《圣诞颂歌》中有什么重要意义?",
"维多利亚时代伦敦的背景如何有助于故事主题的表达?",
"描述导致斯克鲁奇转变的一系列事件。",
"狄更斯如何使用不同的精灵(过去、现在和未来)来引导斯克鲁奇?",
"为什么狄更斯选择将故事分成\"诗节\"而不是章节?"
]
ENTITY_TYPES = ["角色", "动物", "地点", "物体", "活动", "事件"]
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("斯克鲁奇是谁?").response)
下次从相同的工作目录初始化 fast-graphrag 时,它将自动保留所有知识。
请参考 examples 文件夹,其中包含一系列关于库常见使用场景的教程:
- custom_llm.py:一个简短的示例,展示如何配置 fast-graphrag 以使用不同的 OpenAI API 兼容语言模型和嵌入器;
- checkpointing.ipynb:关于如何使用检查点来避免不可逆数据损坏的教程;
- query_parameters.ipynb:关于如何使用不同查询参数的教程。特别是,它展示了如何在提供的答案中包含对所用信息的引用(使用 with_references=True 参数)。
无论贡献大小,我们都非常欢迎。贡献是开源社区如此精彩、能激励学习和创造的原因。我们非常感谢您所做的任何贡献。请查看我们的指南了解如何开始。
不确定从哪里开始?您可以加入我们的 Discord 并在那里向我们提问。
我们的使命是增加世界上成功的 GenAI 应用数量。为此,我们构建内存和数据工具,使 LLM 应用能够利用高度专业化的检索管道,而无需设置和维护智能体工作流的复杂性。
Fast GraphRAG 目前利用个性化 PageRank 算法来探索图并找到最相关的信息片段以回答您的查询。关于其工作原理的概述,您可以查看 HippoRAG 论文此处。
此仓库遵循 MIT 许可证。更多信息请参见 LICENSE.txt。
开始使用 Fast GraphRAG 最快、最可靠的方式是使用我们的托管服务。您每月的前 100 个请求是免费的,之后根据使用量付费。