GraphRAG 为什么能增强生成式 AI ?一篇文章告诉你

检索增强生成(RAG)支持大型语言模型(LLMs)使用外部知识源回答问题。这个功能相信只要你用过一些 AI 工具可能都用到过。尽管如此,它在回答涉及整个文本语料库的全局问题时,例如识别主要主题、总结全文内容,仍存在一些挑战。这是因为这类问题往往要求模型具备对整体语料库内容的深度理解和全局视角,而不仅仅是依赖于局部检索到的信息。因此,在处理这类问题时,RAG 框架下的 LLMs 可能还需要额外的帮助或优化策略,以更好地整合和利用全局信息。

微软在 4 月提出的一项研究提出了GraphRAG,它结合了RAG和查询聚焦摘要(QFS)方法,用于可扩展的私有文本语料库上的问题回答。GraphRAG使用LLM创建基于图的文本索引,派生出一个知识图谱,并生成相关实体的社区摘要(Community Summaries)。当被问及问题时,这些摘要生成部分响应,这些响应被组合成最终答案。与普通的 RAG 方法相比,GraphRAG 明显提高了对大型数据集上全局问题的全面性和多样性。

检索增强生成(RAG)的局限性

RAG 的局限性:当答案可以在特定、可集散所的文本中找到时,RAG 回答问题的效果非常好。然而,如果答案需要从整个数据集中总结,然后回答普通问题时,它会遇到很大挑战。

QFS 相关性:查询聚焦摘要(QFS)更适合这些普通问题,因为它基于查询生成自然语言摘要,而不仅仅是提取文本摘录。

LLMs 方面的先进性:像 GPT、Llama 和 Gemini 这样的前沿大语言模型(LLMs)优化了所有总结类型的任务,使得不同种类的总结(抽象与提取、单文档与多文档)之间的区别变得不那么明显。

处理大型语料库的挑战:尽管有这些进步,总结整个语料库仍然具有挑战性,因为文本量通常超过LLMs的上下文窗口,导致潜在的信息丢失。

潜在的解决方案:一种新形式的预索引(pre-indexing )可以增强 RAG 方法,特别是对于全局摘要任务,通过更好地组织和总结大型数据集。

GraphRAG 是一种新方法,它使用由 LLM 创建的知识图谱进行全局摘要。与之前专注于结构化图检索的方法不同,这种方法利用图的模块性将其划分为密切相关的组或社区。

这是它的工作原理:

  1. 社区摘要:LLM为这些社区生成摘要,提供对图和它涵盖的文档的完整概述。

  2. 查询回答:使用映射-归约方法来回答查询。首先,每个社区摘要被用来独立创建部分答案。然后,这些部分答案被组合成一个最终的、全面的回答。

为了测试这种方法,使用了包括播客转录和新闻文章在内的多样化真实世界数据集,以了解它如何处理关于广泛主题和问题的问题。

此外,GraphRAG 方法与传统 RAG 方法比较后,你会发现 GraphRAG 方法在成本更低的情况下提供了更全面和多样化的答案,特别是当使用来自社区层次结构中层级较低的摘要时。

简单介绍一下 GraphRAG

GraphRAG 是基于知识图谱的概念,它结合了大型语言模型(LLM)以提供智能、成本效益高且更准确的搜索结果。GraphRAG 旨在通过利用图结构更好地组织和总结信息,特别是处理广泛和复杂数据集时,克服传统 RAG 方法的限制。

GraphRAG 将图技术与检索增强生成相结合,增强了大型语言模型(LLM)处理和理解复杂信息的方式。以下是详细说明:

  1. 图数据库:它将信息组织为相互连接的节点(实体)和边(关系)的网络。这种结构非常适合以图形格式表示复杂的上下文和关系。

  2. 知识图谱:通过构建知识图谱,你提供了一个丰富的、结构化的上下文,这有助于LLM更好地理解不同实体之间的关系和相互作用。这提高了 LLM 表达和推理信息的能力。

  3. GraphRAG 概念

    1. 知识图谱作为词汇:在 GraphRAG 中,知识图谱被视为一个庞大的词汇库,其中实体和关系类似于单词。

    2. 建模实体和关系:它在检索过程中联合建模实体和关系。这意味着它可以更准确地把握查询背后的意图,并提供更精确的结果。

GraphRAG利用知识图谱的结构化、相互连接的特性来增强LLM的检索和生成能力,从而更好地理解和响应复杂查询。

