GraphRAG:一种新型的RAG技术

老A的AI实验室 2024-08-22 10:31:01 阅读 84

微软前几天发布的 GraphRAG 架构非常厉害,但是具体的原理和内容可能不太好理解。Neo4j 的 CTO 写了一篇详细的文章《GraphRAG 宣言:为 GenAI 增加知识》,通俗易懂的介绍了 GraphRAG 的原理、与传统 RAG 的区别、GraphRAG的优势、知识图谱的创建和利用知识图谱工作。

一、图:概念解析

当我们提到“图”时,并不是指图表(chart),而是指一种数据结构,能够表示实体(如人、地点、事物)及其之间的关系,这种数据结构在知识图谱和GraphRAG中非常重要。

Graph“图”示例

《权游》人物关系图

伦敦地铁图

二、两种知识表示方法:向量和图形

在NLP和AI领域中,有两种方法来理解和表示知识:传统的基于向量的检索(RAG)和基于知识图谱的方法(GraphRAG)。

RAG的核心是向量搜索,它接收一段文本,并从大量书面材料中返回概念上相似的文本。这种方法简单且有效,对于基本搜索非常有用。但是,人们可能不会经常思考向量是什么样子,或者相似性计算是如何进行的。

以苹果为例,人类对苹果的表示是复杂且多维的,无法完全在纸上捕捉。向量表示苹果是一个数字数组,是统计领域的构造。向量的魔力在于它们能够以编码形式捕捉它们对应文本的本质。

在RAG的上下文中,向量在需要识别一组单词与另一组单词的相似性时才有价值。这可以通过运行相似性计算(即向量数学)并得到匹配来实现。

然而,如果你想理解向量内部的内容,理解其周围的事物,掌握文本中所代表的事物,或者理解这些事物如何适应更大的上下文,那么向量作为表示方式就无法做到这一点。

与此相反,知识图谱是对世界的符号表示,人类和机器都能够理解和推理知识图谱。你可以查询、可视化、注释、修复和扩展知识图谱。知识图谱代表了你的世界模型——即你正在工作的领域所代表的世界部分。

三、GraphRAG vs. RAG

GraphRAG 和 RAG 并不是竞争关系,它们各自在检索和生成文本方面都有其独特的价值。GraphRAG 并不仅仅是基于文本中单词的嵌入相似性,而是在 RAG 的基础上增加了图查询的能力。GraphRAG 是 RAG 的一种形式,其中检索路径包括了一个知识图谱。

在 GraphRAG 中,首先触发一个图查询。这个查询可以是简单的,比如基于关键词或向量的搜索,目的是找到一组初始的节点(在图数据库中,节点可以代表实体或概念)。在进行图查询的同时,可以选择性地包括一个向量相似性组件。系统会考虑节点之间的向量相似性,以增强搜索的准确性。

可以选择将图和向量存储在两个不同的数据库中,或者使用像 Neo4j 这样的图数据库,它同时支持图存储和向量搜索。这种灵活性允许开发者根据具体需求选择最合适的存储和查询策略。

GraphRAG 的常见使用模式

首先进行向量或关键词搜索,以找到一组初始节点。然后遍历图,获取这些节点相关的信息。这可以通过图数据库中的查询来实现,比如使用图遍历算法。最后,可以选择使用基于图的排名算法(如 PageRank)对文档进行重新排名。PageRank 是一种著名的图排名算法,最初由 Google 开发,用于确定网页的重要性。

GraphRAG 提供了更高的准确性和更完整的答案,它能够通过知识图谱提供更丰富的上下文信息。知识图谱的使用使得开发和维护 RAG 应用也变得更加容易,因为数据在构建应用时是可见的。图谱还可以被人类和机器理解,提供了更好的可解释性和可审计性。

四、GraphRAG的生命周期

使用 GraphRAG 的 GenAI 应用遵循与任何 RAG应用相同的模式,但增加了一个初始的“创建图”步骤。创建图类似于将文档分块并加载到向量数据库中。

图表具有高度迭代性——你可以从一个“最小可行图”开始,并从那里扩展。一旦你的数据进入知识图,它就变得非常容易演化。你可以添加更多种类的数据,以获得数据网络效应的好处。你还可以提高数据的质量,从而提升你的应用结果的价值。

将图创建步骤添加到早期的流程图中,你会得到一个看起来像这样的流程:

五、GraphRAG的优势

先较于纯向量RAG,GraphRAG的优势主要体现在以下三个方面:

更高的准确性和更完整的答案(运行/生产优势)创建知识图谱后,更容易构建和维护 RAG 应用(开发时间优势)更好的可解释性、可追溯性和访问控制(治理优势)

1、更高的准确性和更完整的答案

GraphRAG 提供了更高质量的响应。例如,数据目录公司 Data.world 在 2023 年底发布的一项研究表明,GraphRAG在43个业务问题中,平均将LLM响应的准确性提高了3 倍。基准测试发现,在知识图谱的支持下,响应的准确性显著提高。

微软在 2024 年 2 月开始发表了一系列文章,标题为“GraphRAG: Unlocking LLM discovery on narrative private data”,并附有相关的研究论文和软件发布。微软观察到,纯向量RAG存在以下两个问题:

RAG 难以将各个点连接起来。当回答问题需要通过共享属性遍历不同的信息片段以提供新的综合见解时,就会发生这种情况。当被要求全面理解大型数据集合甚至单个大型文档中的总结语义概念时,RAG 的表现不佳。

