图RAG:微软为增强文件理解提供的开源解决方案

source

我一直在Reddit上看到有关GraphRAG的帖子,但直到大约一个月前我才决定尝试一下。在花了一些时间进行实验后,我可以说它很棒,但如果你使用OpenAI API的话,成本也相当高。在他们文档中提供的示例书籍上运行测试大约花费了我约7美元,所以虽然它提供的性能和组织是很可靠的,但并不算是预算友好的。

如果你是第一次接触 RAG 系统,我建议你先查看一些简介文章。

无论如何,这是传统抹布系统如何运作的概述

Image from the author

对于那些已经熟悉RAG的人来说,你可能遇到了和我一样的困扰:

  • 上下文在文本块之间丢失
  • 随着您的文档收藏增长,性能下降。
  • 将外部知识融合进来感觉就像戴着眼罩解魔方。

GraphRAG 是如何运作的

Imag from the author

GraphRAG是传统RAG的增强版本,主要分为两个阶段进行操作:

索引阶段:

  • 从源文件开始,将其分割成更小的子文件(类似于传统的RAG)。
  • 执行两个并行提取
  • 实体提取:识别实体,如人物、地点、公司
  • 关系提取:在不同块之间找到实体之间的连接。
  • 创建一个知识图谱,其中节点表示实体,边表示它们的关系。
  • 通过识别紧密相关的实体来建立社区
  • 生成不同社区层次(三个层次)之间的层次摘要。
  • 使用减少-映射方法逐步结合块以创建摘要,直到获得全面的概述。

查询阶段:

  • 接受用户查询
  • 根据所需的细节选择适当的社区级别
  • 在社区级别执行检索(而不是像传统的RAG中的块级别)
  • 检查社区摘要以生成部分回应
  • 将来自多个相关社区的部分响应结合成最终的综合答案。

GraphRAG的关键创新在于将信息结构化为基于图形的格式,并利用社区检测来创建更加具有上下文意识的响应。然而,传统的RAG系统仍然有其存在的理由,特别是考虑到运行GraphRAG的计算成本。

建立GraphRAG

⚠️ 快速提醒:这个实验使用GPT-4的API运行,费用不菲。我的测试运行使用GPT-4模型,大约花费了7美元。

如果您想在本地LLMs上测试它,请在ollama上查看此视频:

让我们现在走一遍设置流程:

环境设置

首先,创建一个虚拟环境:

conda create -n GraphRAG
conda activate GraphRAG

安装GraphRAG包:

pip install graphrag

目录结构

GraphRAG需要一个特定的目录结构才能实现最佳运行效果: - 创建一个工作目录 - 在其中,创建一个ragtest/input文件夹结构 - 将您的源文件放入文件夹input中

在本篇文章中,我们将使用提供的书籍,在输入文件夹中使用以下命令下载它:

% curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt

配置

使用以下命令初始化您的工作空间:

python -m graphrag.index --init --root ./target

这将创建必要的配置文件,包括 settings.yml,在这里您需要:- 设置您的OpenAI API密钥- 配置模型设置(默认包括用于处理的GPT-4和OpenAI嵌入)- 根据需要调整块大小(默认为300个令牌)和重叠(默认为100个令牌)

构建知识图谱

运行索引过程:

python -m graphrag.index --init --root ./target

查询您的图表

GraphRAG提供两种主要的查询方法:

全球查询

python -m graphrag.query --root ./target --method global "what are the top themes in this story"

适用于关于主题和整体内容理解的广泛问题。

本地查询

python -m graphrag.query --root ./target --method local "what are the top themes in this story"

适用于有关文档中实体或关系的具体问题。

成本因素:是否值得?

让我们谈谈数字。在我对样本书的测试中,GraphRAG 制作:

  • ~570次GPT-4 API调用。
  • 大约有25个嵌入请求
  • 处理了超过100万个标记

总损坏:大约每本书7美元。

资源

https://www.microsoft.com/zh-cn/research/blog/graphrag-new-tool-for-complex-data-discovery-now-on-github/

2024-11-03 04:11:54 AI中文站翻译自原文