微信扫码
与创始人交个朋友
我要投稿
之前的文章已经深入探讨了 RAG(检索增强生成)。今天,我们要介绍一篇名为 Graph RAG 的新论文。大语言模型(LLM)问世后不久,RAG 就成为了生成式 AI 领域的热门话题。但这些系统并非没有挑战。虽然它提升了 LLM 的功能,同时也带来了一系列新问题,每个问题都需要独特的解决方案。去年以来,已经发展出多种策略,让 RAG 系统变得更稳定、更灵活。今天,我们同样努力地将介绍 Graph RAG。
RAG 在处理针对整个文本集的全局性问题时表现不佳,比如询问“数据集的主要主题是什么?”,因为这本质上是一个查询聚焦的摘要任务,而不是一个直接的检索任务。Graph RAG 正是为了解决这类问题而设计的。那么,让我们开始吧。
涵盖的主题:
介绍 RAG
为什么使用图?
Graph 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 使用 LLM 构建基于图的文本索引,然后利用它来回答全局性的问题。该过程分为两个阶段:
从源文档中提取实体知识图谱。
为所有紧密相关的实体群组预生成社区摘要。
给定一个问题,每个社区摘要用于生成部分回答,然后将所有部分回答汇总成最终用户的回答。
对于数据集规模在 100 万词元范围内的全局性问题,该论文显示,Graph RAG 在生成答案的全面性和多样性方面,相比于基础 RAG 模型有显著提升。
Graph RAG 是一个两步骤过程:首先,通过对私有数据进行索引创建由 LLM 派生的知识图谱。这些图谱作为 LLM 的记忆表示,可以被后续步骤用于更有效的检索。
系统的第二部分是利用这些预建索引的 LLM 协调机制,创建了一个更优的 RAG 流程,能够一次性理解整个数据集。
Graph RAG 特别实现了两件事:
提高搜索相关性。
实现可能需要非常大上下文的新场景。例如,发现数据趋势、进行摘要等。
它是如何做到的?
源文档 → 文本块
粒度:将源文档的输入文本分割成块。
权衡:更长的块需要更少的 LLM 调用,但可能因为较长的上下文窗口而降低召回率。
示例:在 HotPotQA 数据集上,600 词元的块大小提取的实体引用几乎是 2400 词元块大小的两倍。
文本块 → 元素实例
目标:从文本块中识别和提取图节点和边。
过程:使用 LLM 提示识别实体和关系,输出限定元组。
定制化:用特定领域的少数示例来定制提示。
效率:多轮“收获”确保在不牺牲块大小的情况下检测到更多实体。
元素实例 → 元素摘要
摘要:LLM 抽象并总结文本中的实体、关系和主张。
处理重复:尽管存在实体引用的潜在不一致性,但由于检测到密切相关的实体及其摘要,该方法具有韧性。
元素摘要 → 图社区
图建模:创建一个无向加权图,其中节点是实体,边是关系。
社区检测:使用 Leiden 算法将图分割成层次化社区,以实现高效的全局摘要。
图社区 → 社区摘要
摘要创建:为每个社区生成报告式摘要。
实用性:摘要有助于理解数据集的全局结构和语义,辅助回答全局查询。
社区摘要 → 社区回答 → 全局回答
查询处理:使用社区摘要生成回答。
中间回答:将摘要分成块,LLM 根据帮助度分数生成回答。
最终回答:将得分最高的中间回答合并成最终的全局回答。
为了展示 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+中大型企业
2024-11-21
提升RAG性能的全攻略:优化检索增强生成系统的策略大揭秘 | 深度好文
2024-11-20
FastGraphRAG 如何做到高达 20%优化检索增强生成(RAG)性能优化
2024-11-20
为裸奔的大模型穿上"防护服":企业AI安全护栏设计指南
2024-11-20
RAG-Fusion技术在产品咨询中的实践与分析
2024-11-19
构建高性能RAG:文本分割核心技术详解
2024-11-19
【RAG竞赛获奖方案】CCF第七届AIOps国际挑战赛季军方案分享EasyRAG:一个面向AIOps的简洁RAG框架
2024-11-19
企业RAG构建中,如何用“行级别权限管控”避免数据泄露
2024-11-19
大模型prompt压缩技术总结:从硬提示到软提示代表方案实现思路
2024-07-18
2024-05-05
2024-07-09
2024-07-09
2024-05-19
2024-06-20
2024-07-07
2024-07-07
2024-07-08
2024-07-09
2024-11-06
2024-11-06
2024-11-05
2024-11-04
2024-10-27
2024-10-25
2024-10-21
2024-10-21