微信扫码
与创始人交个朋友
我要投稿
今天是2024年10月13日,星期日,北京,天气阴。
关于RAG长文本进展,长文本LLMs与RAG相遇:解决长输入的RAG挑战,《Long-Context LLMs Meet RAG: Overcoming Challenges for Long Inputs in RAG》:https://arxiv.org/pdf/2410.05983值得一看,其探讨了在检索增强生成(Retrieval-augmented generation, RAG)系统中使用长上下文大型语言模型(Long-Context LLMs)所面临的挑战。
先说其中的一些发现:
一个是性能与检索段落数量的关系:研究发现,对于许多长上下文LLMs,随着检索段落数量的增加,生成输出的质量先提高然后下降。这与之前的观点相反,即认为更大的检索集会包含更多相关信息,可能会提高性能。
一个是“难负例”的影响:论文识别出检索到的“难负例”(hard negatives)对LLMs生成性能的有害影响,并提出这是性能下降的一个关键因素。
一个是对应的改进方法:为了减轻这种影响并增强基于长上下文LLM的RAG的鲁棒性,提出了三种方法来提高长上下文LLMs在RAG中的鲁棒性:(1)基于检索重排序的无需训练的方法,(2)隐式调优以增强对难负例的鲁棒性,以及(3)带有中间推理的显式调优以识别相关性。
这个报告还不错,看看会有收获,供大家参考并思考。
1、检索上下文大小对RAG性能的影响
1)研究问题
长上下文LLMs能够将更多的检索段落纳入RAG系统。一个关键问题是:更多的检索上下文是否总能转化为更好的性能?
2)实验设置
使用不同的检索器(如BM25和e5)和长上下文LLMs(如Gemma-7B-Chat、Gemma-2-9B-Chat、Mistral-Nemo-12B-Instruct和Gemini-1.5-Pro)在Natural Questions(NQ)数据集上评估RAG系统的性能,并系统地变化每个检索器检索的段落数量。
3)观察结果
增加检索段落的数量最初提高了性能,但随后导致了性能的急剧下降或趋于平稳。这种性能退化在使用召回率更高的检索器(如e5)时更为明显。
因此,增加检索上下文大小在RAG中的有效性取决于检索器的强度。使用强检索器时,性能呈现出“倒U型”模式,而使用弱检索器则显示出更一致(尽管可能有限)的改进。
2、检索质量和LLM能力之间的相互作用:
1)研究问题
观察到的性能瓶颈是源于检索器识别相关信息的能力限制,还是源于长上下文LLM有效利用检索上下文的能力限制?
2)实验设置
分析RAG性能与检索质量(召回和精确度)之间的关系,使用Gemma-2-9B-Chat LLM和e5及BM25检索器。
3)观察结果
增加检索段落的数量一致地提高了召回率但降低了精确度,无论使用哪种检索器。RAG系统的总体准确性低于检索召回率,表明即使检索上下文中存在相关信息,LLM也可能无法生成正确答案。
因此,不相关的检索段落(“难负例”)对LLMs的性能有不利影响。即使在检索到相关信息的情况下,难负例的存在可能会误导LLMs,阻碍它们生成准确答案。
3、难负例对长上下文LLM评估的重要性:
1)研究问题
在长上下文RAG场景中,大量的知识源检索需要检索众多段落,这增加了包含相关信息(即获得高召回率)的可能性。然而,这也增加了引入难负例的风险。这引发了两个关键问题:(1)当前的长上下文LLMs对这些难负例的鲁棒性如何?(2)难负例的影响是否随着使用的检索器而变化?
2)实验设置
通过控制实验,研究难负例对长上下文LLM性能的影响。使用不同的方法(如e5、Contriever、BM25和随机抽样)检索难负例,并将单个真实段落与不同数量的难负例结合,任务是让LLMs基于此上下文回答查询。
3)观察结果
增加难负例的数量通常会导致RAG答案准确性下降。检索器的强度与难负例的难度直接相关。LLMs在处理来自更强检索器(例如e5)的难负例时比处理来自较弱检索器(例如BM25)或随机抽样的难负例时更加困难。
一种不需要额外训练的改进方法,即检索重排序(Retrieval Reordering)。
这种方法旨在通过调整检索结果的顺序来提高长上下文LLMs在RAG系统中的性能,特别是针对“难负例”对模型性能的负面影响。
1、“难负例”的影响
“难负例”对长上下文LLMs在RAG中的性能有显著的负面影响。这些不相关的检索结果可能会误导模型,导致生成不准确的答案。
2、检索重排序策略
根据检索分数对检索到的文档进行重新排序。这种方法利用了LLMs处理输入序列时的“中间遗忘”现象,即模型倾向于更多地关注序列开始和结束部分的信息,而较少关注中间部分。
通过将得分较高的检索文档放在输入序列的开始和结束位置,可以引导LLMs的注意力集中在更相关的信息上,从而减少难负例的影响。
3、检索重排序算法
论文提供了检索重排序的具体算法,该算法根据检索分数对文档进行排序,并按照特定的顺序将它们插入到输入序列中。这种方法旨在通过位置工程来优化LLMs的性能,与提示工程(prompt engineering)相辅相成。
4、实验结果
通过实验验证了检索重排序策略的有效性。实验使用了不同的检索器(如e5和BM25)、长上下文LLMs(如Gemma-2-9B-Chat和Mistral-Nemo-12B-Instruct)以及不同的数据集(如NQ和PopQA)。
结果显示,当检索到的文档数量较大时,检索重排序策略显著提高了RAG的准确性,并且一致性地优于原始顺序。这表明,通过战略性地放置文档,检索重排序可以减轻LLMs在处理大量检索结果时面临的挑战。
如何通过数据增强的微调方法来提高长上下文大型语言模型(LLMs)在检索增强生成(RAG)任务中的鲁棒性。
1、隐式提高LLM鲁棒性的微调
这种方法通过在微调阶段将查询和检索文档(包括可能的噪声)一起呈现给LLMs,使模型能够在训练中接触到多样化的检索上下文,从而学习在噪声存在的情况下有效地识别和利用相关信息。
2、微调方法的评估
为了评估RAG特定微调方法的有效性,研究者们使用包含NQ、WoW、Fever和MMLU等多种数据集的混合数据对Gemma-2-9B-Base、Mistral-Nemo-12B-Base和Gemini-1.0-Pro等模型进行了微调,并在多个未见过的数据集上进行了评估,如TriviaQA、PopQA、HotpotQA等。
3、微调方法的效果
实验结果表明,与仅使用聊天模型和直接在问答对上进行标准监督微调(SFT)的基线模型相比,经过RAG特定数据微调的模型(RAG FT)在所有评估的数据集上都表现出一致的性能提升。
这表明RAG FT不仅使LLM能够在训练中“记忆”知识,还使其能够在推理过程中有效地从检索上下文中“提取”相关信息。
4、通过中间推理增强相关性识别的微调:
除了隐式微调方法外,还有一种在微调过程中加入中间推理步骤的方法。这种方法要求LLMs在生成最终答案之前,先生成一个推理段落,明确识别出与给定查询相关的检索文档。
在训练期间,LLMs会被提供token的推理段落,以指导其学习过程。在推理期间,LLMs被指示首先生成推理段落,然后利用这一分析生成答案。这种方法旨在显式地提高LLMs从检索上下文中的噪声中识别相关信息的能力,从而提高其在RAG中的总体性能。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-22
RAG技术在实际应用中的挑战与解决方案
2024-11-22
从普通RAG到RAPTOR,10个最新的RAG框架
2024-11-22
如何使用 RAG 提高 LLM 成绩
2024-11-21
提升RAG性能的全攻略:优化检索增强生成系统的策略大揭秘 | 深度好文
2024-11-20
FastGraphRAG 如何做到高达 20%优化检索增强生成(RAG)性能优化
2024-11-20
为裸奔的大模型穿上"防护服":企业AI安全护栏设计指南
2024-11-20
RAG-Fusion技术在产品咨询中的实践与分析
2024-11-19
构建高性能RAG:文本分割核心技术详解
2024-07-18
2024-05-05
2024-07-09
2024-07-09
2024-05-19
2024-06-20
2024-07-07
2024-07-07
2024-07-08
2024-07-09
2024-11-06
2024-11-06
2024-11-05
2024-11-04
2024-10-27
2024-10-25
2024-10-21
2024-10-21