如何引入chunk层级优化RAG性能:从树结构RAPTOR到GEM-RAG加权图方案解读

一、GEM-RAG方案-基于树结构RAPTOR方案再回顾

关于RAG进展,为了解决之前chunk平铺的问题,对文本进行层次化组织的方法受到关注,如RAPTOR《Raptor: Recursive abstractive processing for tree-organized retrieval》(https://arxiv.org/abs/2401.18059)

img

这个工作通过它们的向量嵌入递归地对文本块进行聚类,并生成这些聚类的文本摘要,从下往上构建一棵树。聚在一起的节点是兄弟节点;父节点包含该聚类的文本摘要。

1、构图部分

整个构建过程的目的是为了创建一个能够表示文本在不同层次上的结构,从而在不同的抽象层次上有效地回答各种问题。RAPTOR通过递归地聚类和总结,生成了一个分层的树形结构,该结构能够在处理查询时加载代表文本不同层次的文本块。

1)分割文本:将检索语料库分割成长度为100个token的短文本块,这与一些传统的检索增强技术相似。如果一个句子超过100-token的限制,它会完整地移动到下一个文本块,这样做是为了保持每个文本块内文本的上下文和语义连贯性。

2)嵌入文本块:使用基于BERT的编码器(如SBERT)对这些文本块进行嵌入,形成树结构的叶节点。

3)聚类算法:为了将相似的文本块分组,使用聚类算法。聚类后,使用语言模型对这些分组的文本进行总结。其中使用软聚类,允许节点属于多个聚类。使用UMAP(Uniform Manifold Approximation and Projection)进行降维,以解决高维空间中距离度量可能表现不佳的问题,并通过贝叶斯信息准则(BIC)来确定最佳聚类数目。

4)重复嵌入和聚类:对聚类后的文本总结再次进行嵌入,然后重复聚类和总结的过程,直到无法进一步聚类为止,从而形成从底层向上的分层树结构。

5)构建树:这个过程从叶节点层开始,通过递归地聚类和总结形成更高层次的节点,直到达到根节点。并使用语言模型(如gpt-3.5-turbo)对每个聚类中的节点进行总结,将大量文本转换成简洁、连贯的总结。

2、检索实现

可以回顾下其检索的实现

“Querying” 部分主要介绍了两种通过RAPTOR树结构进行检索的方法:树遍历(tree traversal)和折叠树(collapsed tree),折叠树方法通常表现更好,因为它提供了更大的灵活性,能够根据问题的需要检索到正确粒度的信息。树遍历方法虽然也能工作,但可能不如折叠树方法那样灵活和有效。

1)树遍历(Tree Traversal)

树遍历方法从树的最顶层(根节点层)开始,逐层向下进行,每一层都选择与查询向量最相关的节点。

img

具体步骤如下:

  1. 开始于根层:计算查询向量与根层所有节点嵌入的余弦相似度。
  2. 选择顶层节点:基于余弦相似度得分,选择前k个最相似的节点,形成节点集合 ( S_1 )。
  3. 逐层选择:对 ( S_1 ) 中的每个节点,考虑其子节点,并计算查询向量与这些子节点嵌入的余弦相似度。
  4. 形成新节点集合:从子节点中选择余弦相似度得分最高的k个节点,形成新的节点集合 ( S_2 )。
  5. 重复过程:重复这一过程,直到达到叶节点层。
  6. 连接结果:将所有选择的节点集合(从 ( S_1 ) 到 ( S_d ))连接起来,形成对查询的上下文信息。

通过调整遍历的深度 ( d ) 和每层选择的节点数 ( k ),树遍历方法可以控制检索信息的详细程度和广度。

2)折叠树(Collapsed Tree)方法

折叠树方法提供了一种更简单的检索信息方式,它将多层树结构折叠成单层,从而在所有层上同时考虑节点。

img

具体步骤如下:

  1. 折叠树:将整个RAPTOR树折叠成单层,形成一个新的节点集合 ( C ),包含原树的所有层的节点。
  2. 计算相似度:计算查询向量与折叠后集合 ( C ) 中所有节点嵌入的余弦相似度。
  3. 选择节点:选择余弦相似度得分最高的k个节点,直到达到预设的最大token数,确保不超过模型的输入限制。

折叠树方法的优点在于它提供了更大的灵活性,通过同时搜索所有节点,可以检索到适合特定问题的粒度信息。然而,这种方法需要对树中所有节点执行余弦相似度搜索,这可能需要更高效的相似度搜索库,如FAISS。

二、GEM-RAG实现思路-基于加权图的方案

紧接着,我们来看下基于图地方案,GEM-RAG: 图形主成分记忆增强检索生成,《GEM-RAG: Graphical Eigen Memories For Retrieval Augmented Generation》:https://arxiv.org/pdf/2409.15566,介绍了一种名为GEM-RAG(Graphical Eigen Memories for Retrieval Augmented Generation)的新方法,

该方案旨在通过改进大型语言模型(LLMs)的记忆编码、存储和检索能力,来提升其作为人工智能代理的操作能力,并使其能够更好地适应特定领域,其设计灵感来自人类如何基于信息的相关性和实用性来编码和检索信息

先说具体结论,GEM-RAG 方法虽然在提高性能方面表现出色,但在实际应用中需要考虑其计算成本和复杂度,并根据具体任务需求进行适当的调整和优化。GEM-RAG方法的优势和可能的局限性可做个总结:

从计算复杂度上, GEM-RAG 在构建记忆图时采用了谱分解技术,其计算复杂度为 O(n^3),其中 n 是节点的数量。这意味着随着节点数量的增加,所需的计算资源会显著增加。

