今天是2025年02月01日,星期六,赣州,天气晴。
今天是大年初四,各位继续春节快乐。
我们继续来看RAG,来看看引入多层级粒度chunk的RAG方案,主要应对chunk切分的问题;一个是针对问题分解,引入对齐机制的ARM方案。读读看,都会有收获。
专题化,体系化,会有更多深度思考。大家一起加油。
一、引入多抽象层级chunk粒度的RAG方案
现有RAG的方法通常依赖于固定长度的块(chunk) 来支持问答,这可能导致信息的片段化和不完整性;检索过多的信息可能导致 “中间迷失” 问题,并超过token限制。所以,常用的方式是chunk,即块优化策略,如固定大小、递归、滑动窗口等。
当然,也有一种新的做法,那就是在级别上做文章,所以可以看看最近的工作《Multiple Abstraction Level Retrieve Augment Generation》(https://arxiv.org/pdf/2501.16952)。
其核心思路在于如下思路:
在索引方面,首先,将参考文献文档预处理成四个抽象层次的块,包括文档级块、节级块、段落级块和多句子级块。
对于文档级和节级块,使用map-reduce方法生成摘要信息,以减少长度并集中注意力。文档级块直接使用从文档中提取的原始内容。节级块首先对每个段落生成摘要,然后将这些段落摘要聚合成节级摘要,最后将这些节级摘要聚合成文档摘要,这些摘要信息用于生成节级块的内容。
在检索方面,使用Linq-Embed-Mistral嵌入模型生成问题和文本块的嵌入向量,并通过余弦相似度计算相似性。通过softmax方程将相似性分数转换为概率,选择累积概率不超过预设阈值的文本块。
在生成方面,将检索到的文本块与输入问题一起输入到Vicuna-13B-v1.3模型中,生成最终答案。
在效果方面,在糖科学领域的问答数据集上表现出色,相比于传统单层次RAG方法,答案正确性提高了25.739%。
二、引入对齐机制的ARM检索方案
也是最近的工作,现有的基于大模型(LLM)的问答系统(RAG)在分解问题时,缺乏对可用数据的了解和数据的组织结构,导致检索性能不佳;迭代式RAG方法虽然与数据集交互,但每一步都依赖于前一步的结果,效率低下,且容易出现推理偏离现象。
所以,可以看一个思路,也是最近的工作《Can we Retrieve Everything All at Once? ARM: An Alignment-Oriented LLM-based Retrieval Method》(https://arxiv.org/pdf/2501.18539)这个工作提出基于LLM的对齐导向检索方法ARM,用于解决复杂开放域问题的检索问题。
具体的,包括如下几个步骤:
首先,将表格和段落(以及其他模态的数据对象,如图像)统一视为文本数据对象。对每个序列化的数据对象进行分块,计算每个块的嵌入,并使用N-gram集合进行表示和索引。
其次,指导LLM生成一个包含多个中间步骤的推理过程。第一步是从用户问题中独立提取关键词,来确定回答问题所需的关键信息。然后,通过约束解码,使用数据对象中的N-gram来重述这些关键词。约束束解码从解码一个左括号开始,直到解码一个右括号结束,表示一个关键词的对齐完成。
然后,进行信息对齐,将每个N-gram解码的结果作为查询,使用BM25算法在数据集中搜索相关的文本块。然后计算用户问题与每个序列化对象之间的嵌入相似度,并将其与BM25分数结合,形成最终的排序分数。最终,根据排序分数选择最相关的对象,形成基础搜索对象集合,作为LLM继续生成“推理过程”的基础。
接着,进行结构对齐,用于推理一组完整的搜索对象及其组织,以便匹配所需的信息并完全回答问题。结构对齐问题公式化为一个混合整数规划(MIP)问题,目标是从给定的搜索对象列表中选择k个对象,以最大化问题与选定对象之间的相关性和选定对象之间的兼容性。这里具体执行时,
最后,将MIP求解器生成的每个草稿序列化为字符串,并通过约束解码注入到LLM的解码过程中。每个草稿包含选定的对象及其连接关系,然后LLM在解码过程中进行自验证,检查选定的对象是否覆盖问题的不同方面且连接正确。使用约束解码确保事实性。对每个草稿,使用束搜索生成多个推理过程,通过模型置信度(如logits的平均值)来衡量每个对象的权重和投票数。最终,对象的置信度是其加权投票数和投票数的归一化值的加权和。最后,根据置信度选择最终的数据对象集合作为答案。高置信度的对象更有可能被选中,从而确保最终答案的质量和准确性。
举一个具体的例子来看:
但是,也正如该工作所述,在大多数情况下表现出色,但在某些极端情况下,模型可能会忘记之前迭代中生成的信息,或者陷入相似关键词的循环搜索,即使已经检索到了相关对象。
总结
本文主要介绍了两个关于RAG的工作,一个是引入多层级chunk粒度的RAG方案,一个是基于LLM的对齐导向检索方法ARM,用于解决复杂开放域问题的检索问题。两个核心都是其中的流程设计。
参考文献
1、https://arxiv.org/pdf/2501.13958
2、https://arxiv.org/pdf/2501.14342
(文:老刘说NLP)