把一份长文档丢给大模型,让它总结或回答问题,结果往往出人意料——模型确实"读"完了全文,但答案明显偏向开头和结尾。中间部分?基本被忽略了。
这不是坊间传闻。2023年,斯坦福和加州大学伯克利分校的研究者在论文《Lost in the Middle: How Language Models Use Long Contexts》中系统验证了这一现象。这项发现至今仍是应用大模型科学中最重要、却最被低估的研究之一。
![]()
研究者设计了对照实验:将多文档问答的答案藏在检索文档中的不同位置——开头、中间或末尾——然后观察模型表现。结果很明确:即使总长度远未超出模型标称的上下文窗口,只要答案位于中间,准确率就会骤降。
性能曲线呈U型:答案靠近位置1(开头)或最后位置时准确率高,中间区域则明显下凹。某些配置下,中间位置的准确率比两端低20个百分点以上。
问题的根源在于注意力机制在长序列中的分布方式。两种偏置相互拉扯:
一是近因偏置。末尾的标记最接近模型生成下一个标记的位置。在自回归架构中,近期标记往往获得更高注意力权重——这既因为位置邻近,也因为大量训练任务(如下一标记预测、指令遵循)隐式奖励对近期上下文的敏感度。
二是首因偏置。提示最开头的标记——尤其是系统指令——在预训练和微调阶段获得异常高的注意力,因为它们设定了对话框架。经过指令调优的模型被深度条件化,将上下文开头视为权威来源。
中间区域两头不靠。它不够近,无法享受近因偏置的红利;又不在模型学习遵循指令时就位,无法获得首因偏置的优待。在注意力分数分布中,中间序列标记获得的总体注意力往往低于其信息价值所应得。
这对实际应用有直接影响,尤其是检索增强生成(RAG)系统的设计:
重排序比检索顺序更重要。如果检索器把最相关的片段放在5个结果中的第3位,其表现会弱于放在第1位的同一检索器——即使模型技术上"看到"了全部五个。调整检索顺序不只是美观问题,而是准确率问题。
别把关键信息埋在中间。如果你让模型"基于以下10段摘录作答",而答案藏在第6段,你实际上是在与模型的注意力分布作对。把关键信息前置,或至少通过重排序确保高相关性片段占据首尾位置。
上下文窗口的"有效长度"比标称长度短得多。一个号称支持128K标记的模型,其实际可靠处理长度可能远低于此——不是因为它无法加载这么多文本,而是因为中间部分的信号会严重衰减。
这一发现也解释了为什么一些长上下文应用表现不佳:法律文档分析、长篇小说理解、多轮对话中的早期上下文引用——这些场景都依赖模型对中间位置信息的准确提取,而恰恰是这里存在系统性盲区。
研究者并未提出根本性的架构解决方案,但他们的实验设计为评估和缓解这一问题提供了基准。当前工业界的应对策略主要集中在工程层面:更智能的检索排序、上下文压缩、分层摘要——本质上都是把关键信息搬到模型"看得见"的位置。
这提醒我们一个常被忽视的真相:大模型的能力边界不仅由参数规模和上下文窗口的标称长度决定,更由注意力机制的实际动态塑造。理解这些动态,比追逐更大的数字更能提升实际应用效果。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.