我一直在Reddit上看到关于GraphRAG的帖子,但直到大约一个月前,我才决定试一下。试用了一段时间后,我觉得它相当令人印象深刻,特别是如果你使用OpenAI API的话,成本也很高。在文档中提供的样本书上的测试大约花费了我7美元,虽然它的性能和组织能力都很不错,但价格并不实惠。
如果你刚接触RAG系统,可以看看一些入门资料。
Anthropic的新型RAG方法:大模型的兴起 RAG从零开始我是一名做机器学习的工程师,经常用Claude或ChatGPT帮我写代码。不过,在…pub.towardsai.net总的来说,这是一份关于传统账簿系统的工作原理的概览。
作者供图
如果你已经熟悉RAG,你可能跟我一样遇到了不少烦恼。
- 文本块之间的上下文丢失了
- 随着文档数量的增加,性能会变差
- 集成外部知识就像盲人解魔方一样困难
来自作者的想象,
GraphRAG 是传统 RAG 的升级版,主要分为两个阶段:
索引这一步骤:- 将源文档拆分成更小的子文档(类似于传统RAG)开始,
- 执行两个并行提取,
- 实体提取:识别实体,如人名、地名、公司名等
- 关系抽取:找出实体在不同部分或文档之间的关联
- 创建一个知识图,其中节点代表实体,边代表它们之间的关系
- 通过识别紧密相关的实体来构建社群
- 生成跨越不同社群层级的层级摘要(三个层级)
- 通过reduce-map方法逐步整合各部分,最终形成全面概览
- 接收用户的查询请求
- 根据用户需求选择合适的社区层级
- 在社区层级进行搜索(而不是像传统RAG那样在块级别进行)
- 通过查看社区摘要生成部分回答
- 整合来自多个相关社区的部分回答,形成最终的全面回答
图谱RAG的关键创新点在于它将信息结构化为基于图的形式,并利用社区检测来生成更具上下文意识的回复。不过,传统的RAG系统仍然有其用武之地,尤其是在考虑到运行图谱RAG的计算成本时。
开始设置 GraphRAG⚠️ 快速提醒:使用的是GPT-4模型,这可不便宜。我测试运行的成本大约是7美元。
如果你更愿意在本地的LLM上使用ollama测试,请看下面的视频。
我们现在就一步步地设置:
环境配置第一步是创建一个虚拟的开发环境。
运行以下命令来创建和激活名为GraphRAG的conda环境:
conda create -n GraphRAG # (运行此命令来创建名为GraphRAG的新conda环境)
conda activate GraphRAG # (激活名为GraphRAG的conda环境)
安装 GraphRAG 包(或软件包):
添加图谱的pip包:pip install graphrag
GraphRAG 在最佳运行时需要特定的目录结构:
-创建一个工作目录
-在该目录下创建一个 ragtest/input 文件夹结构
-将您的源文件放在输入文件夹中
我们将使用提供的书籍,并具体来说,使用下面的命令将其下载到输入文件夹里:
% 使用curl从https://www.gutenberg.org/cache/epub/24022/pg24022.txt下载文件并保存到./ragtest/input/book.txt。
设置
初始化您的工作区,可以使用:
请在此处输入初始化命令
例如:
# 样例命令
# 初始化索引并设置根目录为 target
python -m graphrag.index --init --root ./target
这会创建一些必要的配置文件,比如 settings.yml,你需要在这里做以下几件事:
- 输入你的 OpenAI API 密钥
- 调整模型设置(默认使用 GPT-4 和 OpenAI 的嵌入)
- 如有需要,调整分块大小(默认为 300 个 token)和重叠量(默认为 100 个 token)
运行索引程序。
运行以下命令初始化索引目录:
python -m graphrag.index --init --root ./target
查询您的图数据:
GraphRAG 提供两种主要查询方式:
全球查询
python -m graphrag.query --root ./target --method global 「这个故事中的最重要主题是什么」
非常适合应对关于主题和整体内容理解的广泛问题类型。
本地搜索
python -m graphrag.query --root ./target --method local “这个故事中的主要主题是什么”
非常适合用来询问文档中具体实体和关系的问题。
成本考量:真的值得吗?咱们来说说数字吧。在我的测试中,使用样本书时,GraphRAG的表现如下所示:
- 大约 570 次 GPT-4 API 调用请求
- 大约 25 次嵌入调用
- 处理了超过 100 万个 token
每本书大约损失7美元
资源https://www.microsoft.com/zh-cn/research/blog/graphrag/
GitHub - microsoft/graphrag: 一个模块化的基于图的RAG系统 - microsoft/graphrag共同學習,寫下你的評論
評論加載中...
作者其他優質文章