AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


深入解析 Graph RAG:提升语言模型问答能力的创新策略
发布日期:2024-07-09 08:10:37 浏览次数: 3286


引言

之前的文章已经深入探讨了 RAG(检索增强生成)。今天,我们要介绍一篇名为 Graph RAG 的新论文。大语言模型(LLM)问世后不久,RAG 就成为了生成式 AI 领域的热门话题。但这些系统并非没有挑战。虽然它提升了 LLM 的功能,同时也带来了一系列新问题,每个问题都需要独特的解决方案。去年以来,已经发展出多种策略,让 RAG 系统变得更稳定、更灵活。今天,我们同样努力地将介绍 Graph RAG。

RAG 在处理针对整个文本集的全局性问题时表现不佳,比如询问“数据集的主要主题是什么?”,因为这本质上是一个查询聚焦的摘要任务,而不是一个直接的检索任务。Graph RAG 正是为了解决这类问题而设计的。那么,让我们开始吧。

涵盖的主题:

  • 介绍 RAG

  • 为什么使用图?

  • Graph RAG 的应用

  • RAG 是什么?

  • 将 RAG 应用于私有数据集

  • 总结

介绍 RAG:

简而言之,RAG 就是为我们的大语言模型(LLM)提供额外上下文的技术,以生成更准确、更具针对性的回答。虽然 LLM 在公开可用的数据上训练得非常聪明,但它们缺乏回答特定问题所需的上下文。通过 RAG,我们能为它们提供解答我们问题的必要上下文。

RAG 是一种向我们的 LLM 插入新知识或能力的方式,但这种知识插入并不是永久的。另一种向 LLM 添加新知识或能力的方法是通过对特定数据进行细致调整(Fine Tuning)。

通过细致调整添加新知识相当复杂、困难、昂贵,并且是永久的。甚至,细致调整添加的新能力可能会影响它之前拥有的知识。在细致调整过程中,我们无法控制哪些权重会被改变,因此哪些能力会增强或减弱。

现在,我们选择细致调整、RAG 还是两者的结合,完全取决于我们面对的任务。没有一种方法能适用于所有情况。

  • 将文档分割成均匀的块。

  • 每个块是一段原始文本。

  • 为每个块生成嵌入(例如,使用 OpenAI 嵌入、sentence_transformer),通过编码器并将其存储在数据库中。

  • 寻找最相似的 Top-K 编码块,获取这些块的原始文本,并将其作为上下文与提示一起提供给生成器。

为什么使用图?

图,由节点(顶点)和边(连接)组成,自18世纪以来就在数据表示中扮演着核心角色。它们在现代 AI 中尤为重要,理由有几个:

知识图谱用于存储关系:

知识图谱表示现实世界实体及其相互关系。在现实世界中,数据的自然排列往往就是图形结构的。比如,我们在社交媒体上形成的联系就遵循图形结构。

图有两个基本组成部分,节点代表实体(人、地点、事件),边代表关系,通常带有描述这些关系性质的标签。例如,用节点代表 Susannah 和 Salesforce,并通过一个标有“工作于”的边连接它们来表示“Susannah 在 Salesforce 工作”。

知识图谱帮助机器理解和模拟语义,提高 AI 响应的质量,并增强预测模型,如推荐引擎。

数据图用于在 AI 规模下存储和检索:

数据图存储复杂关系,并能高效检索数据。这里,节点代表数据对象,边代表这些对象之间的关系。例如,数据云中的数据图将层次关系简化为单一记录,提高查询处理速度。这种结构也有助于高效地实时数据检索,这对于需要快速响应大量数据集的许多 AI 应用至关重要。

Graph RAG 的应用是什么?

Graph RAG(图检索增强生成)是一种先进的方法,将基于图的数据结构与检索增强生成技术结合起来,以增强语言模型的能力。Graph RAG 旨在对规模化的私有文本库进行问答,能够处理用户问题的普遍性和需要索引的源文本数量。Graph RAG 使用 LLM 构建基于图的文本索引,然后利用它来回答全局性的问题。该过程分为两个阶段:

  • 从源文档中提取实体知识图谱。

  • 为所有紧密相关的实体群组预生成社区摘要。

给定一个问题,每个社区摘要用于生成部分回答,然后将所有部分回答汇总成最终用户的回答。

对于数据集规模在 100 万词元范围内的全局性问题,该论文显示,Graph RAG 在生成答案的全面性和多样性方面,相比于基础 RAG 模型有显著提升。

