GraphRAG 详解

一、引言

以 ChatGPT 为代表的大语言模型出圈后,企业级 LLM 的应用也越来越热,这其中一大部分应用都使用了 RAG 技术。

传统 RAG 技术在某些场景下,可能存在以下几个问题,即使使用高级 RAG 方法通常也较难克服。

1. 效率问题:基于向量的搜索方法采用数学方法,如聚类,树形结构或 HNSW 等近似最近邻算法,这些方法在处理极高维度数据,或非常复杂的信息结构时效果不好。另外,ANN 搜索算法如 HNSW 虽然可以提高效率,但构建和维护索引通常需要大量的计算资源。

2. 可解释性:文本 Embedding 后的向量,可解释性很低。RAG 检索后得到的向量只关注文本的片段,而表示文本片段的向量是数字数组,没有直接的可解释性,无法通过观察向量中的具体数字理解文本内容。

3. 整体理解受限:RAG 检索到的内容(向量块)虽然来自数据库中所包含的文档,但这些内容相关的上下文却不一定包含在答案中,导致其无法对问题、答案以及文档形成整体理解。

4. 数值与文本:基于向量的检索,同时处理包含文本和数字的数据时准确度不高。向量数据库中,文本和数值型数据的特征和表示方法不同,系统会在处理中混淆这两种类型的数据(文本经过 Embedding 转化为向量,而数值型数据则可能直接使用或经过标准化后使用)。这也是我自己在做这类应用中经常会遇到的问题,比如在混合了数值型表格和文本的规范中查询信息,向量搜索的准确度很低。

5.工程挑战:RAG 系统涉及包含检索、排序、生成等多个组件,确保各组件之间的数据无碍传输、接口统一,以及如何高效地集成和优化这些组件,是一个巨大的工程挑战。


二、Graph RAG

1. Knowledge Graph

Graph RAG 中的 Graph 指的是知识图谱 —— Knowledge Graph:一个用来表示实体及其相互关系的结构化图形数据模型。

在 Graph 中,节点(Nodes) 代表实体如人、地点、事件等;边(Edges)则代表这些实体之间的关系,(如人物关系、地理位置等)。比如《天龙八部》中人物的关系图谱如下:

再比如关于《蒙娜丽莎》的知识图谱:

以及深圳地铁 2024 年运行图:

GraphRAG 中,实体和关系以图的形式存储在图数据库(graph database) 中, 作为 RAG pipeline 的一部分。

2. 知识的两种表示方法:Vectors & Graphs

从人的视角,向量的视角,以及 Graph 的视角,来看一个“苹果:

人对“苹果”的理解是复杂的,并非仅从字面捕捉。我们的大脑会为这个苹果赋予想象,从而产生一种果香诱人、甜美可口之感。这是“苹果”这个词在人类感知与概念上的结合体。

向量“苹果”的表示则是一组数字,这组数字以编码的形式表征了相应文本的一部分意义。在 RAG 过程中,这组数字通过一次计算,识别其与另一组向量的相似度。但是,如前所述,人类几乎无法理解这组向量内部每个数字所代表的内容;从这组数字尝试理解其上下文,或将其融入更长的文本中显然也无能为力。

知识图谱“苹果”的表示则是“declarative”(声明式的),用 AI 的术语来讲,是 symbolic(符号化)的。对人类来说, 知识图谱的表示方式直观,使用自然语言标签和关系,人类可以轻松理解其中的内容,比如我们上边的几张图。对于机器来说, 符号化表示的形式化和标准化特性,易于机器进行解析,并能进行逻辑和算法推理。上述“天龙八部人物图”中,机器很容易推理出来:段正淳是乔帮主的岳父(此处手动狗头)。

3. Graph RAG 运行模式

GraphRAG 本质上就是 RAG,只不过与一般 RAG 相比,其检索路径上多了一个知识图谱。GraphRAG 与 RAG 的基本架构也相同,区别在于其数据库中,同时存储了结构化的知识图谱数据和文本 Embedding 后的向量数据。

上图是一个由用户提问触发的图查询过程。实际应用中可以将图数据和向量分别存储在两个不同的数据库中,或者使用 Neo4j 这样支持向量搜索的图数据库。

