一个检索增强生成(RAG)系统为回答用户问题,从知识库中检索了10篇相关文档。其中第6篇文档包含了正确答案的关键信息。然而,模型最终输出的答案却是错的——它"看到"了放在第1篇和第10篇的干扰信息,却完全忽略了中间那篇真正有用的文档。
这不是偶然。2023年,斯坦福大学的研究团队在论文《Lost in the Middle: How Language Models Use Long Contexts》中揭示了一个令人惊讶的现象:大语言模型在处理长上下文时,表现出明显的U形注意力偏好——模型擅长利用位于上下文开头或结尾的信息,却系统性忽略中间部分。
这个发现引发了学界对大模型注意力机制的深度审视。2025年,中山大学团队发现了更底层的"注意力盆地"机制,而MIT的研究者则提出了区分检索头与流式头的解决方案。一个关于位置偏见的技术图景正在逐渐清晰。
U形曲线:被忽略的中间地带
2023年7月,Nelson F. Liu等人在arXiv发布了那篇开创性的论文。他们设计了一个精巧的实验:给定一个问题和k篇文档,其中只有一篇包含答案,其余都是干扰文档。研究者控制答案文档在输入序列中的位置,观察模型表现如何变化。
结果令人震惊。以GPT-3.5-Turbo为例,当答案文档放在序列开头时,准确率高达75.8%;放在结尾时,准确率为63.2%;但当答案文档放在中间位置时,准确率暴跌至53.8%——甚至低于模型在不提供任何文档时的"闭卷"表现(56.1%)。
这形成了一条清晰的U形曲线。更关键的是,这种现象在不同模型、不同任务中普遍存在:
- GPT-3.5-Turbo (16K)、Claude-1.3 (100K)等"长上下文"模型与其短上下文版本表现几乎一致——扩展上下文窗口并不能改善中间信息利用
- 编码器-解码器架构(如Flan-T5)在训练长度范围内相对稳健,但超出训练长度后同样出现U形曲线
- 即使是基础模型(未经过指令微调)也表现出类似的U形偏好
研究者在合成键值检索任务中进一步验证了这一现象。给模型一个包含多个随机UUID键值对的JSON对象,要求返回指定键的值。Claude-1.3能近乎完美地完成这个任务,但GPT-3.5-Turbo和MPT-30B-Instruct在键位于中间位置时表现显著下降。
这说明问题不在于"找不到"信息,而在于注意力分配的系统性偏见。
注意力盆地:结构性位置偏见
Lost in the Middle描述了现象,但并没有解释原因。为什么模型会系统性忽略中间位置?2025年8月,中山大学Yi等人发表的论文《Attention Basin: Why Contextual Position Matters in Large Language Models》揭示了更底层的机制。
研究者发现了一个被称为"注意力盆地"(Attention Basin)的现象:当输入由多个结构化块组成(如检索文档序列、少样本示例序列)时,模型会将更高的注意力分配给序列开头和结尾的块,而中间块几乎被忽略。
关键发现是:这不是简单的绝对位置效应,而是结构感知的位置偏见。研究者设计了一个消融实验:移除所有结构分隔符(标点、大写、“Document [1]“等显式标记),将多个文档融合成一个无结构的文本块。结果显示——U形注意力分布完全消失了。
这意味着模型不是"喜欢开头和结尾”,而是"喜欢结构块集合的边界”。模型将多个文档识别为一个"集合",然后对这个集合的边界赋予特殊地位。这与心理学中的"系列位置效应"(Serial-Position Effect)惊人相似——人类在自由回忆列表元素时,同样最擅长记住开头和结尾的元素。
研究者的理论分析进一步建立了注意力权重与输出概率的数学联系。设$\bar{\alpha}_{d^*}$为正确文档$d^*$获得的跨层平均注意力权重,$P(y^*|\cdot)$为生成正确答案的概率,他们证明:
$$\frac{\partial P(y^*|\cdot)}{\partial \bar{\alpha}_{d^*}} > \left|\frac{\partial P(y^*|\cdot)}{\partial \bar{\alpha}_{d_j}}\right| \geq 0$$这个不等式表明:增加对正确文档的注意力,比增加对任何其他文档的注意力,能更有效地提升正确答案的概率。这为"把重要信息放在高注意力位置"的策略提供了数学依据。
另一个重要发现是:浅层注意力更能反映模型的位置偏好。研究者分析了不同Transformer层的注意力分布,发现浅层(靠近输入的层)的注意力模式与位置偏见的吻合度最高。深层注意力更多受到语义内容的驱动,位置信号被稀释。这提示:如果要用注意力分数来指导重排序,应该使用浅层的注意力图。
RoPE的长程衰减困境
位置编码如何影响注意力分布?Rotary Position Embedding (RoPE)通过在Query和Key向量上施加位置相关的旋转来实现相对位置编码。理论上,RoPE能使注意力分数随相对距离增加而衰减,这对长上下文建模至关重要。
然而,2025年的研究发现,RoPE在超出训练长度的序列上难以维持长程衰减。研究者提出了一个关键指标:POCP(Proportion of Obtuse angles on the Complex Plane),即Query和Key线性变换后向量在复平面上夹角为钝角的比例。
实验表明:低POCP与更好的长程衰减相关。当POCP为0%时(所有夹角都是锐角),注意力分数随距离增加平滑衰减;当POCP接近100%时,注意力分数在远距离会出现剧烈波动,甚至产生高注意力峰值。
对Llama2-7B-4k的分析发现,不同注意力头的POCP差异显著(从0.20到0.52不等),且高POCP的头部往往具有较高的原始注意力分数。这些头在扩展上下文中可能导致困惑度上升,因为它们对远距离token分配了异常高的注意力。
更有趣的是对比Llama3-8B-8k与Llama3-8B-64k:长上下文训练后的模型POCP显著降低。这表明长上下文适应训练的一个关键效果,就是优化Query和Key的变换,使其具有更低的POCP,从而维持更好的长程衰减特性。
从现象到解决方案
理解了注意力盆地的机制,研究者们提出了多种解决方案。
AttnRank:注意力驱动的重排序
中山大学团队基于注意力盆地发现,提出了AttnRank方法。核心思想很简单:既然模型天然偏好边界位置,那就把最重要的信息放在边界。
AttnRank分为两阶段:
-
注意力分布提取:用少量校准样本探测模型的位置注意力偏好,建立注意力分布图谱。实验发现,仅需400个样本即可收敛,某些模型甚至单个样本就能捕捉到特征性的U形模式。
-
注意力驱动重排序:对任意新查询,按预计算的位置注意力偏好重新排序输入文档——将最高相关度的文档放在高注意力位置(开头或结尾),次高相关度的放在次高注意力位置,以此类推。
在HotpotQA多跳问答任务上,AttnRank在10个主流LLM上平均准确率达到44.72%,显著高于随机排序(42.57%)和相似度降序排列(42.63%)。方法无需训练、即插即用,且计算开销极低。
DuoAttention:检索头与流式头
MIT Han Lab的研究者从另一个角度切入:并非所有注意力头都需要完整上下文。
他们发现,LLM中的注意力头可分为两类:
- 检索头(Retrieval Heads):专注于捕获上下文相关信息,需要完整注意力。在Llama-2-7B中约占25%。
- 流式头(Streaming Heads):主要关注最近token和注意力汇聚点(attention sinks),不需要完整注意力。
基于此洞察,DuoAttention框架对检索头使用完整KV缓存,对流式头只保留注意力汇聚点和最近token的KV缓存。这使流式头的内存使用从$O(L)$降至$O(1)$。
实验结果令人印象深刻:
- MHA模型内存减少高达2.55倍,解码速度提升2.18倍
- GQA模型内存减少1.67倍,解码速度提升1.50倍
- 结合量化技术,单张A100 GPU可支持Llama-3-8B处理330万token上下文
关键是识别检索头的方法。DuoAttention使用合成数据优化门控值:在长文本中随机嵌入多个"通行证"序列,要求模型回忆这些序列。通过最小化完整注意力与压缩注意力的输出差异,同时正则化门控值趋向稀疏,来识别哪些头对上下文检索至关重要。
位置编码的改进方向
针对RoPE的长程衰减问题,研究者提出了多种改进方案:
- 长度外推方法:如Position Interpolation(PI)、YaRN等,通过缩放或调整频率基数来适应更长序列
- 训练策略优化:在预训练或微调阶段引入更多长距离依赖样本,降低POCP
- 混合位置编码:对低频(长距离)和高频(短距离)维度使用不同策略
值得注意的是,编码器-解码器架构由于其双向编码器能在上下文化时"看到"未来token,在训练长度内表现出更强的位置鲁棒性。这提示架构选择也是缓解位置偏见的重要因素。
工程实践建议
理解这些原理后,如何在实际系统中应用?
对于RAG系统:
- 将检索结果按相关性排序后,不要直接按降序排列输入模型。考虑使用重排序策略,将最相关的文档放在开头和结尾
- 如果模型API暴露了注意力信息,可以实现自适应重排序;否则,简单地将相关文档分散到边界位置也能带来提升
- 对于需要整合多个文档信息的复杂查询,考虑分解为多轮检索,每轮聚焦更短的上下文
对于模型部署:
- 识别并区分检索头与流式头,对流式头应用KV缓存压缩,可显著降低长上下文推理的内存和延迟开销
- 在长上下文微调时,关注降低POCP,有助于改善模型的外推能力
- 使用Chunked Prefill时,流式头的计算复杂度可从$O(L^2)$降至$O(LK)$(K为块大小)
对于模型选择:
- 扩展上下文窗口的模型(如100K版本)并不自动意味着更好的长上下文利用能力,需要专门评估其在不同位置的信息检索表现
- 编码器-解码器架构在位置鲁棒性上可能更有优势,但需要权衡训练成本和推理效率
研究展望
Lost in the Middle现象揭示了大模型注意力机制的一个深层局限:位置偏见不是简单的技术缺陷,而是注意力机制在信息筛选策略上的系统性偏好。这种偏见的形成与训练数据分布、位置编码方案、模型架构等多因素相关。
注意力盆地的发现提供了更精细的理论视角:模型在结构层面实施注意力分配,而非简单的token层面。这暗示着提升长上下文能力可能需要在结构感知层面进行干预。
DuoAttention和AttnRank代表了两种互补的解决思路:前者通过区分注意力头的功能来实现选择性压缩,后者通过重排序来利用而非对抗模型的固有偏好。两者的结合可能带来更大的收益。
一个值得关注的方向是:能否通过训练过程的改进,从根本上减少位置偏见?2025年的研究已经开始探索"信息密集型"(IN2)训练策略,通过在长上下文中密集嵌入需要检索的信息来训练模型的位置无关注意力。初步结果显示,这种训练可以在不损失通用能力的情况下显著改善位置鲁棒性。
另一个开放问题是:注意力盆地是否是一种"必要的恶"?从信息论角度看,U形注意力分布可能反映了某种最优信息筛选策略——在有限计算资源下,优先处理边界信息可能是合理的。如何平衡这种效率与公平性,仍需要更深入的研究。
参考文献
-
Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F., & Liang, P. (2024). Lost in the Middle: How Language Models Use Long Contexts. Transactions of the Association for Computational Linguistics, 12, 157-173.
-
Yi, Z., Zeng, D., Ling, Z., Luo, H., Xu, Z., Liu, W., … & Shen, Y. (2025). Attention Basin: Why Contextual Position Matters in Large Language Models. arXiv preprint arXiv:2508.05128.
-
Xiao, G., Tang, J., Zuo, J., Guo, J., Yang, S., Tang, H., … & Han, S. (2024). DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads. arXiv preprint arXiv:2410.10819.
-
Su, J., Lu, Y., Pan, S., Murtadha, A., Wen, B., & Liu, Y. (2024). RoFormer: Enhanced Transformer with Rotary Position Embedding. Neurocomputing, 568, 127063.
-
An, S., Ma, Z., Lin, Z., Zheng, N., Lou, J.-G., & Chen, W. (2024). Make Your LLM Fully Utilize the Context. Advances in Neural Information Processing Systems, 37.