Graph RAG 是什么?

Graph RAG 是一个两步骤过程:首先,通过对私有数据进行索引创建由 LLM 派生的知识图谱。这些图谱作为 LLM 的记忆表示,可以被后续步骤用于更有效的检索。

系统的第二部分是利用这些预建索引的 LLM 协调机制,创建了一个更优的 RAG 流程,能够一次性理解整个数据集。

Graph RAG 特别实现了两件事:

  • 提高搜索相关性。

  • 实现可能需要非常大上下文的新场景。例如,发现数据趋势、进行摘要等。

它是如何做到的?

源文档 → 文本块

  • 粒度:将源文档的输入文本分割成块。

  • 权衡:更长的块需要更少的 LLM 调用,但可能因为较长的上下文窗口而降低召回率。

  • 示例:在 HotPotQA 数据集上,600 词元的块大小提取的实体引用几乎是 2400 词元块大小的两倍。

文本块 → 元素实例

  • 目标:从文本块中识别和提取图节点和边。

  • 过程:使用 LLM 提示识别实体和关系,输出限定元组。

  • 定制化:用特定领域的少数示例来定制提示。

  • 效率:多轮“收获”确保在不牺牲块大小的情况下检测到更多实体。

元素实例 → 元素摘要

  • 摘要:LLM 抽象并总结文本中的实体、关系和主张。

  • 处理重复:尽管存在实体引用的潜在不一致性,但由于检测到密切相关的实体及其摘要,该方法具有韧性。

元素摘要 → 图社区

  • 图建模:创建一个无向加权图,其中节点是实体,边是关系。

  • 社区检测:使用 Leiden 算法将图分割成层次化社区,以实现高效的全局摘要。

图社区 → 社区摘要

  • 摘要创建:为每个社区生成报告式摘要。

  • 实用性:摘要有助于理解数据集的全局结构和语义,辅助回答全局查询。

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

  • 查询处理:使用社区摘要生成回答。

  • 中间回答:将摘要分成块,LLM 根据帮助度分数生成回答。

  • 最终回答:将得分最高的中间回答合并成最终的全局回答。

将 RAG 应用于私有数据集

为了展示 GraphRAG 的有效性,研究人员提供了一个示例案例,我们从使用新闻文章中的暴力事件信息(VIINA)数据集开始进行调查。由于其复杂性和存在不同观点及片面信息,选择了这个数据集。这是一个足够新的、不包括在 LLM 基础模型训练中的现实世界测试案例。

我们从 2023 年 6 月的俄罗斯和乌克兰新闻来源的新闻文章开始,翻译成英文,以此创建我们将进行基于 LLM 检索的私有数据集。数据集的规模远远超出了 LLM 上下文窗口的容量,因此需要采用 RAG 方法。

我们首先进行一个探索性查询,将其提交给基线 RAG 系统和我们的新方法,GraphRAG:

查询:“Novorossiya 是什么?”

在这些结果中,我们可以看到两个系统都表现良好——突出显示了基线 RAG 表现良好的查询类型。让我们尝试一个需要连接点的查询:

查询:“Novorossiya 做了什么?”

基线 RAG 无法回答这个问题。查看插入到上下文窗口的源文档(图 1),没有文本段讨论 Novorossiya,导致这一失败。

相比之下,GraphRAG 方法发现了查询中的一个实体,Novorossiya。这使得 LLM 能够在图中定位自己,并产生了一个包含原始支持文本链接的优越回答。例如,下面的图 2 显示了 LLM 用于生成声明“Novorossiya 被涉嫌计划炸毁 ATM 机”的确切内容。我们看到了 LLM 用来支持特定银行是 Novorossiya 目标的断言的原始源文档的片段(经过英文翻译),通过图中存在的两个实体之间的关系。

通过使用 LLM 生成的知识图谱,GraphRAG 大大改进了 RAG 的“检索”部分,用更高相关性的内容填充上下文窗口,从而获得更好的答案并捕获证据来源。

能够信任并验证 LLM 生成结果的重要性始终存在。我们关心结果是否事实正确、连贯,并准确代表源材料中的内容。GraphRAG 提供了证据来源或源定位信息,因为它生成每个响应。拥有每个断言的引用来源也使人类用户能够快速、准确地直接针对原始源材料审计 LLM 的输出。

结论

这个想法看起来很酷,但其成功取决于 LLM 首先能够多好地提取关系,同时并非所有数据都是或可以以图形结构展示,这样的考虑会产生什么影响,尚待观察。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询