近年来,随着大模型(LLMs)逐步登上舞台,许多研究人员都在探索如何让它们更好地处理长上下文内容,特别是在那些需要大量知识支撑的任务中。然而,事实证明,单纯增加模型的上下文长度并不是万能的。因此,如何高效地利用这些模型的推理能力成为了一个亟待解决的问题。
什么是检索增强生成(RAG)?
检索增强生成(RAG)是一种通过引入外部知识来提升语言模型生成效果的方法。简单来说,它不仅依赖模型内部的知识,还会从外部资源中检索到相关信息,这样生成的内容就更有针对性、更有深度。
研究的核心问题
这篇论文研究主要集中在两个问题上:
-
如何通过优化推理计算来提升RAG的性能? 换句话说,如果我们聪明地分配计算资源,那么是否能让模型表现得更好?
-
能否预测出在给定计算资源的情况下,哪些配置能带来最好的效果? 这就好比在预算有限的情况下,怎么才能让花出去的钱带来最大的价值。
关键策略:让推理过程更高效
为了让推理变得更智能,研究者提出了两种新策略:
-
基于演示的RAG(DRAG): 这是一种通过给模型提供多个示例作为参考,让它更好地理解问题并生成回答的方法。就像给学生多做几道类似的题目,以便他们在考试中能举一反三。
-
迭代演示RAG(IterDRAG): 这种方法更进一步,它将复杂的问题拆解成多个小问题,逐步解决,并在每一步中引入新的信息。这类似于解决一个大难题时,先把它拆成若干个小问题,一步一步地推进。

通过实验结果,表明在推理计算合理分配的情况下,长上下文RAG性能可以与计算预算的增大呈近似线性增长。
策略一:基于演示的RAG(DRAG)
-
工作原理:利用上下文学习,通过直接从扩展的输入上下文中生成答案来利用长上下文LLMs的能力。
-
实现方法:通过在输入提示中整合文档和上下文示例,并对文档进行排序,将排名更高的文档靠近查询放置。
-
改进之处:DRAG策略结合了多种上下文示例,使长上下文LLMs能够从丰富的输入上下文中提取相关信息并回答复杂问题。

策略二:迭代演示RAG(IterDRAG)
-
挑战与动机:多跳查询仍然因组合性差距而面临挑战,IterDRAG通过将复杂查询分解为更简单的子查询来解决这一问题。
-
工作流程:每个子查询执行检索以获取额外的上下文信息,然后将其与初始答案结合生成最终答案。
-
执行细节:迭代过程中会多次调用LLM,直到生成最终答案或达到最大迭代次数。
-
优势:IterDRAG通过分解查询和检索相关信息来回答子查询,缩小了组合性差距,提高了知识提取效率,从而提升了RAG的整体性能。
>>> 举例讲解 <<<
IterDRAG 的目标是通过将复杂的问题分解为更简单的子问题,以逐步进行检索和生成,从而提升模型在多跳推理任务中的性能。与传统的单次推理过程不同,IterDRAG 会进行多轮的检索和生成,逐步迭代,直到得出最终答案。
示例场景:回答多跳问题
假设我们要回答以下多跳问题:“Who is the author of the book that won the Pulitzer Prize in 2021?”
这个问题涉及多个步骤:
找到2021年普利策奖的获奖书籍。
找到该书籍的作者。
步骤一:初始查询与子问题分解
初始输入:IterDRAG 首先使用输入问题 “Who is the author of the book that won the Pulitzer Prize in 2021?” 进行初始检索。
生成子问题:在第一个推理步骤中,它会将复杂问题分解为更简单的子问题,例如:
- “What book won the Pulitzer Prize in 2021?”
步骤二:检索相关信息
检索文档:IterDRAG 对分解后的子问题 “What book won the Pulitzer Prize in 2021?” 进行文档检索,并找到相关信息,例如书籍名称。
生成部分答案:根据检索到的文档,生成该问题的部分答案,例如 “The Night Watchman”。
步骤三:迭代生成新的子问题
- 新子问题生成:在得到第一个子问题的答案后,IterDRAG 会根据新的上下文继续生成第二个子问题,例如:
- “Who is the author of The Night Watchman?”
- 继续检索:再次进行文档检索,使用新生成的子问题 “Who is the author of The Night Watchman?” 找到相关的文档。
步骤四:合并与最终答案生成
生成最终答案:IterDRAG 通过第二轮检索得到的结果,例如 “Louise Erdrich”,并将其作为最终答案。
合并信息:IterDRAG 将所有的中间结果和生成步骤结合在一起,以构成最终的回答过程,从而为用户提供完整的推理链条。
推理扩展定律:让RAG更具性价比
通过实验,研究发现,当合理分配推理计算资源时,RAG的性能能够呈现近乎线性的增长,RAG在长上下文的大语言模型上的性能最高可提升58.9%。这意味着,模型的表现提升和投入的计算量几乎是成正比的,这种现象被称为推理扩展定律。更有趣的是,这个发现帮助研究者构建了一种计算分配模型,可以预测不同推理配置下的模型性能。
1️⃣ 总体性能:

观察结果:
-
DRAG和IterDRAG的扩展性优于基线方法:基线方法(如多示例QA)在16k tokens达到峰值,而DRAG和IterDRAG能在更高的tokens范围内找到最优配置,显示了更好的扩展性能。
-
不同上下文长度下的表现:在16k和32k的较短长度下,DRAG的性能最佳;在128k及以上的较长长度下,IterDRAG表现更优,体现了在多步检索和生成中的优势。
2️⃣ RAG的推理扩展定律

主要发现:
-
线性关系:最佳性能随着推理计算量的增加呈现近似线性增长,称为RAG的推理扩展定律。
-
IterDRAG的表现:在超过10万的有效上下文长度时,IterDRAG继续通过交错检索和迭代生成有效扩展。
-
增益递减:在超过100万tokens的有效上下文长度后,性能增益逐渐减小,可能由于长上下文模型的局限性导致。
3️⃣ 参数特定扩展

关键观察:
-
文档和上下文示例的影响不同:增加检索到的文档数量通常会带来较大的性能增益,而上下文示例对IterDRAG的提升更为显著。
-
扩展不同:IterDRAG在增加生成步骤时表现更优,而DRAG在较短上下文长度时效果更好。
-
最佳参数组合:针对给定的最大上下文长度,优化推理参数组合会因方法、指标和数据集的不同而变化。
4️⃣ 长度外推

观察结果:
-
预测结果在128k到1M tokens范围内的平均误差为2.8%,在较长上下文长度下表现较好。
-
从32k到128k的外推具有挑战性,但在较长上下文长度下表现良好。
-
5M上下文长度的预测准确性较差,误差达到5.6%。
总结:优化RAG推理的新篇章
这项研究探讨了如何优化长上下文模型中的检索增强生成(RAG)推理策略,发现通过合理配置推理计算资源,RAG性能能够呈现近线性增长。研究提出了DRAG和IterDRAG两种推理扩展策略,不仅提高了模型在复杂任务中的表现,还在实验中显示出显著的性能提升。研究为未来优化RAG推理策略奠定了坚实基础,并指出需继续提升模型识别关键信息和处理长上下文的能力。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓


被折叠的 条评论
为什么被折叠?