从成本上, 生成实用问题需要调用大型语言模型(LLM),这可能涉及显著的计算成本或经济成本,具体取决于数据集的大小和每个节点生成的实用问题的数量。

在预处理上, 虽然图的构建是预先计算的,因此在大多数情况下额外的成本是可以接受的,但是在数据更新频繁的场景下,可能需要频繁地重新构建图,这会带来额外的开销。

权衡调整方面, GEM-RAG 涉及的权衡,如生成实用问题的数量和使用的谱成分的数量,需要针对特定任务进行调整。例如,在 QuALITY 数据集的实验中,发现使用两个谱成分和五个实用问题可以获得最佳性能。

灵活性上, GEM-RAG 可以适应不同的任务需求,通过调整超参数来优化性能。

独立性上, 生成的图形特征记忆(GEM)不仅是用于 RAG 的方法,还可以作为一个独立的工具,用于任何 LLM 的 QA 工作和数据可视化。

总的来说,

再看GEM的具体实现方式:

下图提供了GEM-RAG(Graphical Eigen Memories for Retrieval Augmented Generation)构建图和检索流程的概览,GEM-RAG 图构建和检索流程的概览:

img

给定一个文本语料库

文本首先被分组成文本块。然后GEM-RAG使用大型语言模型(LLM)为每个文本块生成实用问题,这里的实用问题指的是可以利用该文本块作为上下文来回答问题。接下来,GEM-RAG利用这些实用问题及其嵌入向量构建一个加权图。然后,使用图的谱分解生成摘要节点,用特征向量表示文本的不同正交模式或“特征主题”。对于检索,GEM-RAG 嵌入问题或提示,并在图中搜索最优的节点或上下文以返回

1、图构建

1)文本分块: 给定一个文本语料库,首先将其分成多个文本块,文本分块是RAG中的标准做法,将感兴趣的文本语料库C分割成块,{CHUNK1…CHUNKn},其中每个块CHUNKi包含一些T个标记。
2)生成实用问题

给定每个文本CHUNKi,提示一个LLM生成一些m个实用问题。这可以由一个函数Q表示,它接受一个文本块和整数m,并生成m个实用问题。形式上,给定CHUNKi,计算Q(CHUNKi,m)给出一组实用问题{qi1,qi2,…,qim}。

此外,还量化每个实用问题彼此之间或与提示的相似性img

3)构建加权完全图:使用这些实用问题及其嵌入向量来构建一个加权图。图中的每个节点代表一个文本块,边的权重基于实用问题的相似性。

更形式化地,设G=(N,E)是记忆图。让节点由以下给出:N={CHUNK1,CHUNK2,…,CHUNKK},其中每个节点t有实用问题Qt={qt1,qt2,…,qtm},和基础文本嵌入vt。

然后,对于(t,v)∈N×N,并且对于每个i∈{1,2,…,m},生成一个边在t和v之间,权重为∑mi=0SIM(vti,vv)。可以使用任何函数来计算相似性 ,实际上考虑标准的余弦相似性,即,SIM(a,b)=a·b/||a||||b||。

img

4)主题总结:通过图的谱分解生成摘要节点。谱分解的结果是一组特征向量,每个特征向量代表了文本的不同正交模式或称为“特征主题”(eigenthemes)。

直观地说,在这种情况下,每个特征值及其对应的特征向量揭示了图中的一个不同的“主题”或概念维度。通过总结每个特征向量分量的顶部组件节点,使用LLM,可以了解图中最显著的关系和概念群集。

img这块比较有趣,可以详细看看:

更具体地说,设S=(sij)n×n为图的相似性矩阵,其中sij是节点i的每个实用问题与节点j之间的mSIM值的总权重。

通过将每个sij附加到加权边eij,可以将相似性矩阵S映射到记忆图G上。因此,可以通过分析G的属性和行为来更好地理解文档中不同文本片段之间的关系。

由于不同文档具有不同的连通性和节点中心性,谱也将在不同的尺度上。为了更好地量化每个节点的影响力而不考虑度偏差,将S转换为归一化的图拉普拉斯L的变体,其中L=D(-1/2)(S-I)D(-1/2),D=diag(di)是度矩阵,I是单位矩阵。

然后通过解L⃗x=λ⃗x来进行谱分解。随着结果的特征值λ1,λ2,…,λn按其大小的非增顺序排列。相应的特征向量⃗x1,⃗x2,…,⃗xn表示主题。然后,对于每个特征向量⃗xk,选择顶部的e个分量,xk1,xk2,…,xke,代表第k个主题的最重要节点。

然后,提示一个LLM,给定与xk1,xk2,…,xke相关的文本段落,来总结文本,总结高层次的信息。

随着产生的总结文本,将其作为新节点引入到图中。最后,产生实用问题的嵌入,实用问题的嵌入,并且按照先前描述的方式将其连接到图中的每个其他节点。

5)检索:对于给定的问题或提示,GEM-RAG首先嵌入问题或提示,然后在图中搜索最优的节点或上下文以返回。

img

2、检索部分

检索部分很直接,大致流程为:将问题或提示嵌入到向量空间中;在构建好的图(GEM)中搜索与嵌入的问题或提示最相似的实用问题。最后,

img

最后效果还不错,如下:

img

总结

本文主要回顾了GEM-RAG、基于树结构RAPTOR方案,并推荐了一个很有趣的大模型矩阵运算示意图,这些都对我们理解其技术细节有帮助。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值