今天是2024年12月11日,星期三,北京,天气晴。
今天,我们继续来看最近GraphRAG进展,包括Mixture-of-PageRanks、SiReRAG、KG-Retriever三个主要工作。
其中分别对应于引入层次索引结构和混合查询机制、兼顾相关性和结构重要性、融合相似树和相关树,整个GraphRAG的思路进一步细化,也朝着Graph图结构本身(而非KG本身)越走越远了,这是一个卷的趋势,卷的是图,不是图谱。
供各位参考,多思考,多总结,多实践;
一、引入层次索引结构和混合查询机制的KG-Retriever
一种基于知识图谱的RAG框架KG-Retriever,用于解决复杂检索任务中的信息碎片化问题,说到这个碎片化问题,最好的解决方式就是建立关联。
《KG-Retriever: Efficient Knowledge Indexing for Retrieval-Augmented Large Language Models》,https://arxiv.org/pdf/2412.05547的核心,叫做层次索引图(HIG),包含知识图谱层和协作文档层的层次索引图(HIG)来增强文档内和文档间的信息连接,这个其实跟KAG里里面的很像。
在知识图谱层,LLMs提取文档中的实体和关系,增强单个文档的内部信息结构化,这块依旧是对应的llm提示抽取;
在协作文档层,文档级图基于语义相似性(利用Roberta-large获取embedding)建立连接,提高跨文档的知识相关性。
通过这种双层结构,KG-Retriever利用图结构的关联性,加强文档内部的信息组织和文档之间的知识关联,从而提高检索效率和信息整合能力。
重点看看其实现思路:
既然有了这种索引结构,那么接下来就是进行检索。
包括文档层匹配和知识图谱层匹配两种。
文档层匹配基于查询和文档的语义相似性,识别出与查询最相似的文档。这里,通过文档级别的协作策略(如One-Hop、Attentive或Multi-Hop Collaboration)获取与查询相关的候选文档。
One-Hop Collaboration(一跳协作) 比较粗暴,使用预训练的语言模型(如Roberta-large)对查询进行编码,得到查询的语义向量。然后,计算查询与文档集的语义相似度,识别出与查询最相似的前N个文档(Top-N),然后将这些Top-N文档在文档图中的邻居文档也收集到候选集中。这些邻居文档可能不直接与查询相关,但它们与高度相关的Top-N文档相邻,可能包含间接相关或补充的信息,最终的候选集包括Top-N文档及其邻居文档。
Attentive Collaboration(注意力协作) 则加了个注意力过滤,同样使用预训练的语言模型对查询进行编码,得到查询的语义向量。然后,计算查询与文档集的语义相似度,识别出Top-N文档。接着计算每个邻居文档与Top-N文档的语义向量的注意力权重(cosine similarity)。最终的候选集包括Top-N文档及其通过注意力机制筛选后的邻居文档。
Multi-Hop Collaboration(多跳协作)则使用预训练的语言模型对查询进行编码,得到查询的语义向量。然后,计算查询与文档集的语义相似度,识别出Top-N文档。注意,这里变了,不仅收集Top-N文档的一跳邻居,还收集多跳邻居。多跳邻居是通过多次跳跃扩展得到的邻居文档。然后计算每个多跳邻居文档与Top-N文档的注意力权重(multiply attention weights in different hops),即在不同跳跃中的注意力权重的乘积。最终的候选集包括Top-N文档及其通过多跳协作和注意力机制筛选后的邻居文档。
所以可以看到,其本质就是在扩召回;
协作文档层匹配则利用邻近文档提供间接相关信息,在获取的候选文档中,进一步匹配这些文档中的实体节点,也就是并通过实体级匹配提取与查询相关的知识图谱三元组,这块就是传统的三元组召回,没啥其他东西。
所以,再总结下,其结论,去除实体图或文档图均导致模型性能显著下降,说明这种结构是由增益的。
二、兼顾相关性和结构重要性的Mixture-of-PageRanks方案
这个很有趣,RAG既需要相关性,也需结构重要性。RAG系统必须以平衡与查询的相关性以及块在文档内的(与查询无关的)结构重要性的方式分配重要性,例如,描述故事中主要事件的文本块即使与查询内容无关(例如,“总结这本书”),也会具有很高的结构重要性。
回顾下长上下文任务的RAG方法。对于许多长上下文任务而言,按时间顺序排列文本块(而不是按排名顺序)是必要的。
标准的最近邻RAG(顶部)检索与查询最相似的项目(查询相关性用红色嵌入表示)。
基于PageRank的检索器使用可以廉价计算的相似性矩阵来表示文本块之间的关系。
PageRank(底部)检索根据图结构具有最高重要性的项目(结构重要性用蓝色表示)。
个性化PageRank(中间) 平衡了查询相关性与结构重要性,最初由谷歌搜索使用,提供一种原则性的方法,用于结合查询相关性与结构重要性,并在检索过程中控制两者之间的影响。
所以,《Mixture-of-PageRanks: Replacing Long-Context with Real-Time, Sparse GraphRAG》,https://arxiv.org/pdf/2412.06078,提出基于PageRank的混合检索算法,称为混合PageRank(MixPR),用于解决长上下文任务的高效处理问题(核心就是剪枝,通过重要性来做,所以自然而然pagerank就登场了),动态调整PPR中的超参数以适应不同的查询/任务类型。
因此,核心在于个性化PageRank(PPR),这个用来做文档的重要性,在hippo-rag中就有提到;
来自邻居和/或重要邻居的更多进入连接倾向于具有更高的PR分数。通过这种方式,PR分布捕获了图中节点的结构重要性
其中,π是最终分布,A是相似度矩阵,α是一个权重参数,p是个性化向量。通过调整α,可以控制查询相关性和结构重要性的影响。随着α→0,PPR接近PR,排名变得越来越数据独立和结构依赖。随着α→1,分布变得越来越数据依赖和结构独立,也就是更喜欢用相似性。
因此,这样就有了方向,对于局部检索任务(如问答),较大的α值更有效;而对于全局检索任务(如总结),较小的α值更有效。当然,这个参数调整不容易,可以使用路由器,根据任务类型动态调整α值,LLM以上下文的前两句和第一句作为输入,并判断任务是要求局部还是全局检索。
那么来了,怎么做,肯定是要构图,构建文本图。将输入的长文本分割成多个文本块(chunks),每个文本块作为一个节点。根据文本块之间的相似性或语义关系,构建节点之间的边。但这里的分块不能太长,所以,首先将文本分割成句子。然后沿换行符将任何大于N个单词的分块进行分块。如果任何分块仍然大于N个单词,则将这些分块沿着单词边界分成大致相等长度的更小分块,将所有实验的N设置为32。
然后对于每个节点,计算其新的PageRank值。
在检索阶段,将查询也分割成文本块,并为每个文本块计算其在图中的PageRank值,计算查询文本块与图中每个文本块的相似性。根据稀疏混合PageRank值和相似性得分的综合评分,对图中的文本块进行排序,选择得分最高的项目作为检索结果。
其中,为了提高计算效率,使用稀疏矩阵来存储和操作嵌入向量,将文本块嵌入到向量空间中,进行L-2归一化,然后构建邻接矩阵。
三、融合相似树和相关树的SiReRAG策略
这个又有一个新的点,又把相关性切分成相似性跟相关性,现有的索引方法要么基于语义相似性(相似性),要么基于相关信息(相关性),这种细化是好事儿;
问题来了,怎么做界定:
相似性定义为文本片段的语义距离,相关性定义为基于实体和命题等信号文本之间的连接程度。索引相似和相关信息比索引单一类型的信息更便于实现更全面的知识整合;
如图1所示,一个涉及两步推理的复杂问题需要检索和综合相关实体块。实体1和2块包含相似信息,而实体2和3块包含相关内容。由于仅基于实体1和2(或实体2和3)合成信息会导致错误答案的概率增加,因此需要一种考虑相似性和相关性的索引方法来最大化检索多步问题相关的知识。
所以,如果要兼顾这两个方面,最直接的方式,就是分别建模,分别建树;
因此,《SiReRAG: Indexing Similar and Related Information for Multihop Reasoning》,https://arxiv.org/pdf/2412.06206,就很自然的来来了,核心是相似性树的构建。
可以看看其中的几个核心点,搞了两棵树;
一个是相似性树的构建,遵循RAPTOR的方法,通过递归摘要构建相似性树。
使用预训练embedding模型(如OpenAI text-embedding-3-small)获取所有文本块的表示,使用高斯混合模型(GMM)对所有文本块进行软聚类,假设候选段落可以属于多个簇。
一个是相关性树的构建,建成这个样子:
核心是这个,使用大型语言模型(如Meta-Llama-3-70B-Instruct 2)从每个文本块/文档中提取实体(例如,“十四行诗110”和“威廉·莎士比亚”)和细粒度命题(例如,“十四行诗110是威廉·莎士比亚写下的154首十四行诗之一。”)。这里的命题,每个命题都是一个原子表达式,其中包含了一个以自然语言呈现的事实性陈述,跟许多地方讲的claim声明是一个东西。
然后将这些命题通过实体分组,简单地将它们与块/文档中的原始顺序连接起来。这些命题聚合包含了相关信息,因为它们提到了共享的实体。然后,在这些聚合命题之上构建了带有软聚类的递归摘要。最后,通过将每棵树中的节点扁平化来进行索引,以便于检索。
为啥要用命题,其本质上是检索粒度概念的外延,有多种不同的文本粒度(实体、命题、文本块和摘要)来索引数据。
而在检索阶段,可以再看RAPTOR对应的检索方式。
总结
RAPTOR通过递归摘要构建树结构,HippoRAG利用海马体索引理论进行深度知识整合,GraphRAG则构建实体引导的知识图谱,这些都是前人的一些探索。
本文介绍了最近GraphRAG进展,这几个工作分别体现了几个思想,即引入层次索引结构和混合查询机制、兼顾相关性和结构重要性、融合相似树和相关树,整个Grap hRAG的思路进一步细化,也朝着Graph(而非KG本身)越走越远,其解决的问题,都是更好的召回、更好地降成本。
参考文献
1、https://arxiv.org/pdf/2412.05547
2、https://arxiv.org/pdf/2412.06078
3、https://arxiv.org/pdf/2412.06206
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入