GraphRAG 常见的一种运行模型如下:

  1. 进行向量或关键词搜索以找到初始节点集。使用向量搜索,需要预先对知识图谱中的节点数据进行向量化。

  2. 遍历图以获取相关节点的信息。通常基于图的结构进行,不需要额外的向量化处理。

  3. 使用基于图的排序算法(如 PageRank)对文档进行重新排序。PageRank 等算法利用图结构信息评估节点的重要性或相关性,不依赖于向量表示,而是基于图的连接结构和关系信息。

GraphRAG 的应用场景不同,模式也会随之变化。


三、GraphRAG Lifecycle

使用 GraphRAG 的生成式 AI 应用与任何 RAG 应用的模式基本相同,只是在开始时增加了一个“Create Graph-创建图”的步骤:

Create Graph 的过程类似于传统 RAG 将文档进行分块、向量化后加载到向量数据库中。Graph 在工程方面有以下几个优势:

  1. 图的可迭代型很高:可以从一个“minimum viable graph”开始逐渐扩展。

  2. 数据纳入知识图谱后,数据的进化变得容易了许多。通过向知识图谱中添加更多类型的数据,可以充分利用数据网络效应带来的益处,同时还能通过提升数据质量增强应用价值。

  3. 创建图的技术栈发展飞快,随着工具的进步和完善,创建图会变得更加容易。

将 Create Graph 这一步骤添加至先前的图中,形成 GraphRAG 的完整流程如下:


四、Create Graph

有必要详细介绍一下 GraphRAG 中的 Create Graph。构建知识图谱的第一步是理解与 GenAI 最相关的两种图:Domain graph 与 Lexical Graph

1. Domain graph-域图

域图是一个用来表示某个特定领域知识与关系的知识图谱。域图聚焦于某个主题或某领域,是特定应用领域内世界模型的具体表现形式。比如一个和小龙女相关的域图简单示意如下:

创建领域图有几种不同路径,取决引入的数据是来自结构化源、非结构化文本,或两者兼有。

非结构化数据源构建知识图的工具正在迅速演进。如新的 Neo4j 知识图构建器能够处理 PDF 文档、网页、YouTube 视频片段或维基百科文章,并自动从中创建知识图谱。若客户、产品、地理信息相关的数据存储在关系型数据库中,则可以直接使用成熟的关系到图谱的映射创建领域图。

2. Lexical Graph-词汇图

词汇图是一个表示文档结构的图,用于描述文本内容的组织方式,主要聚焦于文本的分段(如段落、句子或其他文本片段)及其相互关系。

词汇图通过图的形式表示文档的内部结构,每个节点代表一个文本片段,每条边代表片段之间的关系。一个简单的词汇图如下:

可以按照以下的方式结合域图和词汇图:

创建词汇图比较简单,主要涉及基本的解析与分块策略。


五、GraphRAG 的优势

与 传统 RAG 相比,GraphRAG 有几方面的优势

1. 准确性与可用性

对比 GraphRAG 与传统 RAG,最直观的感受是 GraphRAG 可以获得更高质量的回复。在微软的论文《 From Local to Global: A Graph RAG Approach to Query-Focused Summarization 》,研究人员发现 GraphRAG 能显著提高 RAG 环节中的“检索”性能,可以在检索的上下文中填充更高相关性的内容,最终产生更准确的回答与原始索引。

同时,GraphRAG 与替代方法相比,所需要的 Token 数量减少了 26% 至 97%,因此其在提供答案方面不仅准确度高,而且成本也更低。

一个案例:LinkedIn 最近发表的论文描述了 GraphRAG 对其客服应用影响,发现 GraphRAG 在提高回答问题正确性的同时,其答案也更丰富,使得客服团队解决单个问题时间的中位数减少了 28.6% 。

2. 提升数据价值,加快产品迭代速度

由于知识图谱在概念和视觉上都比较直观,因此尝试从知识图谱的角度理解数据,会对数据产品新的洞察。图谱能生动地展现应用底层的数据情况。

另外,图谱提供了能追溯到原始答案的“钩子”,可以沿着这些“钩子”组合而成的因果链追踪这些数据。

对于 LLMs 应用,图谱中独立的数据块能保留其价值,同时展现出的数据结构本身就能存储并传递额外意义,可通过这些为应用程序增加更多智能。