上图中,GraphRAG pipeline 使用由 LLM 派生的图索引检测和总结图中的实体、关系以及声明(或主张),该流水线将图划分为多个社区(或称为子图),并通过对相关社区摘要进行最终的查询聚焦摘要来生成全局答案。(图片源于arxiv

接下来,我们找图中的 pipeline,一步步讲解其中的原理。

源文档 → 文本块

在处理源文档的文本时,一个很关键的问题就是如何将文本分割成块。每个块随后与LLM提示一起用于构建图索引。更长的块意味着更少的LLM调用,但可能会减少由于LLM的长上下文窗口限制而召回(recall)的信息。因此,找到召回和精度之间的平衡对于获得最佳结果很重要。

文本块 → 元素实例

这一步涉及使用多部分 LLM 提示从文本块中提取图节点和边。提示首先识别实体,包括它们的名称、类型和描述,然后识别它们之间的关系,详细说明源实体和目标实体及其连接。这些信息以分隔的元组列表的形式输出。为了创建特定领域的提示,我们使用与领域相关的少量的示例,如科学或法律,提高提取精度。此外,一个次要提示提取与实体相关的协变量(Covariates),包括主题、对象和日期等细节。为了确保全面的提取,我们使用多轮“提炼(Gleanings)”,其中 LLM 评估是否有遗漏的实体,然后在后续轮次中尝试检测这些遗漏的实体。这种方法有助于在更大的块大小下保持高质量,避免质量损失或不必要的噪声。

元素实例 → 元素摘要

在这一步中,LLM 用于从文本中创建实体、关系和声明( claim 或主张)的摘要,这是一种抽象式摘要(abstractive summarization)。LLM生成有意义的概念描述。接下来,这些单独的描述进一步被总结为每个图元素(实体、关系、声明)的连贯文本块。可能会有对同一实体的不一致引用,导致重复。不过,这是可以管理的,因为 LLM 可以理解同一实体的不同名称,并且我们的方法将相关实体组合在一起。这种方法确保了丰富、描述性的摘要,支持全局、查询聚焦的摘要,区别于使用简洁、固定格式三元组的传统知识图谱。

元素摘要 → 图社区

在这一步中,前一阶段的索引被转换为一个无向、加权图,其中节点代表实体,“边”(edges)代表它们之间的关系,权重显示这些关系的强度。为了理解这个图,我们使用 Leiden 算法,该算法有效地找到节点紧密连接的社区或组。这个算法有助于将图分解为层次结构,每层显示不同的社区结构。这种层次划分有效地通过关注相关节点的较小、可管理的组来总结整个图。

图社区 → 社区摘要

这一步创建了Leiden层次结构中每个社区的详细摘要。这些摘要有助于理解数据集的整体结构和含义,即使没有具体问题。例如,用户可以通过阅读更广泛级别的摘要来找到一般主题,然后深入到较低级别的更详细摘要中以获取特定主题。在这种情况下,这些社区摘要对于回答广泛的、全局查询非常有用,因为它们提供了来自图的组织良好且有意义的信息。

社区摘要 → 社区答案 → 全局答案

给定用户查询,前一步生成的社区摘要可以用于多阶段过程中创建最终答案。

以下是社区摘要如何用于回答用户查询的方法:

  1. 准备摘要:首先,将社区摘要打乱并分成可管理的块。这有助于分散重要信息,使其不会全部集中在一个地方。

  2. 生成答案:对于每个块,使用LLM创建部分答案,该模型还评估每个答案对查询的帮助程度。得分低的答案将被丢弃。

  3. 组合答案:将答案按其得分排序;将它们添加到一个单一的上下文窗口中,然后使用这个组合的上下文生成用户的最终答案。

这种方法有助于确保对查询进行彻底且相关的响应。

图:评估GraphRAG与朴素RAG的示例(图片来源

什么是知识图谱

知识图谱通常由节点、边和标签组成。边代表节点之间的关系。

  • 节点:这些代表实体,可以是任何感兴趣的事物,如人、地点、组织、概念或对象。

  • :这些是节点之间的连接,代表实体之间的关系或交互。例如,一条边可能显示一个人“为”一家公司“工作”,或者一个产品“属于”一个类别。

  • 标签:标签代表关系类型。

知识图谱可以被称为以相互连接的方式表示信息的结构化数据库。整体结构是一个网络,实体相互连接,允许复杂关系和数据被表达,以突出不同信息片段之间的关系。

Demo演示

在这里,我们将探索如何使用交互式Gradio应用程序,结合Ollama运行本地Graph RAG。微软的Graph RAG版本已经适应以支持本地模型与Ollama集成。此外,请注意Ollama同时处理LLM和嵌入。这个项目还包括一个新的交互式用户界面。此外,这个项目非常新,并且正在快速迭代。

在这里,由于我们需要一个性能较好的 GPU,所以我们在 DigitalOcean 租用了一台 GPU 云主机。这台主机是 DigitalOcean 旗下 Paperspace 平台的。该平台提供了简单易用的操作界面,以及相对便宜的 GPU 实例,例如 H100 每小时 5.95 美元,而且可以按秒计费使用。

在我们开始安装步骤之前,让我们快速了解通过 Paperspace 实现的这个项目的一些特点。

  • 本地模型支持:支持本地模型如llama3和mistral,以及Ollama用于LLM和嵌入。

  • 交互式UI:用户友好的界面用于管理数据、运行查询和可视化结果。此外,它甚至提供了图形可视化选项。

  • 成本较低:可以减少对昂贵的OpenAI模型的依赖。

  • 文件管理:直接从用户界面上传、查看、编辑和删除输入文件。然而,在尝试时,我在上传文本文件时遇到了问题。

  • 设置管理:通过Gradio UI轻松更新Graph RAG设置。

  • 输出探索:浏览和查看索引输出和工件。

在开始安装之前,我们强烈建议你创建一个单独的环境。否则,可能会遇到依赖性问题。

你可以登录到Paperspace控制台并打开一个新的终端。

1、创建并激活环境。

python -m venv tutorial-env
 
source tutorial-env/bin/activate

2、安装Ollama并拉取mistral模型以及嵌入模型;在我们的情况下,我们将拉取'mxbai-embed-large'作为我们的嵌入模型。

ollama pull mxbai-embed-large

我们有一个详细的博客文章介绍如何安装Ollama和拉取模型。

一切安装完成,我们将进入下一步。

3、Git克隆仓库并安装requirements.txt

git clone https://github.com/severian42/GraphRAG-Local-UI.git && cd GraphRAG-Local-UI
 
pip install -r requirements.txt

4、运行以下代码以启动实时Gradio应用程序。

python app.py


完成这一步,GraphRAG 的用户界面就上线了。

在数据管理中,你可以选择此选项或导航到文件操作,你可以上传你的文本文件或选择一个现有的。

在数据管理中,你可以通过“数据管理”选项卡中的“文件上传”部分将.txt文件上传到输入目录。你可以在“文件管理”部分查看、编辑和删除这些文件,并使用“刷新文件列表”按钮刷新可用文件列表。要配置索引,转到“索引”选项卡,设置根目录(默认为“./ragtest”),并可选上传配置文件。

在调整参数如详细程度、缓存和输出格式之前,点击“运行索引”以启动进程,提供实时进度监控。如果需要,你可以使用“停止索引”来停止进程。在“KG Chat/Outputs”部分,你可以通过选择输出文件夹、查看文件内容,并从Graph ML文件生成知识图的可视化来探索索引数据。使用“可视化设置”手风琴自定义这些可视化。

对于LLM设置,配置API基础URL和LLM和嵌入的密钥,选择服务类型,选择模型,并调整参数如系统消息、上下文窗口、温度和最大令牌数。通过点击“更新LLM设置”保存这些更改。当查询时,选择查询类型(全局、本地或直接聊天),选择预设选项或自定义查询参数,输入你的查询,并在聊天界面中查看结果。根据需要在“YAML设置”选项卡中调整其他Graph RAG设置。

对于Ollama:使用像llama2、mistral、phi-2等模型。在这里找到Ollama模型的完整列表。

提示:如果你无法运行gradio app.py,请尝试运行 pip install --upgrade gradio,然后退出并开始一个新的终端。

如何轻松在Paperspace上租用GPU

Paperspace 在提供 GPU 资源方面非常高效,为个人和企业需求提供可扩展的解决方案。该平台按需提供强大的GPU,可以轻松租用并通过平台进行管理。Paperspace 支持各种 GPU 类型和配置,从适合轻量级任务的入门级选项到用于密集计算的高端 GPU,如 H100。这种灵活性允许用户根据其特定的工作负载需求选择适当的资源。

此外,Paperspace 的基础设施确保高可用性和性能,拥有全球数据中心。自动扩展和按使用量付费的定价模式进一步提高了效率,使用户能够通过仅支付他们实际使用的资源来优化成本。

为了使用 Paperspace GPU,首先在 Paperspace 的网站上创建一个账户或登录到你现有的 Paperspace 账户。

登录到工作区后,点击“创建项目”,这将打开项目页面。接下来,点击“创建”选项卡以创建一个项目。

现在,我们可以在这里使用你选择的机器启动笔记本。选择一台机器。

浏览可用的 GPU 套餐计划,并选择最适合你需求的计划。

Paperspace 根据性能和定价提供各种选项。

确保检查并调整“自动关闭超时机器”的时间。完成后点击开始notebook。

Paperspace 提供按使用量付费定价模式,计费更加灵活,可以确保你只支付实际使用的 GPU 资源。 如需了解更多,可查看官方网站,或联系 DigitalOcean 中国区独家战略合作伙伴卓普云


GraphRAG 是一个不错的项目,它结合了知识图谱创建、检索增强生成(RAG)和查询聚焦摘要(QFS),以增强对大型文本语料库的理解。研究结果表明,它在答案质量上明显优于普通的 RAG 方法,不仅能能作为像MapReduce的替代方法,而且所需的token成本更低。对于频繁进行全局查询的数据集,使用图索引中的顶级社区摘要提供了一种优越且成本效益高的解决方案。

这项关于 GraphRAG 的研究专注于大约 1 百万 token 的特定问题。需要进一步的研究来评估不同问题类型、数据格式和数据集大小的性能变化,并与最终用户验证我们的指标。

尽管 GraphRAG 始终优于其他方法,但更简单的无图摘要方法也具有竞争力。关于使用图索引的决策应考虑计算成本、查询频率和图的社区摘要的附加价值等因素。

未来,可以通过整合更多的本地 RAG 方法、基于嵌入的查询匹配和将这些与社区摘要结合的混合方法来完善GraphRAG。更重要的是,跨社区层次结构的深入探索将揭示不同社区间的内在联系与差异,为信息检索提供更加全面和深入的见解,从而提升整体的信息检索质量和用户体验。

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值