微软发现,“通过使用 LLM 生成的知识图谱,GraphRAG 大大改善了 RAG 的‘检索’部分,用更相关的内容填充上下文窗口,从而得出更好的答案并捕捉证据来源。”他们还发现 GraphRAG 需要的token与其他方案相比少 26% 到 97%,这不仅使其在提供答案方面更好,而且更便宜、更可扩展。

不仅仅是答案的正确性重要,答案的实用性也同样重要。人们发现 GraphRAG 不仅提高了答案的准确性,还使答案更加丰富、更完整、更有用。LinkedIn 的一篇论文描述了 GraphRAG 对其客户服务应用程序的影响,提供了一个很好的例子。GraphRAG 提高了回答客户服务问题的正确性和丰富性(因此也提高了其实用性),将其客户服务团队每个问题的平均解决时间减少了 28.6%。

还有一个例子来自于Writer,Writer 最近宣布了一份基于 RobustQA 框架的 RAG 基准测试报告,比较了他们基于 GraphRAG 的方法与竞争中的最佳工具。GraphRAG 的得分为 86%,这比竞争对手的得分(在 33% 到 76% 之间)有显著提高,同时具有等效或更好的延迟。

2、提高数据理解能力,加速迭代

知识图谱在概念和视觉上都很直观。用户可以探索这些图谱,常常能够揭示新的洞见。许多用户报告说,一旦他们投入了创建知识图谱的努力,他们发现这有助于以意想不到的方式构建和调试他们的GenAI应用。

当你将数据以图形的方式展示时,可以更直观地理解数据,这是向量表示无法做到的。图形可以展示数据之间的关系和结构,而不仅仅是数据点本身。

比如下面关于锂暴露问题的示例。如果将向量可视化,你可能会得到一个有很多行和列的复杂图表:

相比之下,当你将数据作为图形处理时,可以以一种向量表示无法实现的方式理解数据。

例如LlamaIndex的一个网络研讨会,展示了他们如何提取向量化的文本块(词汇图谱)和LLM提取的实体(领域图谱),并将它们通过“提及”关系联系起来。这种方法不仅适用于LlamaIndex,Langchain、Haystack、SpringAI等其他工具也提供了类似的功能。

拥有一个丰富的数据结构可以为开发和调试打开广泛的可能性。数据的各个部分保留了它们的价值,而结构本身存储并传达了额外的意义,这可以用来增加应用的智能。

不仅仅是可视化,更重要的是数据以一种传达和存储意义的方式被结构化。这有助于开发者理解数据如何驱动GenAI决策,并确保数据的正确性。这是知名金融科技公司的开发人员在将知识图谱引入其 RAG 工作流程一周后的反应:

3、治理:可解释性、安全性等

GraphRAG 提供了更好的可解释性,因为它允许开发者和用户理解生成答案背后的逻辑和数据。这在需要高度透明度和可审计性的领域(如金融或医疗保健)尤为重要。知识图谱的可追溯性也有助于追踪数据的来源和流向,这对于确保数据的准确性和可靠性至关重要。

例如,Lettria的Charles从一个包含10,000篇金融文章的知识图谱中提取实体,并与LLM一起使用GraphRAG来提供更好的答案。将数据以图的形式展示是第一步。这些数据不仅可导航和查询,还可以随着时间的推移进行更正和更新。

访问控制方面,知识图谱允许更细粒度的权限管理,确保只有授权用户才能访问特定的数据,从而增强了数据的安全性和隐私保护。

如果您从事受监管的业务(例如银行或医疗保健),则任何特定员工对信息的访问权限可能取决于该员工的角色。无论是 LLM 还是向量数据库,都没有很好的方法来限制信息范围以与角色相匹配。您可以使用知识图谱中的权限轻松处理此问题,其中任何特定参与者访问数据的能力均受数据库控制,并排除他们无权查看的结果。这是一个简单安全策略的模型,您可以在具有细粒度访问控制的知识图谱中实现该策略:

六、知识图谱的构建

首先,理解下与 GenAI 应用程序最相关的两种图谱:

1、领域图(Domain graph):这是对你应用相关的世界模型的图表示。领域图可以帮助你理解和表示你的应用领域内的各种实体和它们之间的关系。

2、词汇图(Lexical graph):这是文档结构的图表示。最基本的词汇图为每段文本都有一个节点。这种图谱可以扩展,包括文本块与文档对象(如表格)、章节、部分、页码、文档名称/ID、集合、来源等之间的关系。

组合领域图与词汇图:

一旦你拥有了知识图谱,就会有许多框架可用于执行 GraphRAG。这些框架包括 LlamaIndex 的 Property Graph Index、Langchain 的 Neo4j 集成,以及 Haystack 等其他工具。

在构建知识图谱方面,有许多工具可用。例如,Neo4j Importer 提供了一个图形用户界面,用于将表格数据映射和导入到图中。下图总结了构建知识图谱的步骤:

扩展知识:

图表和知识图谱:Neo4j的GraphAcademy、Andrew Ng的Deeplearning.ai课程

GraphRAG项目:microsoft/graphrag: A modular graph-based Retrieval-Augmented Generation (RAG) system (github.com)

【推广时间】

给大家推荐一个性价比超高的GPU算力平台:UCloud云计算旗下的Compshare算力共享平台,目前注册送20元测试金,可以畅享7小时4090算力,预装了主流的大模型和环境的镜像,开箱即用,非常方便。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。