GraphRAG 简明教程

我在 Reddit 上不断看到关于 GraphRAG 的帖子,但直到大约一个月前我才最终决定尝试一下。在花了一些时间尝试之后,我可以说它令人印象深刻,但如果你使用 OpenAI API,它的成本也相当高。在他们在文档中提供的示例书上运行测试花费了我大约 7 美元,因此虽然它提供的性能和组织能力很强,但它并不完全经济实惠。

如果你是 RAG 系统的新手,我建议你查看一些介绍性文章:12

无论如何,这是对传统 rag 系统如何工作的概述:

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

  • 上下文在文本块之间丢失
  • 随着文档集合的增长,性能下降
  • 整合外部知识就像蒙着眼睛试图解决魔方

1、GraphRAG 的工作原理

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

索引阶段:

  • 从被分块为较小子文档的源文档开始(类似于传统 RAG)
  • 执行两个并行提取:实体提取-识别人、地点、公司等实体;关系提取-在不同块之间查找实体之间的联系
  • 创建知识图谱,其中节点表示实体,边表示它们的关系
  • 通过识别密切相关的实体来建立社区
  • 在不同社区级别(三个)生成分层摘要级别)
  • 使用 Reduce-Map 方法通过逐步组合块来创建摘要,直到获得整体概述

查询阶段:

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

GraphRAG 的关键创新在于它将信息结构化为基于图形的格式,并使用社区检测来创建更具上下文感知的响应。但是,传统的 RAG 系统仍然有其一席之地,特别是考虑到运行 GraphRAG 的计算成本时。

2、设置 GraphRAG

⚠️ 快速提示:此实验在 GPT-4 的 API 上运行,这并不便宜。我使用 GPT-4 模型的测试运行成本约为 7 美元。

如果你希望使用 ollama 在本地 LLM 上进行测试,请查看此视频

现在让我们了解设置过程:

2.1 环境设置

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

conda create -n GraphRAG
conda activate GraphRAG

安装 GraphRAG 包:

pip install graphrag

2.2 目录结构

GraphRAG 需要特定的目录结构才能实现最佳操作:

  • 创建工作目录
  • 在其中,创建一个 ragtest/input 文件夹结构
  • 将源文档放在文件夹 input 中的输入文件夹中

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

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

2.3 配置

使用以下命令初始化你的工作区:

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

这将创建必要的配置文件,包括 settings.yml 中你需要:

  • 设置你的 OpenAI API 密钥
  • 配置模型设置(默认包括用于处理的 GPT-4 和 OpenAI 嵌入)
  • 根据需要调整块大小(默认值:300 个标记)和重叠(默认值:100 个标记)

2.4 构建知识图谱

运行索引过程:

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

2.5 查询你的图

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"

非常适合回答有关文档内实体或关系的特定问题。

3、运行成本

让我们谈谈数字。在我对样本书的测试中,GraphRAG 进行了:

  • ~570 次 GPT-4 API 调用
  • 约 25 个嵌入请求
  • 处理了超过 100 万个令牌
  • 总成本:每本书约 7 美元。

原文链接:GraphRAG: Microsoft’s Open-Source Solution for Enhanced Document Understanding

汇智网翻译整理,转载请标明出处