GEO

中间迷失(Lost in the Middle)

"中间迷失"是 Liu 等人在 2023 年斯坦福/Samaya AI 论文中记录的一项实证发现:当关键信息位于长上下文的最开头或最末尾时,LLM 的表现最好;而当同样的信息位于中间时,表现则明显变差。即便是拥有 10 万以上 token 窗口的模型,仍然呈现出这种 U 形注意力曲线。

"中间迷失"是 Liu 等人在 2023 年斯坦福/Samaya AI 论文中记录的一项实证发现:当关键信息位于长上下文的最开头或最末尾时,LLM 的表现最好;而当同样的信息位于中间时,表现则明显变差。即便是拥有 10 万以上 token 窗口的模型,仍然呈现出这种 U 形注意力曲线。

为什么重要

"大上下文窗口"并不等于"对所有内容一视同仁地阅读"。一个拥有 20 万上下文的模型在技术上能够吞下一整本书,但对于答案位于一份 500 页 PDF 第 300 页的问题,其实际准确率远低于答案位于第 5 页或第 495 页的同类问题。对于开发者而言,这带来了切实的影响:你在提示中排列上下文的方式会显著改变答案质量,其影响往往超过你提供多少上下文。大多数生产环境中由"模型忽略了检索到的段落"造成的 RAG 失败,实际上都是伪装过的中间迷失问题。

最初的发现

Liu 等人 2023 年的论文《Lost in the Middle: How Language Models Use Long Contexts》在多文档问答任务上测试了 GPT-3.5、GPT-4、Claude 以及若干开源模型。对于每个问题,他们将相关文档分别打乱到 20 篇文档中的第 1、5、10、15、20 个位置。结果如下:

  • 当相关文档位于最前(上下文顶部)时,准确率最高。
  • 当它位于最后(底部)时,准确率几乎同样高。
  • 当相关文档位于中间位置时,准确率下降了 20 至 30 个百分点。

其形状形似一个 U:两端表现强劲,中间表现疲弱。后续研究表明,即便上下文窗口不断增大,这一模式在 Claude、Gemini 和 Llama 模型上依然成立。

为什么会发生

有几种假说,很可能都各有几分道理:

训练数据分布:训练数据往往把重要信息放在开头(标题、主题句)和结尾(结论、要点总结)。模型于是学到了这些位置先验。

注意力衰减:即便采用了 RoPE 或 ALiBi 这类技术,自注意力的有效作用范围在超长序列上仍会退化,远处的中间 token 获得的注意力权重少于邻近的两端。

位置编码的局限:扩展上下文的模型沿用了为较短序列调优的位置编码,因此中间位置相对训练不足。

近因偏置:模型对靠近末尾的 token 赋予更高权重,这会强化末尾的表现,但无助于中间部分。

如何针对它进行设计

1. 把最重要的上下文放在最前或最后:对于 RAG,将排名最高的检索段落放在上下文块的最开头或最末尾。

2. 检索后重排序:使用重排序器按相关性对检索到的片段排序,然后把排名最高的放到边缘位置。

3. 按相关性而非检索顺序重新排列:向量搜索常按距离顺序返回结果;重新排列,使最相关的内容落入高注意力位置。

4. 概括中间部分:与其直接堆砌原始的中间上下文,不如将其概括后把摘要放到顶部。压缩过的中间内容比原始内容留存得更好。

5. 缩短上下文:U 形曲线会随长度增加而恶化。更少、更相关的片段胜过大量边际价值低的片段。

6. 重复关键事实:把同一关键事实同时放在顶部和底部,是利用 U 形曲线而非与之对抗。

7. 在两端都放置任务指令:有些提示能从在上下文顶部底部同时重复问题中获益,将证据夹在中间。

这在 2026 年仍然适用吗?

较新的长上下文模型(Gemini 1.5 / 2.0、Claude 3.5+/4.x、GPT-4 Turbo 及 o 系列)在中间上下文的召回方面有了相当大的改进。在 Gemini 2.0 上进行的大海捞针测试显示,其在整个窗口范围内的检索几近完美。但在涉及复杂推理的真实多事实任务中,U 形曲线依然会出现,只是没那么剧烈。实用建议并没有太大改变:更短、排列得当的上下文,仍然胜过冗长、随机排列的上下文。

常见误区

以为上下文越大 = 答案越好:只在一定范围内成立,超过之后中间退化就会显现。

按向量搜索顺序堆砌检索到的段落:向量距离并不等于位置重要性。

跳过重排序:检索 + 重排序比配合朴素检索的更长上下文更有效。

没有用现实位置的"针"进行测试:玩具式的"大海捞针"测试往往把针放在均匀随机的位置,这会掩盖 U 形曲线。请在现实用例上测试。

轻信营销说辞:"100 万 token 上下文"并不意味着模型会对全部 100 万 token 一视同仁。

Sources: