WithAI.Design

5 min read

译文:我们正在进入 RAG 的蓝链时代

译文:我们正在进入 RAG 的蓝链时代

前不久,微软发布知识图谱项目https://github.com/microsoft/graphrag,震惊业界。其算法解决RAG领域的难题,可以进一步提升RAG的准确性和返回率。这是微软的技术博文,我觉得写得非常好,翻译过来,供大家阅读。原文地址:https://neo4j.com/blog/graphrag-manifesto/

我们正在进入 RAG 的“蓝链时代”

我们即将意识到,为了利用生成式 AI 做出任何真正有意义的事情,不能仅仅依赖自回归语言模型来做决定。我知道你在想什么:“RAG 就是答案。”或者微调,或者 GPT-5。

是的,基于向量的 RAG 和微调等技术确实有所帮助,并且它们足以满足某些用例的需求。但也有一大类用例,这些技术都遇到了瓶颈。基于向量的 RAG 与微调一样,提高了许多类型问题的正确答案的概率。然而,这两种技术都不能保证答案的正确性。它们通常也缺乏上下文、色彩以及与你已知为真的事物的联系。此外,这些工具并没有为你提供很多关于它们为何做出特定决定的线索。

早在 2012 年,谷歌就发布了他们的第二代搜索引擎,并发表了一篇标志性的博文,题为“Introducing the Knowledge Graph: things, not strings”。他们发现,如果使用知识图谱来组织所有网页中字符串所代表的事物同时进行所有字符串处理,就能实现能力的巨大飞跃。如今,我们看到同样的模式在生成式 AI 领域上演。许多生成式 AI 项目都遇到了瓶颈,其结果的质量受到所使用解决方案仅处理字符串而非事物的限制。

时间快进到今天,AI 工程师和处于前沿的学术研究人员都发现了与谷歌相同的结论:突破这一瓶颈的秘诀在于知识图谱。换句话说,将关于事物的知识融入基于统计的文本技术中。这与任何其他类型的 RAG 类似,只是除了向量索引之外,还调用了知识图谱。或者换句话说,GraphRAG

本文旨在对 GraphRAG 进行全面且易于理解的阐述。事实证明,根据数据构建知识图谱并将其用于 RAG 中,可以带来几项强大的优势。大量研究证明,与使用普通的仅基于向量的 RAG 相比,它可以为向 LLM 提出的几乎所有(如果不是全部)问题提供更好的答案。

仅凭这一点,GraphRAG 就会被广泛采用。除此之外,由于构建应用程序时数据是可见的,因此开发也变得更加容易。第三个主要优势是,人类和机器都可以轻松理解和推理图谱。因此,使用 GraphRAG 进行构建更容易,可以获得更好的结果,并且(这在许多行业中都至关重要)可解释且可审计!我认为 GraphRAG 将会取代仅基于向量的 RAG,并成为大多数用例的默认 RAG 架构。本文将解释其原因。

等等,图谱?

让我们明确一点,当我们说图谱时,我们指的是这样的东西:

虽然此图已广泛用于示例说明知识图谱,但原始来源和作者仍未确定。已知最早的使用案例似乎是 Farahnaz Akrami 的一篇 Medium 文章。如果您是此图的创建者,请联系我们,以便我们提供适当的署名。

或者这个:

权力的游戏图谱可视化,作者:William Lyon。

或者这个:

伦敦地铁线路图(来源:伦敦交通局。)有趣的是,伦敦交通局最近部署了一个图谱驱动的数字孪生体,以改善事件响应并减少拥堵。

换句话说,不是图表。

如果你想更深入地了解图谱和知识图谱,我建议你访问 Neo4j 的 GraphAcademy 或 Andrew Ng 的 Deeplearning.ai 关于 RAG 知识图谱的课程。我们在这里不再赘述定义,假设你对图谱有基本的了解。

如果你理解了上面的图片,你就可以明白如何在 RAG 管道中查询底层知识图谱数据(存储在图数据库中)。这就是 GraphRAG 的意义所在。

两种知识表示类型:向量和图谱

典型的 RAG 的核心——向量搜索——接收一段文本,并从候选的书面材料库中返回概念相似的文本。这在自动化的同时效果也很棒,对于基本搜索非常有用。

每次执行此操作时,你可能不会想到向量是什么样子,或者相似度计算在做什么。让我们从人类的角度、向量的角度和图谱的角度来看待一个苹果:

人类的表征是复杂且多维的,我们无法在纸上完全捕捉到它。让我们发挥一些诗意的想象,想象这幅诱人的图片代表了一个苹果的全部感知和概念上的荣耀。

苹果的向量表示是一组数字——统计领域的构造。向量的魔力在于,它们各自以编码的形式捕捉了相应文本的本质。然而,在 RAG 上下文中,只有当你需要识别一小段文字与另一小段文字的相似程度时,它们才有价值。这很简单,只需运行相似度计算(即向量数学)并获得匹配结果即可。但是,如果你想了解向量内部的内容,了解它周围的内容,掌握文本中表示的事物,或者了解所有这些事物如何融入更大的上下文,那么向量作为一种表示形式就无法做到这一点。

相比之下,知识图谱是对世界的一种声明性表示(用 AI 术语来说是符号性表示)。因此,人类和机器都可以理解和推理知识图谱。这很重要,我们稍后会再讨论。此外,你还可以查询、可视化、注释、修复和扩展知识图谱。知识图谱表示你的世界模型——代表你正在处理的领域的世界的一部分。

GraphRAG 与 RAG 的比较

这不是一场竞赛🙂。向量查询和图谱查询都为 RAG 增添了价值。正如 LlamaIndex 创始人 Jerry Liu 所指出的那样,将 GraphRAG 视为包含向量会很有帮助。这与“仅基于向量的 RAG”不同,后者严格基于与文本中单词的嵌入相似性。

从根本上说,GraphRAG 就是 RAG,其检索路径包含知识图谱。如下所示,核心 GraphRAG 模式非常简单。它与使用向量的 RAG 基本相同,只是在图片中添加了知识图谱层。

GraphRAG 模式

在这里,你可以看到正在触发图谱查询。它可以选择性地包含向量相似性组件。你可以选择将图谱和向量分别存储在两个不同的数据库中,也可以使用像 Neo4j 这样也支持向量搜索的图数据库。

使用 GraphRAG 的常见模式之一如下:

  1. 执行向量或关键字搜索以查找初始节点集。
  2. 遍历图谱以返回有关相关节点的信息。
  3. (可选)使用基于图谱的排名算法(如 PageRank)对文档进行重新排名。

模式因用例而异,就像今天 AI 领域的所有其他事物一样,GraphRAG 被证明是一个丰富的空间,每周都会出现新的发现。我们将在以后的博客文章中专门介绍我们今天看到的 GraphRAG 最常见的模式。

GraphRAG 生命周期

使用 GraphRAG 的生成式 AI 应用程序遵循与任何 RAG 应用程序相同的模式,只是在开始时添加了一个“创建图谱”步骤:

创建图谱类似于对文档进行分块并将其加载到向量数据库中。工具的进步使得创建图谱变得非常容易。好消息有三方面:

  1. 图谱是高度迭代的——你可以从“最小可行图谱”开始,然后在此基础上进行扩展。
  2. 一旦你的数据进入知识图谱,就很容易进行演进。你可以添加更多类型的数据,以获得数据网络效应带来的好处。你还可以提高数据的质量,以提升应用程序结果的价值。
  3. 堆栈的这一部分正在快速改进,这意味着随着工具变得更加复杂,图谱创建只会变得更容易。

将图谱创建步骤添加到之前的图片中,你会得到如下所示的管道:

我将在稍后深入探讨图谱创建。现在,让我们暂时搁置这一点,谈谈 GraphRAG 的好处。

为什么要使用 GraphRAG?

与仅基于向量的 RAG 相比,我们看到的 GraphRAG 的优势主要体现在以下三个方面:

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

让我们深入探讨一下:

#1:更高的准确性和更有用的答案

我们看到的 GraphRAG 的第一个(也是最直接的)优势是更高质量的响应。除了我们从客户那里看到的越来越多的案例之外,越来越多的学术研究也支持这一点。其中一个例子来自数据目录公司 Data.world。2023 年底,他们发表了一项研究,表明在 43 个业务问题中,GraphRAG 平均将 LLM 响应的准确性提高了 3 倍。该基准测试发现,在知识图谱的支持下,响应的准确性有了显著提高。

最近,或许更广为人知的是微软从 2024 年 2 月开始发布的一系列文章,其中包括一篇题为 “GraphRAG:释放叙事性私有数据上的 LLM 发现” 的研究博客,以及一篇相关的研究论文和软件版本。他们观察到,基线 RAG(即使用向量的 RAG)存在以下两个问题:

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

微软发现_“通过使用 LLM 生成的知识图谱,GraphRAG 极大地改进了 RAG 的“检索”部分,使用高度相关的上下文填充上下文窗口,从而产生更好的答案并捕获证据来源。 他们还发现,GraphRAG 比其他方法需要的令牌数量少 26% 到 97%,这使得它不仅能够更好地提供答案,而且成本更低、可扩展性更强。

深入探讨准确性问题,重要的不仅仅是答案是否_正确_,还包括答案的_有用性_。人们发现,使用 GraphRAG 不仅答案更准确,而且更丰富、更完整、更有用。LinkedIn 最近发表的一篇描述 GraphRAG 影响的论文以其客户服务应用程序为例,很好地说明了这一点。GraphRAG 提高了回答客户服务问题的正确性和丰富性(因此也提高了有用性),将客户服务团队解决每个问题的平均时间缩短了 28.6%。

另一个类似的例子来自 Neo4j 与其在 GCP、AWS 和微软的合作伙伴联合举办的生成式 AI 研讨会。下面的示例查询针对的是 SEC 文件集合,它很好地说明了使用向量 + GraphRAG 时可以获得什么样的答案,以及仅使用基于向量的 RAG 时可以获得什么样的答案:

请注意描述_可能受锂短缺影响的公司的特征_与列出_可能受影响的特定公司_之间的区别。如果你是一名投资者,希望在市场变化的情况下重新平衡你的投资组合,或者是一家公司,希望在自然灾害的情况下重新平衡其供应链,那么获得后者而不仅仅是前者将是改变游戏规则的关键。在这里,两个答案都是准确的。第二个显然更有用。

Jesus Barrasa 的 Going Meta 第 23 集提供了一个使用法律文件用例的另一个很好的例子,从词汇图谱开始。

那些关注 X 领域并在 LinkedIn 上活跃的人会发现,不仅是实验室,而且是实际应用领域,都经常出现新的例子。在这里,Lettria 的 Charles Borderie 给出了一个例子,将仅基于向量的 RAG 与 GraphRAG 进行了对比,对比对象是一个基于 LLM 的文本到图谱管道,该管道将 10,000 篇财经文章输入到知识图谱中:

如你所见,与普通的 RAG 相比,GraphRAG 不仅显著提高了答案的质量,而且答案使用的令牌数量减少了三分之一。

我要介绍的最后一个值得注意的例子来自 Writer。他们最近宣布了一份基于 RobustQA 框架的 RAG 基准测试报告,将他们基于 GraphRAG 的方法与竞争对手的同类最佳工具进行了比较。GraphRAG 的得分高达 86%,与竞争对手的得分在 33% 到 76% 之间相比,有了显著提高,而且延迟时间相当甚至更短。

每周我都会与来自许多行业的客户会面,他们都在各种生成式 AI 应用程序中体验到了类似的积极效果。知识图谱正在通过提高结果的准确性和有用性来扫清生成式 AI 的道路。

#2:改进数据理解,加快迭代速度

知识图谱在概念上和视觉上都很直观。能够探索它们通常会带来新的见解。许多用户报告的一个意外的额外好处是,一旦他们投资创建了自己的知识图谱,他们就会发现它以意想不到的方式帮助他们构建和调试生成式 AI 应用程序。这在一定程度上是因为将数据视为图谱可以生动地描绘出应用程序底层数据的概貌。图谱还为你提供了将答案追溯到数据的钩子,并沿着因果链向上追溯数据。

让我们以上面提到的锂暴露问题为例。如果你将向量可视化,你将得到如下所示的结果,只是行和列要多得多:

当你将数据作为图谱处理时,你可以用向量表示无法实现的方式来理解它。

下面是一个来自 LlamaIndex 最近的网络研讨会的例子,展示了他们提取向量化块的图谱(词汇图谱)和 LLM 提取的实体(领域图谱)并将两者通过“提及”关系联系起来的能力:

(你可以在 Langchain、Haystack、SpringAI 和更多 中找到类似的例子。)

看看这张图,你可能就会明白,拥有一个数据驻留在其中的丰富结构是如何开启了广泛的新开发和调试可能性的。各个数据片段保留了它们的价值,而结构本身则存储和传达了额外的含义,你可以利用这些含义为应用程序添加更多智能。

这不仅仅是可视化的问题。这还与数据的结构能够传达和存储含义有关。下面是一位来自知名金融科技公司的开发人员在将知识图谱引入其 RAG 工作流程一周后的反应:

这位开发人员的反应与测试驱动开发的假设非常一致,即验证(而不是信任)答案的正确性。就我个人而言,我可不想把 100% 的自主权交给天网,让它做出完全不透明的决定!更具体地说,即使是不担心 AI 的人也会明白,能够看到与“苹果公司”相关联的块或文档实际上不应该映射到“苹果唱片公司”的价值。由于_数据_最终是驱动生成式 AI 做出决策的因素,因此手边有工具来评估和确保正确性至关重要。

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

生成式 AI 决策的影响越大,你就越需要能够说服最终责任人(如果决策出错的话)_信任_该决策。这通常需要能够审计每个决策。它还需要可靠且可重复的良好决策记录。但这还不够。你还需要能够在最终责任人质疑决策时向其解释其背后的推理逻辑。

LLM 本身并不能很好地做到这一点。是的,你可以获得对用于做出决策的文档的引用。但这并不能解释决策本身——更不用说 LLM 还会编造这些引用!知识图谱的运行级别完全不同,这使得生成式 AI 管道中的推理逻辑更加清晰,输入也更容易解释。

让我们继续以上面的一个例子为例,Lettria 的 Charles 将从 10,000 篇财经文章中提取的实体加载到知识图谱中,并将其与 LLM 一起使用来执行 GraphRAG。我们已经看到了这如何提供更好的答案。让我们来看看数据:

将数据视为图谱只是第一步。数据还可以导航和查询,并且可以随着时间的推移进行更正和更新。治理方面的优势在于,查看和审计数据的“世界模型”变得容易得多。与查看相同数据的向量版本相比,使用图谱更容易让最终对决策负责的人员理解它。在质量保证方面,将数据存储在知识图谱中可以更容易地找出数据中的错误和意外情况(无论是令人愉快的还是其他情况),并将其追溯到源头。你还可以捕获图谱中的来源和置信度信息,并在计算和解释中使用这些信息。当你查看相同数据的仅向量版本时,这是不可能做到的,正如我们前面所讨论的,对于普通人(甚至是高于平均水平的人!)来说,这是非常难以理解的。

知识图谱还可以显著增强安全性和隐私性。在构建原型时,这一点往往不是首要考虑的因素,但在走向生产环境的过程中,这是一个至关重要的部分。如果你所在的行业受到监管,例如银行或医疗保健,那么任何特定员工对信息的访问权限都可能取决于该员工的角色。LLM 和向量数据库都没有很好的方法来限制信息的范围以匹配角色。你可以使用知识图谱中的权限轻松地解决这个问题,在知识图谱中,任何特定参与者访问数据的能力都由数据库控制,并且可以排除不允许他们看到的结果。下面是一个可以在具有细粒度访问控制的知识图谱中实现的简单安全策略的模型:

知识图谱创建

人们经常问我构建知识图谱需要什么。理解答案的第一步是了解与生成式 AI 应用程序最相关的两种图谱:

  1. 领域图谱是与你的应用程序相关的世界模型的图谱表示。下面是一个简单的例子:

  2. 词汇图谱是文档结构的图谱。最基本的词汇图谱为每个文本块都有一个节点:

人们经常扩展它,以包含块与文档对象(如表格)、章节、节、页码、文档名称/ID、集合、来源等之间的关系。你还可以像这样组合领域图谱和词汇图谱:

创建词汇图谱很容易,很大程度上只是简单的解析和分块策略问题。至于领域图谱,有几种不同的途径,这取决于你要引入的数据是来自结构化源、非结构化文本还是两者兼而有之。幸运的是,从非结构化数据源创建知识图谱的工具正在迅速改进。例如,新的 Neo4j 知识图谱构建器可以从 PDF 文档、网页、YouTube 剪辑或维基百科文章中自动创建知识图谱。只需点击几下按钮,你就可以可视化(当然也可以查询)输入文本的领域图谱和词汇图谱。它功能强大、趣味十足,并且大大降低了创建知识图谱的门槛。

关于客户、产品、地理位置等的数据可能以结构化形式存储在你的企业的某个地方,并且可以直接从其所在的位置获取。以最常见的情况为例,如果数据存储在关系数据库中,你可以使用标准工具,这些工具遵循久经考验的关系到图谱映射规则。

使用知识图谱

一旦你拥有了知识图谱,就会有越来越多的框架可用于执行 GraphRAG,包括 LlamaIndex 属性图谱索引、Langchain 的 Neo4j 集成以及 Haystack 等。这个领域发展迅速,但我们现在已经到了编程方法变得非常简单的地步。

图谱构建方面也是如此,例如 Neo4j 导入器(它有一个用于将表格数据映射和导入到图谱中的图形用户界面)和上面提到的 Neo4j 新的 v1 LLM 知识图谱构建器。下图总结了构建知识图谱的步骤。

使用知识图谱时,你还会发现自己需要将人类语言问题映射到图数据库查询。Neo4j 推出了一款新的开源工具 NeoConverse,旨在帮助使用自然语言查询图谱。这是朝着实现这一目标迈出的坚实的第一步。

虽然图谱确实需要一些工作和学习才能入门,但好消息是,随着工具的改进,它正变得越来越容易。

结论:GraphRAG 是 RAG 的下一个自然步骤

LLM 和基于向量的 RAG 中固有的基于单词的计算和语言技能可以提供_良好的_结果。为了获得始终如一的_出色_结果,我们需要超越字符串,在_单词模型_的基础上捕获_世界模型_。正如谷歌发现,要掌握搜索,他们需要超越单纯的文本分析,绘制出字符串背后的事物,我们开始看到同样的模式出现在 AI 领域。这种模式就是 GraphRAG。

进步以 S 曲线的方式发生:当一项技术达到顶峰时,另一项技术就会推动进步并超越前者。随着生成式 AI 的发展,对于那些答案质量至关重要的用例,或者内部、外部或监管利益相关者需要可解释性的用例,或者需要对数据访问进行细粒度控制以保护隐私和安全的用例,你的下一个生成式 AI 应用程序很有可能会使用知识图谱。

你可以亲身体验 GraphRAG!

如果你准备好迈出使用 GraphRAG 的下一步,我邀请你试用 Neo4j LLM 知识图谱构建器。这个简单的 Web 应用程序可以让你只需点击几下鼠标,就能从 PDF、网页和 YouTube 视频等非结构化文本源创建知识图谱。它是亲身体验 GraphRAG 强大功能的完美游乐场。

使用 LLM 知识图谱构建器,你可以:

  • 连接到你的免费基于云的 Neo4j 实例,并根据你喜欢的文本源构建图谱。
  • 使用交互式可视化功能探索你新创建的知识图谱。
  • 与你的数据聊天,并对 GraphRAG 进行测试。
  • 将你的知识图谱集成到应用程序中,并解锁新的见解。

致谢

许多人为这篇文章做出了贡献。我要感谢所有分享学习成果、文章和代码(其中许多例子都在这里引用)的人,并鼓励你们继续这样做。正是通过社区的分享,我们才能共同学习。

我还要感谢许多人,他们看到了 GraphRAG 的重要性,并慷慨地贡献了自己的时间来审阅和评论这篇文章本身。在很多情况下,这都是基于他们在现实世界中看到的例子。

我不想一一列举所有人的名字,只想点名表扬一些你通常不会认为是“图谱世界”的人。我们共同见证了 GraphRAG 不仅是一个重要的趋势,而且是两个世界融合的产物。

话虽如此,我最要感谢的是你们所有人,包括(按姓氏字母顺序排列):

  • Harrison Chase,Langchain 首席执行官
  • Ali Ghodsi,Databricks 首席执行官
  • Rod Johnson,SpringSource 投资者和创始人
  • Douwe Kiela,ContextualAI 首席执行官和 RAG 联合发明人
  • Christina Li,FPV Ventures
  • Jerry Liu,LlamaIndex 首席执行官
  • Owen Robertson,DTS 主管
  • Milos Rusic,deepset / Haystack 首席执行官

补充:延伸阅读

关于这个话题的文章有很多,每天都有新的见解和例子出现。虽然我无法提供一份详尽的清单,但如果你有兴趣了解更多信息,这里有一些特别棒的文章可以参考:

标签