Lost in the Middle: How Language Models Use Long Contexts
这篇发表于 TACL 2023 的论文(Nelson F. Liu 等)回答了一个此前没人系统测过的问题:当关键信息放在长上下文的不同位置时,语言模型对它的利用率完全不同——开头最好、结尾次之、中部最差,性能曲线呈 U 形。它系统实验了长上下文中信息位置对生成质量的影响,是理解 RAG 引用行为的基础文献之一。站内同名术语卡(Lost in the Middle(中部遗忘))给出术语视角的完整展开,本卡聚焦文献本身:实验怎么做、结论多稳、对 GEO 意味着什么。
U 形曲线是怎么测出来的
论文的实验设计可以概括为「移动证据、观察成绩」:研究者把回答问题所需的关键证据放进一份由多个文档组成的长上下文,唯一变量是证据所在的位置——开头、中部、结尾逐一尝试,再测量回答质量随位置的变化。结果是一条稳定的 U 形曲线:证据在开头时表现最好,结尾次之,中部显著塌陷;上下文越长、候选文档越多,中部的塌陷越明显。
这个设计的聪明之处在于把「位置」从混杂变量里剥离出来。长上下文任务的表现受内容难度、问法、模型能力等多重因素影响,单看一次回答的成败得不出结论;固定其他一切、只动位置之后,成绩的变化就只能归因于位置本身。这也是它能成为「基础文献」的方法论原因——证明的不是某个产品缺陷,而是一类模型利用上下文方式的通性。
两种范式都复现:不是某个模型的怪癖
单一线索容易被质疑为个案,论文的第二重贡献是在两种范式下复现了同一形状。其一是多文档问答:模型收到一组文档与一个问题,证据在文档序列里的位置移动,成绩随之起伏。其二是 k-NN 检索:更贴近真实检索系统的设定,按相似度从语料取回近邻文档,证据在取回序列中的位置同样决定利用率。两种范式的 U 形一致,说明中部遗忘不是某次实验的偶然,也不是某一个模型的怪癖,而是这一代语言模型「重读两端、略读中部」的普遍行为模式。
机制上可以做定性理解:模型对上下文的注意力分布并不均匀,开头贴近指令与提问区,结尾直接衔接生成动作,两端各有一个天然的着力点;中部既要与同侪竞争注意力,又远离两端的着力区,信息容易被稀释。窗口参数的拉长解决的是「放得下」,不自动解决「用得上」——这也是「超长上下文」的产品宣传与中部遗忘的实证可以同时成立的原因。
窗口越拉长,这条结论反而越重要。候选文档从十份涨到上百份时,中部的塌陷区间跟着变大——放得下更多资料,不等于用得好更多资料。对内容方的推论是反直觉的:不是想办法「挤进更长的列表」,而是想办法让自己的块落在短列表的前排,或在长列表里占据两端位置。竞争的焦点从「在不在上下文里」变成了「在上下文的哪里」,这也是「被检索到只是必要条件」这句话的完整含义。
为什么它是 RAG 引用行为的基础文献
RAG(检索增强生成)流水线里,内容先被切块、被检索排序、再进入生成上下文——位置偏差直接嵌在这条链路的每一环。论文的价值在于把「进入上下文」与「被有效利用」区分开:内容被检索命中、进入 top-k 只是必要条件,进入上下文后的位置同样影响被吸收进答案的概率。这个区分后来成了 GEO 讨论「排位」问题时最常被引用的机制依据。
对内容方的推论因此是两段式的。第一段在引擎侧:你的内容块在检索候选里排得越靠前,越可能落在 U 形的有利端——提高「被排前」的竞争力(语义对齐、权威信号、与问题的直接相关度)是内容侧能做的第一件事。第二段在页面侧:页面内部的核心结论也要前置,别让关键信息埋在长页与长段的中部。站内有一条服务商口径的实证与此互证:相当比例的 ChatGPT 引用落在页面开头约三成的内容上(见前 30% 引用分布数据卡),页面级的位置效应与模型级的位置偏差指向同一个写作纪律——结论前置、细节殿后(落地写法见即答段术语卡)。
块内粒度是排位之外的第二变量。把一个主题切成更小的自含块、每块自带结论,等于增加「整块落在有利位置」的机会;反过来,大切分把结论与证据绑在一个长块里,块内注定有一段信息处在不利区。切块纪律的完整口径见Chunk(内容切块)术语卡。先想位置再想完整性,是这篇论文给内容工程的顺序建议。
计分口径里的同构:PAWC 也在奖励前置
位置偏好后来还被写进了 GEO 的度量体系。GEO 奠基论文采用的 PAWC 指标按位置加权计分,答案里越靠前的词权重越高(见PAWC 术语卡)。也就是说,位置既影响内容是否被模型吸收,也影响战术效果如何被度量;把关键信息前置,是在内容与计分两个环节同时受益的动作。一篇论文揭示的模型层偏差,经由度量设计传导成内容侧的通用纪律——这是「基础文献」的完整含义,也是它被跨领域反复引用的原因。
引用它时的正确姿势也值得一提。学术语境里它常被用来论证长上下文模型的局限,GEO 语境里它被借来解释内容结构——两种用法共享同一实验事实,但推论链条不同,转述时要分清「论文证了什么」与「我们由此推了什么」。把 U 形曲线直接说成「引擎引用行为的实证」是过度引申:论文测的是模型利用率,引用行为是其在检索产品里的下游表现,中间隔着产品工程。守住这个区分,引用才经得起追问;本站的写法纪律(先答后述、先结论后展开)正是这条推论链的产品化落点。
边界:U 形是统计倾向,不是铁律
引用这篇论文时要守住它的边界。U 形描述的是统计倾向:同一模型在不同任务、不同问法下,曲线的深度并不一样;模型迭代与指令跟随的改进也会缓解中部利用不足。但「重要信息放两端更保险」作为写作纪律,在可预见的时间里不会失效——把它当工程约束而非物理定律来用,就不会过度设计。工程约束的用法也包括知道何时可以豁免:参数表、时间线、步骤清单这类结构性内容,处在中部也无妨,它们靠格式而非位置取胜;真正要救的是叙事性长文里被埋没的核心论断。分清这两类内容,位置改造才不会做成机械运动。
还有一条实务提醒:位置战术永远排在语义对齐之后。位置优势的前提是内容相关,把不相关的内容硬塞进开头,只会让它更早暴露相关性不足;先保证内容值得被检索,再谈放在哪里。这也是我们把它列为进阶证据的原因——它的正确用法是解释「为什么前置有效」,而不是发明一种绕过质量的排版玄学。
核心结论
- 把关键证据放上下文不同位置,模型利用率呈 U 形:开头最好、结尾次之、中部最差。
- 中部遗忘现象在多文档 QA 与 k-NN 检索两种范式下均稳定出现。
引用来源
- arXiv:2307.03172