课程 2:Lost in the Middle — 语言模型如何使用长上下文

基于论文:Lost in the Middle: How Language Models Use Long Contexts (Liu et al., TACL 2023)

📄 论文信息

标题:Lost in the Middle: How Language Models Use Long Contexts

作者:Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni, Percy Liang

机构:Stanford University, UC Berkeley

来源:arXiv:2307.03172 · TACL 2023

核心贡献:系统揭示 LLM 在长上下文中"中间信息被遗忘"的 U 形性能现象——即使长上下文模型也无法幸免

💡 一句话总结

语言模型在长上下文中表现呈 U 形曲线:相关信息在开头或结尾时性能最高,在中间时显著下降——即使专门为长上下文设计的模型也一样。

一、背景:长上下文的期望与现实

2023 年,LLM 的上下文窗口迅速从 4K 扩展到 16K、32K 甚至 100K。直觉上,更长上下文 = 能处理更多文档 = 更好性能。但窗口大不等于用得好

这篇论文问了一个简单但关键的问题:模型真的能用好长上下文吗? 如果把答案信息放在输入的不同位置,性能会怎样?

实验设置:改变相关信息的位置

核心思路:给模型一堆文档 + 一个问题,其中只有一份"金文档"含答案,其余是干扰文档。然后系统性地把金文档放到不同位置(第 1、第 5、第 10、第 15、第 20……),观察准确率怎么变。

问题
干扰文档 1
干扰文档 2
★ 金文档(含答案)
干扰文档 3
问题

问题在文档前后各放一次(让模型更好地关注上下文),金文档的位置是唯一变量。

二、核心发现:U 形性能曲线

实验结果揭示了一个清晰的模式——性能随金文档位置呈 U 形变化

多文档问答准确率 vs 金文档位置(K=10 篇文档)

72%
58%
48%
45%
47%
55%
70%
位置 1(开头) 位置 4-5(中间) 位置 7(结尾)

绿色 = 高准确率,红色 = 低准确率。开头和结尾最好,中间最差——这就是"Lost in the Middle"。

最佳情况:金文档在开头(位置 1)或结尾(位置 K)时,准确率最高——这对应人类的首因效应(primacy)和近因效应(recency)。
最差情况:金文档在中间时,准确率比最佳位置低 20% 以上。在 10 篇文档的设定下,从 72% 掉到 45%——仅仅因为答案的位置变了。
~20%
中间 vs 开头的准确率差距
10-30
测试的文档数量范围
6+
测试的模型数量
全部
模型无一幸免

三、两个实验任务

任务一:多文档问答(Multi-document QA)

基于 NaturalQuestions 数据集。给模型 K 篇文档(K = 10, 20, 30),其中 1 篇含正确答案,其余 K-1 篇是从 Wikipedia 检索的相关但不含答案的文档。模型需根据文档回答问题。

结果:U 形曲线在所有 K 值下都出现。文档越多,中间位置的下降越严重。

任务二:键值检索(Key-Value Retrieval)

构造一个 JSON 格式的键值映射(如 {"key_1": "value_1", ..., key_K": "value_K"}),模型需要根据指定的 key 返回对应的 value。把目标 key-value 对放到不同位置。

这个任务比 QA 更"纯粹"——不需要推理,只测试模型能否在长上下文中定位并提取特定信息。

结果:同样出现 U 形曲线。即使对长上下文模型,中间位置的准确率也大幅下降。

四、关键发现:谁也逃不掉

发现 1:长上下文模型也不能幸免

论文测试了多种专为长上下文设计的模型——MPT-30B-8192、LongChat-32K、GPT-3.5-turbo(16K)、Claude(100K)——它们全部表现出 U 形曲线。扩展上下文窗口不等于改善信息利用率。

发现 2:模型越大,问题不一定越轻

更大参数量的模型(如 MPT-30B vs MPT-7B)在开头/结尾的绝对性能更高,但 U 形的相对下降幅度并未明显改善。模型变强了,但"中间遗忘"这个结构性问题仍在。

发现 3:即使信息"就在眼前"

在键值检索任务中,答案不需要任何推理——只需找到正确的 key 并复制对应的 value。即使在这种"纯粹检索"场景下,中间位置的性能仍然显著下降,说明这不是推理能力的问题,而是注意力分配的问题。

五、对 RAG 的实践启示

这篇论文对检索增强生成(RAG)有直接而重要的影响。如果你的 RAG 管线把检索到的文档直接拼成 prompt,那么文档的排列顺序会显著影响回答质量

实践建议:

⚠️ 反直觉之处

很多人以为"给模型更多文档,模型自己会找到正确的那个"。这篇论文用数据证明:模型的"查找"能力是有位置偏差的——它天然偏向开头和结尾的信息,中间的信息容易被"淹没"。

六、检验:凭记忆作答

回忆比重读更能形成长期记忆。先盖住上面,凭脑子答完再看解析。

1. "Lost in the Middle" 现象指的是什么?
A. 模型在超长文本中训练不稳定,容易发散
B. 相关信息放在输入中间时,模型性能显著下降,呈 U 形曲线
C. 长上下文模型的推理速度在中间 token 处变慢
D. 多文档问答时,文档越多答案越准确
2. 论文测试的两种实验任务是什么?
A. 文本摘要和机器翻译
B. 情感分析和命名实体识别
C. 多文档问答和键值检索
D. 代码生成和数学推理
3. 以下哪个模型能克服"Lost in the Middle"问题?
A. GPT-3.5-turbo(16K 上下文)
B. Claude(100K 上下文)
C. MPT-30B-8192(8K 长上下文模型)
D. 以上模型全部表现出 U 形曲线,无一幸免
4. 在 RAG 系统中,根据这篇论文的建议,检索到的文档应该如何排列?
A. 按检索得分从高到低排列即可,位置不重要
B. 随机排列,让模型自己判断相关性
C. 把最相关的文档放到开头或结尾,避免关键信息埋在中间
D. 把所有文档都放进上下文,越多越好

七、本课小结

🎯 核心要点

下节课预告:既然知道了"Lost in the Middle"是注意力偏差导致的——那能不能校准这个偏差,让模型找回中间的信息?课程 3:Found in the Middle →

八、延伸阅读

📖 主要来源:Lost in the Middle 原始论文 (arXiv:2307.03172)

💡 相关概念:

💬 有疑问? 随时向我提问!可以询问任何 unclear 的概念,或要求我深入解释某个技术细节。