微信扫码
与创始人交个朋友
我要投稿
一、引言
以 ChatGPT 为代表的大语言模型出圈后,企业级 LLM 的应用也越来越热,这其中一大部分应用都使用了 RAG 技术。
关于 RAG 技术的介绍,可以参考之前的这篇文章:《高级 RAG 技术——图解概览》。
传统 RAG 技术在某些场景下,可能存在以下几个问题,即使使用高级 RAG 方法通常也较难克服。
1. 效率问题:基于向量的搜索方法采用数学方法,如聚类,树形结构或 HNSW 等近似最近邻算法,这些方法在处理极高维度数据,或非常复杂的信息结构时效果不好。另外,ANN 搜索算法如 HNSW 虽然可以提高效率,但构建和维护索引通常需要大量的计算资源。
2. 可解释性:文本 Embedding 后的向量,可解释性很低。RAG 检索后得到的向量只关注文本的片段,而表示文本片段的向量是数字数组,没有直接的可解释性,无法通过观察向量中的具体数字理解文本内容。
3. 整体理解受限:RAG 检索到的内容(向量块)虽然来自数据库中所包含的文档,但这些内容相关的上下文却不一定包含在答案中,导致其无法对问题、答案以及文档形成整体理解。
4. 数值与文本:基于向量的检索,同时处理包含文本和数字的数据时准确度不高。向量数据库中,文本和数值型数据的特征和表示方法不同,系统会在处理中混淆这两种类型的数据(文本经过 Embedding 转化为向量,而数值型数据则可能直接使用或经过标准化后使用)。这也是我自己在做这类应用中经常会遇到的问题,比如在混合了数值型表格和文本的规范中查询信息,向量搜索的准确度很低。
5.工程挑战:RAG 系统涉及包含检索、排序、生成等多个组件,确保各组件之间的数据无碍传输、接口统一,以及如何高效地集成和优化这些组件,是一个巨大的工程挑战。
Graph RAG 中的 Graph 指的是知识图谱 —— Knowledge Graph:一个用来表示实体及其相互关系的结构化图形数据模型。
在 Graph 中,节点(Nodes) 代表实体如人、地点、事件等;边(Edges)则代表这些实体之间的关系,(如人物关系、地理位置等)。比如《天龙八部》中人物的关系图谱如下:
再比如关于《蒙娜丽莎》的知识图谱:
以及深圳地铁 2024 年运行图:
GraphRAG 中,实体和关系以图的形式存储在图数据库(graph database) 中, 作为 RAG pipeline 的一部分。
从人的视角,向量的视角,以及 Graph 的视角,来看一个“苹果:
人对“苹果”的理解是复杂的,并非仅从字面捕捉。我们的大脑会为这个苹果赋予想象,从而产生一种果香诱人、甜美可口之感。这是“苹果”这个词在人类感知与概念上的结合体。
向量“苹果”的表示则是一组数字,这组数字以编码的形式表征了相应文本的一部分意义。在 RAG 过程中,这组数字通过一次计算,识别其与另一组向量的相似度。但是,如前所述,人类几乎无法理解这组向量内部每个数字所代表的内容;从这组数字尝试理解其上下文,或将其融入更长的文本中显然也无能为力。
知识图谱“苹果”的表示则是“declarative”(声明式的),用 AI 的术语来讲,是 symbolic(符号化)的。对人类来说, 知识图谱的表示方式直观,使用自然语言标签和关系,人类可以轻松理解其中的内容,比如我们上边的几张图。对于机器来说, 符号化表示的形式化和标准化特性,易于机器进行解析,并能进行逻辑和算法推理。上述“天龙八部人物图”中,机器很容易推理出来:段正淳是乔帮主的岳父(此处手动狗头)。
GraphRAG 本质上就是 RAG,只不过与一般 RAG 相比,其检索路径上多了一个知识图谱。GraphRAG 与 RAG 的基本架构也相同,区别在于其数据库中,同时存储了结构化的知识图谱数据和文本 Embedding 后的向量数据。
上图是一个由用户提问触发的图查询过程。实际应用中可以将图数据和向量分别存储在两个不同的数据库中,或者使用 Neo4j 这样支持向量搜索的图数据库。
GraphRAG 常见的一种运行模型如下:
进行向量或关键词搜索以找到初始节点集。使用向量搜索,需要预先对知识图谱中的节点数据进行向量化。
遍历图以获取相关节点的信息。通常基于图的结构进行,不需要额外的向量化处理。
使用基于图的排序算法(如 PageRank)对文档进行重新排序。PageRank 等算法利用图结构信息评估节点的重要性或相关性,不依赖于向量表示,而是基于图的连接结构和关系信息。
GraphRAG 的应用场景不同,模式也会随之变化。
使用 GraphRAG 的生成式 AI 应用与任何 RAG 应用的模式基本相同,只是在开始时增加了一个“Create Graph-创建图”的步骤:
Create Graph 的过程类似于传统 RAG 将文档进行分块、向量化后加载到向量数据库中。Graph 在工程方面有以下几个优势:
图的可迭代型很高:可以从一个“minimum viable graph”开始逐渐扩展。
数据纳入知识图谱后,数据的进化变得容易了许多。通过向知识图谱中添加更多类型的数据,可以充分利用数据网络效应带来的益处,同时还能通过提升数据质量增强应用价值。
创建图的技术栈发展飞快,随着工具的进步和完善,创建图会变得更加容易。
将 Create Graph 这一步骤添加至先前的图中,形成 GraphRAG 的完整流程如下:
域图是一个用来表示某个特定领域知识与关系的知识图谱。域图聚焦于某个主题或某领域,是特定应用领域内世界模型的具体表现形式。比如一个和小龙女相关的域图简单示意如下:
创建领域图有几种不同路径,取决引入的数据是来自结构化源、非结构化文本,或两者兼有。
非结构化数据源构建知识图的工具正在迅速演进。如新的 Neo4j 知识图构建器能够处理 PDF 文档、网页、YouTube 视频片段或维基百科文章,并自动从中创建知识图谱。若客户、产品、地理信息相关的数据存储在关系型数据库中,则可以直接使用成熟的关系到图谱的映射创建领域图。
词汇图是一个表示文档结构的图,用于描述文本内容的组织方式,主要聚焦于文本的分段(如段落、句子或其他文本片段)及其相互关系。
词汇图通过图的形式表示文档的内部结构,每个节点代表一个文本片段,每条边代表片段之间的关系。一个简单的词汇图如下:
可以按照以下的方式结合域图和词汇图:
创建词汇图比较简单,主要涉及基本的解析与分块策略。
与 传统 RAG 相比,GraphRAG 有几方面的优势
对比 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% 。
由于知识图谱在概念和视觉上都比较直观,因此尝试从知识图谱的角度理解数据,会对数据产品新的洞察。图谱能生动地展现应用底层的数据情况。
另外,图谱提供了能追溯到原始答案的“钩子”,可以沿着这些“钩子”组合而成的因果链追踪这些数据。
对于 LLMs 应用,图谱中独立的数据块能保留其价值,同时展现出的数据结构本身就能存储并传递额外意义,可通过这些为应用程序增加更多智能。
比如 LlamaIndex 最近展示的一个图,阐释了其通过“MENTIONS”将词汇图和域图进行了关联:
大语言模型缺乏可解释性,因此基于 LLMs 的应用很难在决策层面提供信任。但知识图谱则完全不同,知识图谱的数据可导航,查询、并能随时修正和更新。在决策层面,使用图结构的数据比使用向量结构的数据更容易理解与可信。
在数据质量方面,将数据置于知识图谱中,更容易发现数据中的错误并进行溯源:并不仅能在计算中使用,还能在解释中加以利用。而这一点在数据的向量表示中是根本无法实现的。
从安全性角度来说,GraphRAG 可以通过图结构,自然地表示和管理复杂的关系,包括用户、角色、权限、资源之间的多对多关系;并且能通过图的节点和边的属性与标签,实现更细粒度的权限管理和动态调整。特别是 GraphRAG 支持基于上下文的动态权限管理,可以根据时间、地点、用户状态等上下文信息实时调整访问权限。
下图是一个简单的安全策略示意,可以在具备细粒度访问控制的知识图谱中实现:
在数据隐私方面,Graph RAG 可以通过分析图结构中应用的访问模式和路径,检测异常行为并及时响应。
六、可能适合 Graph RAG 的场景
GraphRAG 并非万能,在传统 RAG 效果良好时,贸然改用 GraphRAG 并不可取。在以下几个场景中,若已有事实数据证明传统 RAG 有局限,可以尝试考虑使用 GraphRAG:
受限于向量搜索的能力:在 RAG 过程中的检索阶段,获取的信息与用户查询意图之间存在较大的偏差时。
改进 RAG 方法后仍然效果不佳:若已在 RAG 中使用包含了 BM25 精确搜索的混合搜索方法,对排序流程进行了改进,对嵌入向量进行微调后仍然效果不佳,可尝试使用 GraphRAG。
复杂关系数据或跨领域知识集成:当数据库中包含大量相互关联的实体,需要整合不同领域的信息并建立联系时,如社交网络、组织结构等数据,或跨学科研究、综合情报分析等任务,可尝试使用GraphRAG。
有较高可解释性要求的场景:如前所述, GraphRAG 提供的图结构使得结果的推理过程更加透明和可解释,在对可解释性有较高要求的场景下,可尝试使用GraphRAG。
多跳查询需求:需要多步推理或跨越多个关系的查询,如寻找间接关系或因果链分析的相关应用。
细粒度访问控制:需要基于复杂关系实现精细的数据访问权限,如大型组织的数据共享系统等。
动态数据环境:当数据频繁更新,需要实时反映关系变化时,如实时事件分析或动态系统监控等场景。
以上就是可尝试使用 GraphRAG 的几个场景。在实际应用阶段,还需要从数据、性能、工程实现复杂度等多方面考虑,最终确定是否使用 GraphRAG。
1-传统 RAG 技术以向量搜索为核心,某些场景下可能面临准确度不高,解释性差,整体理解能力有限等问题。GraphRAG 与传统 RAG 相比,在准确度、可解释性、安全性以及数据价值提升方面都有进步。
2-GraphRAG 的数据表征以符号化的图结构为核心,将实体、实体间关系存储在图数据库中,对人类而言表达直观,可解释性强;对机器来说易于解析,并能进行逻辑和算法推理。
3-GraphRAG 的本质是对 RAG 的扩展,它在传统 RAG 的基础上增加了创建和利用图结构的步骤。图谱创建通常包括两个层面:创建反映领域知识的域图和反映语言结构的词汇图,这种图结构使得 GraphRAG 能够捕捉更复杂的关系和上下文。
4-若传统 RAG 效果良好,则贸然改为 GraphRAG 并不可取。需要从适用 GraphRAG 的场景出发,综合考虑工程实现和数据等多方面因素,最终确定是否使用 GraphRAG。
5-尽管 GraphRAG 有诸多优势,但也面临一些挑战,如图构建的复杂性、大规模图的性能问题、以及对专业知识的更高要求等。在实际应用中需要权衡这些因素。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-22
2个简单技巧把 RAG 检索准确率从 50% 提高到 95 %
2024-12-22
Browser-Use + LightRAG Agent:可使用 LLM 抓取 99% 的网站
2024-12-22
Dynamic RAG实战:解决知识增强中的动态更新挑战
2024-12-21
构建行业RAG应用系统:金融、财务、保险、医疗等行业该怎么做?
2024-12-21
构建基于多智能体RAG的企业的AI应用程序
2024-12-21
必读!RAG好用的3种Router
2024-12-20
GraphRAG0.5.0:从安装到高效应用的全方位指南
2024-12-20
大模型之深入探索RAG流程
2024-07-18
2024-05-05
2024-06-20
2024-05-19
2024-09-04
2024-07-09
2024-07-09
2024-07-07
2024-07-07
2024-07-08
2024-12-21
2024-12-14
2024-12-01
2024-11-27
2024-11-25
2024-11-06
2024-11-06
2024-11-05