比如 LlamaIndex 最近展示的一个图,阐释了其通过“MENTIONS”将词汇图和域图进行了关联:

3. 可解释性及安全性

大语言模型缺乏可解释性,因此基于 LLMs 的应用很难在决策层面提供信任。但知识图谱则完全不同,知识图谱的数据可导航,查询、并能随时修正和更新。在决策层面,使用图结构的数据比使用向量结构的数据更容易理解与可信。

在数据质量方面,将数据置于知识图谱中,更容易发现数据中的错误并进行溯源:并不仅能在计算中使用,还能在解释中加以利用。而这一点在数据的向量表示中是根本无法实现的。

从安全性角度来说,GraphRAG 可以通过图结构,自然地表示和管理复杂的关系,包括用户、角色、权限、资源之间的多对多关系;并且能通过图的节点和边的属性与标签,实现更细粒度的权限管理和动态调整。特别是 GraphRAG 支持基于上下文的动态权限管理,可以根据时间、地点、用户状态等上下文信息实时调整访问权限。

下图是一个简单的安全策略示意,可以在具备细粒度访问控制的知识图谱中实现:

在数据隐私方面,Graph RAG 可以通过分析图结构中应用的访问模式和路径,检测异常行为并及时响应。


六、可能适合 Graph RAG 的场景

GraphRAG 并非万能,在传统 RAG 效果良好时,贸然改用 GraphRAG 并不可取。在以下几个场景中,若已有事实数据证明传统 RAG 有局限,可以尝试考虑使用 GraphRAG:

  1. 受限于向量搜索的能力:在 RAG 过程中的检索阶段,获取的信息与用户查询意图之间存在较大的偏差时。

  2. 改进 RAG 方法后仍然效果不佳:若已在 RAG 中使用包含了 BM25 精确搜索的混合搜索方法,对排序流程进行了改进,对嵌入向量进行微调后仍然效果不佳,可尝试使用 GraphRAG。

  3. 复杂关系数据或跨领域知识集成:当数据库中包含大量相互关联的实体,需要整合不同领域的信息并建立联系时,如社交网络、组织结构等数据,或跨学科研究、综合情报分析等任务,可尝试使用GraphRAG。

  4. 有较高可解释性要求的场景:如前所述, GraphRAG 提供的图结构使得结果的推理过程更加透明和可解释,在对可解释性有较高要求的场景下,可尝试使用GraphRAG。

  5. 多跳查询需求:需要多步推理或跨越多个关系的查询,如寻找间接关系或因果链分析的相关应用。

  6. 细粒度访问控制:需要基于复杂关系实现精细的数据访问权限,如大型组织的数据共享系统等。

  7. 动态数据环境:当数据频繁更新,需要实时反映关系变化时,如实时事件分析或动态系统监控等场景。

以上就是可尝试使用 GraphRAG 的几个场景。在实际应用阶段,还需要从数据、性能、工程实现复杂度等多方面考虑,最终确定是否使用 GraphRAG。


总结

1-传统 RAG 技术以向量搜索为核心,某些场景下可能面临准确度不高,解释性差,整体理解能力有限等问题。GraphRAG 与传统 RAG 相比,在准确度、可解释性、安全性以及数据价值提升方面都有进步。

2-GraphRAG 的数据表征以符号化的图结构为核心,将实体、实体间关系存储在图数据库中,对人类而言表达直观,可解释性强;对机器来说易于解析,并能进行逻辑和算法推理。

3-GraphRAG 的本质是对 RAG 的扩展,它在传统 RAG 的基础上增加了创建和利用图结构的步骤。图谱创建通常包括两个层面:创建反映领域知识的域图和反映语言结构的词汇图,这种图结构使得 GraphRAG 能够捕捉更复杂的关系和上下文。

4-若传统 RAG 效果良好,则贸然改为 GraphRAG 并不可取。需要从适用 GraphRAG 的场景出发,综合考虑工程实现和数据等多方面因素,最终确定是否使用 GraphRAG。

5-尽管 GraphRAG 有诸多优势,但也面临一些挑战,如图构建的复杂性、大规模图的性能问题、以及对专业知识的更高要求等。在实际应用中需要权衡这些因素。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值