思考:RAG 为什么要引入 graph 克服了什么
召回的内容是无法做到跨文档的召回的,或者说多跳推理 or 关联召回。
更细粒度的相关性
- 基于 KG 实现信息的处理补全和校验
- 利用 KG 作为一路召回源
- 利用 KG 来组织文档 chunk,来提升召回【有基于层次索引的,也有通过实体聚合的】
2024.9 月,最近最新的一篇
第 2 节比较相关技术,而第 3 节概述了 GraphRAG 的一般过程。第 5 节和第 7 节对与 GraphRAG 三个阶段相关的技术进行了分类:G-Indexing、G-Retrieval 和 G-Generation。第 8 节介绍了检索器和生成器的训练策略。第 9 节总结了 GraphRAG 的下游任务、相应的基准、应用领域、评估指标和工业 GraphRAG 系统。第 10 节展望了未来的方向。最后,第 11 节总结了本次调查的内容。
传统 RAG 的局限性:
忽视关系: 传统 RAG 方法主要基于文本的语义相似性,而忽视了文本之间的结构关系。例如,在引用网络中,传统 RAG 方法可能无法捕捉到论文之间的引用关系。
冗余信息: RAG 通常以文本片段的形式提供信息,当这些片段拼接在一起作为提示时,可能会导致上下文过长,出现“lost in the middle”的问题。
缺乏全局信息: RAG 只能检索到文档的子集,而无法全面理解全局信息,这在查询聚焦摘要(QFS)等任务中可能存在问题。
Tips:
思考现有 graph RAG 也不过是将有一定结构信息的字符串给 LLM,这样对于同一个文档而言有多少的提升呢?
同时还有些联合编码的方式,怎么将图的结构信息完美的融合进去的?
相关技术:
大型语言模型(LLMs)凭借其卓越的文本理解、推理和生成能力,以及泛化和零样本迁移能力,正在革新自然语言处理。尽管 LLMs 主要用于处理纯文本数据,对于包含复杂结构信息的非欧几里得数据(如图数据)仍然存在困难【49, 165】,但许多研究【17, 35, 74, 92, 102, 116, 130, 131, 173, 204】已经在该领域展开。这些论文主要通过将 LLMs 与图神经网络(GNNs)结合来增强对图数据的建模能力,从而提升在节点分类、边预测、图分类等下游任务上的表现。例如,Zhu 等人【204】提出了一种名为 ENGINE 的高效微调方法,通过侧结构将 LLMs 与 GNNs 结合,以增强图表示。与这些方法不同,GraphRAG 侧重于使用外部图结构数据库中的查询来检索相关图元素。 本文将详细介绍 GraphRAG 的相关技术和应用,这些内容未包含在以往关于 LLM 在图数据应用的综述中。
graph RAG 的现有实现方法:
使用图检素器来提取最佳子图 G,然后生成器根据检索到的子图生成答案。
图索引:
基本图的索引方法包括图索引、文本索引和向量索引。
- 图索引:在后续的检索阶段,可以采用经典的图搜索算法(例如 BFS 和最 短路径算法)来促进检索任务。
- 文本索引:将图数据转化为文本描述来优化检索过程,这些描述可能存储在单独的一套文本语料库中基于对应的文本检索技术,通过将三元组 子图等转化为文本的方式然后对文本做检索,或者在图上执行社区检测
- 向量索引:将图数据转换为矢量表示,提供检索效率
索引过程通常包括映射节点和边属性、 在连接的节点之间建立指针以及组织数据以支持快速遍历和检索操作。索引决定了后 续检索阶段的粒度,对于提高查询效率起着至关重要的作用。
混合索引: 上述三种索引方法均具有独特的优点:图形索引有助于轻松访问结构信息,文本索引简化了文本内容的检索,矢量索引可实现快速高效的搜索。因此,在实际 应用中,结合这些索引方法的混合方法通常比单独依赖一种方法更受欢迎。例如, HybridRAG [144] 同时检索矢量和图形数据以增强检索的内容。而 EWEK-QA [24] 同 时使用文本和知识图。
图检索:
在 GraphRAG 中,GNN 可用于获取检索阶段的图数据表示,并对检索到的图结构进行建模。
Tips:使用图数据数据
检索图数据面临两个重大挑战:
(1)爆炸性 候选子图:随着图大小的增加,候选子图的数量呈指数增长,需要启发式搜索算法来有 效地探索和检索相关子图。
(2)相似度测量不足:准确测量文本查询和图数据之间的 相似度需要开发能够理解文本和结构信息的算法
非参数检索器:一些传统的图搜索算法,例如 G-Retriever [55]通过结合边缘价格和优化 相关子图提取来增强传统的奖品收集斯坦纳树(PCST)算法。德莱尔等人。 [26]以及 Mavromatis 和 Karypis[֦֞֞]首先提取查询中提到的实体,然后检索与这些实体相关的 最短路径。
基于 LM 的检索器:判别式语言模型和生成式语言 模型。 Subgraph Retriever [196] 将 RoBERTa [107] 训练为检索器,它从主题实体扩 展并在顺序决策过程中检索相关路径。 KG-GPT [80]采用 LLM 来生成特定实体的 top-ᵃ相关关系集。沃尔德等人。 [176]利用微调的 GPT-֟2 来生成推理路径。 StructGPT [67] 利用 LLM 自动调用几个预定义的函数,通过这些函数可以检索并组合相关信息以协助进 一步推理。(实现数据)
基于 GNN 的检索器:GNN-RAG [119] 首先对图进行编码,为每个实体分配一个分数,然后根据阈值检 索与查询相关的实体。 EtD [99]迭代多次以检索相关路径。在每次迭代期间,它首先使 用 LLaMA160[ ֟] 选择连接当前节点的边,然后使用 GNN 获得新层节点的嵌入,用于 下一轮 LLM 选择。
Tips:大模型做图检索和路径生成依靠的是对标打靶吧,这样的方式没有意义吧。
许多方法提出了混合检索方法来提高检索效率和准确性。
例如,RoG 首先利用 LLM 生成规划路径,然 后从知识图中提取满足规划路径的路径。 GenTKGQA [44] 使用 LLM 从查询中推断关 键关系和约束,并根据这些约束提取三元组
图增强生成:
#检索增强
将查询增强分为查询扩展和查询分解,将知识增强分为合并和剪枝。(查询重写很少应用于 graphRAG)
知识融合: KnowledgeNavigator [50] 合并节点并 通过三重聚合压缩检索到的子图,以提高推理效率。在子图检索[196]中,从每个主题实 体检索顶部ᵅ路径以形成单个子图后,研究人员建议合并来自不同子图的相同实体以形 成最终子图。文等人。 [175]和李等人。 [89]基于关系合并检索到的子图,将满足相同 关系的头实体和尾实体组合成两个不同的实体集,最终形成关系路径。
知识修剪: 排序模型和 LLM 的直接压缩。
排序模型尤其是对于图的排序,比较好的科研点。[20]根据子图和查询之间的关系和细粒度概念的相似性对候选子图进行重新排序。塔恩 克等人。 [158]首先对 2 跳邻居进行聚类,然后删除与输入查询相似度得分最低的聚 类。安永等人。 [189]根据问题上下文和预训练语言模型计算的 KG 实体节点之间的相关 性得分来修剪检索到的子图。万吉特等人。 [171],江等人。 [70],古铁雷斯等人。 [51] 和罗等人。 [110]采用个性化 PageRank 算法对检索到的候选信息进行排序以进一 步过滤。刘等人。
PLM 对检索到的信息和查询之间的相似性进行评分,并根据相似性评分对检索到的路径 进行重新排序。 G-G-E[֠֡]首先将检索到的子图划分为几个较小的子图,然后比较每个 较小子图与查询之间的相似度。相似度较低的子图被删除,剩余的较小子图被合并成一 个较大的子图。此外,第三类方法提出了用于重新排名的新指标。例如,Mu-nikoti 等 人。 [124]提出了一个衡量检索到的文本块的影响和新近度的指标。 KagNet [97] 将检 索到的路径分解为三元组,并根据知识图嵌入(KGE)技术测量的置信度得分对路径重 新排序。基于法学硕士的方法擅长捕获复杂的语言模式和语义细微差别,这增强了它们 对搜索结果进行排名或更准确地生成响应的能力。为了避免引入噪音信息,Wang 等 人。 [171] 和 Kim 等人。 [80]建议通过调用 LLM 进行检查来修剪不相关的图数据。
#生成
由于 GNN 对图数据的强大表示能力,它们对于判别任务特别有效。(GNN 可以直接对图数据进行编码,捕获图结构中固有的复杂关系和节点特征。然后通过多层 感知器 (MLP) 处理该编码以生成预测结果。)
利用经典的 GNN 模型(例如 GCN [83]、GAT [162]、GraphSAGE [52] 和 GraphTransformers [147]),无论是原始形式还是修改后以更好地与下游任务保持一 致。例如,HamQA [30 ] 设计了一个双曲 GNN 来学习检索到的图数据的表示,它从查 询和图之间的相互层次信息中学习。孙等人[152]计算相邻节点的 PageRank 分数,并在 消息传递期间根据这些分数加权聚合它们。这种方法增强了中心节点从最相关的邻居节 点吸收信息的能力。 Mavromatis 和 Karypis [118] 将查询解码为多个向量(指令), 并通过使用 GNN 模拟广度优先搜索(BFS)来改进指令执行并使用自适应推理通过 KG 感知信息更新指令,从而增强指令解码和执行以实现有效推理。
LM 拥有强大的文本理解能力,这也使得它们能够充当生成器。在将语言模 型与图数据集成的情况下,需要首先将检索到的图数据转换为特定的图格式。
图数据格式化后,就会与查询结合起来并输入到 LM 中。对于仅编码器模型,例如 BERT [28] 和 RoBERTa [107],它们的主要用途是判别性任务。与 GNN 类似,这些模 型首先对输入文本进行编码,然后利用 MLP 将其映射到答案空间 [63,70,90]。另一方 面,编码器-解码器和仅解码器模型,例如 T138[ ֢]、GPT- ]127[ ֡ 和 LLaMA [31],擅长 判别和生成任务。这些模型在文本理解、生成和推理方面表现出色,使它们能够直接处 理文本输入并生成文本响应[32,73,75,112,119,154,164,171]。
混合模型:考虑到 GNN 在表示图数据结构方面的优势,以及 LM 对文本的强大理 解,本文将混合生成方法分为 两种不同的类型:级联范式和并行范式。
)级联范式。在级联方法中,该过程涉及顺序交互,其中一个模型的输出充当下一个模 型的输入。提示调整 [88,91,105,106] 是一种典型的方法,其中 GNN 通常用于编码检索到的图 形数据。随后将编码后的图形数据作为前缀添加到 LM 的输入文本嵌入中。然后,GNN 通过下游任务进行优化,以生成图数据的增强编码 [44,55,58,197]。
2)并行范式。另一方面,并行方法通过同时利用 GNN 和 LLM 的功能来运行。
在并行范例中,典型的方法涉及使用 GNN 和 LM 分别对输入进 行编码,然后通过整合这两种表示,或直接整合它们的输出响应。
另 一种方法涉及设计将 GNN 与 LM 集成的专用模块,使生成的表示能够封装结构和文本 信息。例如,张等人。 [199]引入了一个名为 GreaseLM Layer 的模块,它结合了 GNN 和 LM 层。在每一层,该模块使用两层 MLP 集成文本和图形表示,然后将它们 传递到下一层。类似地,ENGINE [204] 提出了 G-Ladders,它通过侧面结构将 LM 和 GNN 结合起来,增强下游任务的节点表示。
但当前 LLM 即使使用上述图例中的 那些转化后的图形语言也很难完全理解图形结构,因此,使用 GNN 将图表示为嵌入是一种有 前途的替代方案。核心挑战在于将图嵌入与文本表示集成到统一的语义空间中。如前 所述,当前的研究重点是利用即时调整方法。还有一些采用 FiD (Fusion-inDecoder) [65, 194] 的方法,首先将图数据转换为文本,然后使用基于 LM 的编码器 对其进行编码,并将其输入到解码器中 [29, 37, 193] 。
虽然图嵌入方法避免处理长文本输入,但它们面临其他挑战,例如难以保留特定实体名称等精 确信息以及泛化能力差。
TIARA [148]引入约束解码来控制输出空间并减少生成错误。
MindMap [175]不仅产生答案,还生成推理过程。
还有 另一类方法利用隐式中间监督信号来训练检索器。例如,NSM [54]采用双向搜索策略, 其中两个检索器分别从头实体和尾实体开始搜索。监督目标是确保两个检索器搜索的路 径尽可能接近地收敛。 KnowGPT [198]和 MINERVA [23]将选择相邻节点来构建路径或 子图视为马尔可夫过程。
工业界的开源项目:
微软 GraphRAG:https://github.com/microsoft/graphrag
蚂蚁 GraphRAG:https://github.com/eosphoros-ai/DB-GPT
Neo4j NallM:https://github.com/neo4j/NaLLM
Neo4j LLM Graph Builder:https://github.com/neo4j-labs/llm-graph-builder
NebulaGraph GraphRAG:https://www.nebula-graph.io/posts/graph-RAG
问答任务具体包括知识库问答(KBQA)和常识问答(CSQA)。
信息检索任务由实体链接(EL)和关系提取(RE)两类组成。
除了上述下游任务外,GraphRAG 还可以应用于自然语言处理领域的各种其他任务,例如事实验证、链接预测、对话系统和推荐。
根据不同的任务场景和索引类型,研究人员设计不同的检索粒度(即从图数据中检索相关知识的形式),可以分 为分成节点、三元组、路径和子图。每种检索粒度都有自己的优势,适合不同的实际场景。
-
首先使用预定义的模板将图数据的每个三元组转换为文本句子,然后采用文本 检索器来提取相关的三元组。然而,直接从图数据中检索三元组可能仍然缺乏上下文广 度深度,从而无法捕获间接关系或推理链。为了应对这一挑战,Wang 等人。 [164]建 议根据原始问题生成逻辑链,并检索每个逻辑链的相关三元组。
实现总结:
构建一个高质量、灵活更新、计算简单的大规模图谱代价很高,需要考虑性价比。
将文档生成图谱,需要通过实体识别、实体链接、关系抽取等步骤,误差很大。
使用 text2sql 进行图谱查询语句生成的难度很大,单跳尚可,多跳很难。
将已有 KG 作为一路召回最为简单,不带来额外检索压力:
将 KG 引入索引.会增加索引存储量以及检索消耗:
微软 GraphRAG 项目,索引丰富思路臃肿,但真实落地难度大
学会思考.学会搜索,一定要有思考过程和动手搜索能力
简单的开源实现:
llamaindex property graph abstractions
CCKS 知识图谱问答代表方案:(2022)https://zhuanlan.zhihu.com/p/507327202
抽取 Tool:
KnowLM: https: //github. com/ zjunlp/KnowLM(大模型抽取工具)
ChatlE:https: // arxiv. org /pdf / 2302 .10205.http: //124.221.16.143:5000(大模型抽取框架,先抽取实体列别再抽取实例)
UE: https: / /github.com/PaddlePaddle/PaddleNLP / tree /develop(提示类非大模型抽取工具)
-
1.微软 GraphRAG:
为了实现对文档的全局性搜索,因此把文档拆分的很细,并且每个模块构建了摘要,然后通过摘要 实体 文档的连接,构建了多层次化的图,然后还通过社区划分和嵌入加强这种丰富的层次索引。
其中的图增强和社区摘要技术:
其中社区摘要的引入,是因为借助全局搜索的策略来实现对整个语料库进行整体问题的推理而不是只有依据语义相似度去匹配,缺乏对信息的组织很难去处理诸如“数据中的前五个主题是什么”这样的问题
在实际的实现上,是指通过为每个文本区块,添加对应的元信息描述,在检索时对其进行召回然后将召回的实际对应区块作为上下文。
然后局部搜索就是通过查询语句中的实体去获取与之相关的子图,然后和文档的文本一起做增强。
Graph RAG 的核心就是两个图,一个是文档图谱,一个是文档内部的实体关系图谱。
2.HippoRAG:
考虑了实体的特异性
子图是如何召回的?是简单的几条链接扩展吗?
启用了实体特异性级别的信号,模拟人脑基于实体粒度的激活信号,对文档级别区块进行重要性排序。
这样的特异性设计是合理的吗?是符合人脑的吗,用 pagerank 这样的排序方式是否存在问题,过于客观了。
通过实体这一粒度聚合来反馈回文章作为重要性,这一思路无疑是相当有效的。这种细粒度的跨段落的关联无疑在相比向量层面的语义相似度召回更有效,同时对于全局比较的问题也提供了帮助,而相较于微软那种通过为节点增加摘要的方式在这个任务上性能可能有所不足。
3.KG 增强的一些应用
在医学研究领域,最新的发现对于学术和工业领域来说至关重要,但它们却被不断增加的文献语料库所掩盖。
为了解决这种信息过载问题,也就是一种长尾分布的问题。
rag 使用文本相似度的方式寻找相似文本,但是由于语料库中的数据不平衡,一些过度表示(出现频率过高)的旧主题或概念可能会垄断最相似的结果,阻碍了检索器寻找更新的发现,从而遗漏了很多相关信息。
本文提出了一种新的信息检索方法,利用知识图谱对这些过度表示的概念进行下采样,来缓解信息过载问题。
提出的基于知识图的 IR 方法将文本块映射到图节点和边,并在问题中使用实体识别来检索链接已识别实体的最短路径的文本。
因此对这些主题定义对应的 cluster,然后对其中过度的那些 cluster 进行欠采样。
本文这里没有直接采用文本的那种方式去构建这些集群,而是利用三种生物医学实体(基因、疾病和化合物)为中心,来定义 cluster。
为了解决时效性和影响力之间的权衡问题,本文使用了 Pareto 前沿方法。Pareto 前沿是一种多目标优化技术,能够在多个目标之间找到一个平衡点,来综合考虑文本块的时效性和影响力。
时效性通过文本块的发布时间来衡量,而影响力则通过相关文献的引用总数来衡量。
A.通过提取实体 (NER) 和链接实体 (RE) 的关系类型来注释科学文章。
B.包含 1+ 个实体的每个句子都映射到知识图谱上,无论是在链接上,如果它包含两个在语义上链接的实体(+ 符号),还是在其他实体(× 符号)上。
使用混合检索的方法,将语义相似度和知识图谱优先度混合得到一个分数。通过评分和排序机制,可以对文本块进行下采样,即从大量的文本块中选择出最具代表性和相关性的文本块。这样做的目的是为了在信息过载的情况下,确保检索到的信息既全面又具有代表性,同时避免某些过度代表的主题垄断检索结果。
文档-》文档级别图谱()+ 三元组-〉
最后用大模型去做减枝,剪枝的三种方式
关键点还是实体抽取和子图查询
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于