随着大型语言模型(LLMs)在实际应用中的广泛采用,它们常常需要处理长序列输入,例如 长文档问答和摘要生成 。传统的LLMs通常具有有限的工作上下文大小,这限制了它们处理长上下文任务的能力。尽管可以通过微调来扩展LLMs的上下文长度,但这需要 付出巨大的成本 ,并且在部署时极其消耗资源
大多数长上下文任务实际上是可以用短上下文解决的。换言之,尽管这些任务与长序列输入相关,但可以 通过策略性地使用短上下文来解决 。基于这一论点,提出了一个名为 LC-Boost(Long-Context Bootstrapper) 的框架,它使短LLM能够以自举(bootstrapping)的方式处理长上下文任务。
LC-Boost的说明。
LLM被提示推理如何访问适当的上下文以及如何利用访问到的上下文来解决问题。示例模型。 (A) 暴力解法 。尽管正确,但由于同时处理整个上下文,它不必要地昂贵。 (B) 朴素的RAG (检索增强生成)。它很难处理像信息聚合这样的问题,这导致答案不完整。 (C) LC-Boost利用RAG来解决问题 ,以很小的代价产生正确的答案。 (D) LC-Boost通过顺序扫描处理长上下文 ,这基于全面收集的信息正确地解决了问题。
LC-Boost框架 的核心在于两个关键的决策过程: 访问(Access) 和 利用(Utilize) 。访问阶段是LLM自我提示如何访问输入中适当的上下文部分;利用阶段是LLM计算如何有效利用访问到的上下文。通过基于当前任务自适应地访问和利用上下文,LC-Boost能够作为一个通用框架来处理多样化的长上下文处理问题。
- 方法的起始点 :LC-Boost从输入查询(q)和长上下文(X)开始,目标是产生一个输出答案(Y)。考虑到LC-Boost背后的LLM有上下文长度限制(本文中将LC-Boost的工作上下文长度限制为4K),直接为长上下文任务生成输出答案Y是不可行的。
- 处理长上下文任务的策略:为了解决这个问题,LC-Boost通过战略性地理解分解后的短上下文(X = {X1, ..., Xn}),并从这些短上下文中提取最小必要上下文(˜X),以支持输出答案Y的生成。
- 决策过程:LC-Boost通过与分解后的短上下文({X1, ..., Xn})进行迭代交互的决策过程来实现这一目标。在此过程中,LC-Boost与每个短上下文Xi交互,执行两种类型的操作: 信息访问和信息利用 。
- 动作空间:LC-Boost定义了一个离散的动作空间A,包括任务理解、检索、移动、追加、合并、回答和聚合等七种动作。这些动作使LC-Boost能够灵活地访问任何短上下文Xi,准确获取信息,以及动态地利用获取的信息来产生目标形式的答案。
通过在多个流行的长上下文基准测试中对不同类型的任务进行全面评估,LC-Boost能够在资源消耗大大减少的情况下,实现显著提高的性能。
LC-Boost在多数任务上的表现与基于强长LLMs的暴力解法相当,甚至在许多情况下,由于消除了干扰上下文,其性能还可能显著超过暴力解法
。
主要实验结果。
最佳结果以粗体显示,次佳结果用下划线标出。报告了主要任务的平均得分(%)。
消融研究中不同上下文处理策略的性能比较。NarrativeQA(左侧)是一个单文档问答任务。HotpotQA(中间)是一个多文档问答任务。SamSUM(右侧)是一个少样本学习任务。
案例研究在自建数据集上。
正确答案用青绿色标记,错误答案用红色标记,模棱两可的答案用橙色标记。
https://arxiv.org/pdf/2405.15318
Are Long-LLMs A Necessity For Long-Context Tasks?
推荐阅读
- • 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
- • 2024:ToB、Agent、多模态
- • TA们的RAG真正投产了吗?(上)
- • Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“ PaperAgent ”, 每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。
