斯坦福等机构研究发现,GPT-3.5、Claude等大模型在处理长上下文时,头部和尾部信息利用率高,中间部分则显著下降,形成“U型曲线”。实验表明,这并非模型架构问题,而是源于预训练数据中答案分布的偏见。对于开发者,将重要文档置于prompt首尾可提升效率,而过度依赖扩展上下文并无益处。本文揭示了模型处理长文本的局限性,为优化大模型应用提供了实践启示。
📄 论文:Lost in the Middle: How Language Models Use Long Contexts
🏢 机构:Stanford University / UC Berkeley / Samaya AI
📅 发表:TACL 2024(arXiv v3: 2023年11月)
🔗 链接:arxiv.org/abs/2307.03172
省流不看版
Stanford 等机构通过受控实验发现,当相关信息处于长上下文中间位置时,GPT-3.5、Claude、MPT 等模型性能大幅下滑,呈现「U 形曲线」——头部(primacy bias)和尾部(recency bias)最好,中间最差;扩展上下文模型并不比基础版更善用上下文;对 RAG 系统的实践启示:把最重要的文档放在 prompt 头部或尾部,别放中间。
一、背景:更长的窗口 ≠ 更好地利用上下文
近年来 LLM 的上下文窗口从 2K 一路扩展到 4K、16K、100K,许多商业产品(检索增强生成 RAG、Bing Chat 等)每次都往 prompt 里塞几十篇文档。但一个几乎从未被认真量化的问题是:模型到底有没有均匀地「读完」这些文档?如果答案是否定的,工程上的最优策略就完全不同。
这篇 Stanford 的工作做了一件很直接的事:固定答案,只改它在 prompt 里的位置,看模型表现如何随位置变化。
二、实验设计:两个精心设计的受控任务
2.1 多文档问答(Multi-Document QA)
取 NaturalQuestions-Open 的 2655 条问题,每条问题配 k 篇文档(1 篇含答案 + k-1 篇干扰文档)。干扰文档用 Contriever 检索(按相关性降序排列),含答案文档的位置在实验中逐一调整。
输入 Prompt 结构:[任务描述]Document [1]: ...Document [2]: ...(干扰文档)Document [i]: ...(含答案文档 → 变量:放在第 1、5、10、15、20 个位置)...Document [k]: ...Question: {问题}Answer:度量指标:准确率(Accuracy)——预测输出中是否包含标注答案。对比 Closed-Book(无任何文档)和 Oracle(只给含答案文档)两个极端基线。
2.2 Key-Value 检索(合成任务)
给模型一个 JSON 串(包含 k 对随机 UUID 的 key-value),要求按指定 key 返回对应 value。这个任务完全是精确字符串匹配,不需要任何语义推理,是对「上下文检索能力」最干净的测试床。
输入示例:{"2a8d601d-...": "bb3ba2a5-...", "9f4a92b9-...": "703a7ce5-...", ← 目标 key(位置是变量) ...}Key: "9f4a92b9-..."Corresponding value:三、核心结论:U 形曲线
Figure 1:GPT-3.5-Turbo 在 20 篇文档设置下,随答案文档位置变化的准确率。首尾最高,中间最低——经典 U 形。
3.1 多文档 QA 实验结果
Figure 5:10/20/30 篇文档设置下,各模型随答案位置变化的准确率。所有模型均呈现 U 形,中间位置性能最差。
💡 核心发现 1:中间性能 < Closed-Book
GPT-3.5-Turbo 在 20/30 篇文档的设置下,当答案在中间时准确率跌至 ~53%,低于完全不给文档(Closed-Book 56.1%)——提供了更多信息,反而让模型表现更差。
💡 核心发现 2:扩展上下文版本没有优势
GPT-3.5-Turbo 与 GPT-3.5-Turbo (16K) 在 10/20 篇文档设置下(都在 4K 范围内)性能曲线几乎完全重叠。上下文窗口更长,并不等于能更好地利用上下文。
3.2 Key-Value 检索实验结果
Figure 7:75/140/300 个 KV 对设置下,各模型的检索准确率。即便是最简单的精确匹配任务,GPT-3.5 和 MPT-30B 仍然在中间位置严重失能。
在 300 KV 对(约 15K tokens)的设置下,GPT-3.5-Turbo 在最差位置准确率仅 45.6%——哪怕任务只是找一个完全匹配的 UUID 字符串。Claude-1.3 和 Claude-1.3 (100K) 在该任务上接近完美,表现出对这种精确检索任务的明显优势。
四、机制探究:为什么会这样?
U 形曲线是一个现象,论文进一步追问:是架构的锅?是 prompt 写法的锅?还是训练数据的锅?作者分别设计了三组对照实验来逐一排查。
4.1 模型架构:Decoder-Only 的单向注意力是元凶吗?
动机:前面测试的模型(GPT-3.5、MPT、LongChat)全是 decoder-only 架构。Decoder-only 在生成每个 token 时只能 attend 到它之前的 token——这意味着当模型读 Document [5] 的时候,根本看不到排在后面的 Query,无法带着「要回答什么问题」的意识去理解文档内容,自然难以判断哪篇文档更重要。
相比之下,encoder-decoder 架构(如 T5、UL2)的 encoder 是双向注意力,每个 token 在编码时都能同时看到前后文,理论上每篇文档都能在「全局上下文」下被理解。为此,作者引入了两个 encoder-decoder 模型做对比:
| 模型 | 架构 | 训练时 Encoder 最大长度 | 备注 |
|---|---|---|---|
| Flan-T5-XXL | Encoder-Decoder | 512 tokens | 相对位置编码,可一定程度外推 |
| Flan-UL2 | Encoder-Decoder | 2048 tokens | 额外做过 100K 步长上下文预训练 |
实验配置:与第三章相同的多文档 QA 设置,分别在 10 / 20 / 30 篇文档下测试,对应上下文长度约 2K / 4K / 6K tokens。关键变量仍是含答案文档的位置。
Figure 8:横轴为答案文档的位置,纵轴为准确率。左图(10篇,约2K tokens)中,Flan-UL2 曲线几乎水平——位置变化对它影响极小;中图和右图(20/30篇,超过其训练长度 2048 tokens),U 形曲线重新出现。Flan-T5-XXL 的分界点更早(512 tokens 以内鲁棒,超过后下降)。
怎么读这张图:图里有四条曲线,decoder-only 的两条(MPT-30B-Instruct、LongChat-13B)始终呈 U 形;encoder-decoder 的两条(Flan-T5-XXL、Flan-UL2)在左图(序列长度不超过其训练时长度)时非常平——最佳和最差位置的准确率差距仅 1.9%(Flan-UL2,10 篇设置)。一旦超过训练长度,它们也开始出现 U 形。
💡 结论:双向注意力确实有帮助,但有上限
Encoder-decoder 架构在训练长度范围内对位置变化更鲁棒,说明 decoder-only 的单向注意力确实是问题来源之一。但这个优势依赖训练时的序列长度——超出训练长度后,所有架构都「迷失在中间」。这也暗示问题的本质是训练分布,而非纯粹的架构限制。
4.2 Query-Aware 上下文化:把 Query 提前,能解决问题吗?
动机:4.1 的分析指出,decoder-only 的根本局限是「读文档时看不到 query」。一个直接的 trick 是:把 query 同时放在所有文档的前面和后面,这样模型在编码每篇文档时都能 attend 到 query,实现近似的 query-aware 表征,而无需修改模型本身。
标准 Prompt(query 只在最后):[任务描述]Document [1]: ...Document [2]: ......Document [k]: ...Question: {问题} ← decoder-only 编码文档时还没看到这行Answer:Query-Aware Prompt(query 首尾各放一次):[任务描述]Question: {问题} ← 提前放在文档之前Document [1]: ...Document [2]: ......Document [k]: ...Question: {问题} ← 再放一次(尾部保留)Answer:实验配置:分别在多文档 QA(20 篇,约 4K tokens)和 KV 检索(75 / 140 / 300 对)两个任务上测试,使用相同的六个模型。
Figure 9:Query-Aware 版(query 首尾各放一次)在 20 篇文档 QA 任务上的效果。与图 5 中同设置的标准 Prompt 对比:开头位置略有提升,其他位置基本持平甚至略降,整体 U 形趋势没有改变。
怎么读这张图:图 9 展示的是 query-aware 版 prompt 下的 QA 性能。对照第三章图 5 的同设置(20 篇):当答案在首位时,query-aware 版有约 2-3% 的提升;其他位置几乎持平甚至略有下降。U 形曲线形状没有根本改变。
但在 KV 检索任务上,效果截然不同。不加 query-aware 时,GPT-3.5-Turbo (16K) 在 300 个 KV 对的最差位置准确率仅 45.6%;加上 query-aware 后,该模型在所有位置均接近 100%——所有测试的模型在 75 / 140 / 300 对三个设置下全部达到近乎完美的精度。
💡 结论:KV 任务特效,QA 任务无效——揭示了两种失败模式
这个对比非常有诊断价值:KV 检索任务的失败,根因是无法定位目标 token 的位置,query-aware 一解决「看不到 query」的问题就立竿见影。而多文档 QA 的失败,不只是定位问题,还涉及对文档语义的理解和跨文档推理——仅靠提前放 query 不足以解决。两个任务背后是不同的失败机制。
4.3 Instruction Fine-Tuning 的影响:是微调的错吗?
动机:一个合理的猜测是:指令微调(SFT)数据通常把「任务说明」放在 prompt 开头、「问题」放在结尾,模型可能从这种格式中学到「头部和尾部更重要」的偏置。如果是这样,U 形曲线就是 instruction fine-tuning 引入的副作用,而非语言模型本身的问题。
实验配置:用 MPT-30B(base,未做指令微调) 和 MPT-30B-Instruct(同底座 + SFT) 做直接对比,完全相同的多文档 QA 设置(20 篇,约 4K tokens)。
Figure 10:MPT-30B(base)vs MPT-30B-Instruct 在 20 篇文档 QA 任务上的对比。两者均呈 U 形;Instruct 版整体准确率更高,但最佳/最差差距的收窄幅度有限(base 约差 9%,Instruct 约差 4%)。
怎么读这张图:两条曲线形状高度相似,都在首尾高、中间低。MPT-30B-Instruct 整体向上平移(绝对性能更高,因为指令微调帮助模型更好地理解任务格式),但 U 形的相对深度并没有被消除——只是从约 9% 的最佳/最差差距收窄到约 4%。
作者进一步用 Llama-2 不同尺寸(7B / 13B / 70B),分别比较 base 和 chat(SFT+RLHF)版本,得出了一个更有意思的规律:
| 模型 | 偏置类型 | 加 SFT/RLHF 后的变化 |
|---|---|---|
| Llama-2-7B | 纯 recency bias(只有尾部好) | 微弱改善,基本无变化 |
| Llama-2-13B | U 形(primacy + recency 双偏置) | 最佳/最差差距从约 20% 收窄到约 10% |
| Llama-2-70B | U 形(primacy + recency 双偏置) | 基本无变化 |
💡 结论:位置偏置来自预训练,模型规模决定偏置形态
base 模型已经有 U 形,说明这不是指令微调带来的,而是预训练阶段形成的。更有趣的是:7B 模型只有 recency bias,而 13B / 70B 才有 primacy + recency 双偏置——primacy bias 是随模型能力增长才「学会」的,而不是天然就有。这与过去 NLP 研究只在小模型上发现 recency bias 是一致的:那时的模型太小,还没有能力利用首部信息。
五、实践案例:更多检索文档真的有帮助吗?
Figure 11:开放域 QA 中,Retriever Recall 随检索文档数持续增长,但 Reader Accuracy 在约 20 篇时就已饱和。
在更真实的开放域 QA 场景(Contriever 检索 Wikipedia),随着检索文档数从 5 增加到 50:
Retriever recall
持续上升(更多文档里更可能包含答案)
Reader accuracy
在约 20 篇时饱和,50 篇 vs 20 篇仅提升 ~1.5%(GPT-3.5-Turbo)/ ~1%(Claude-1.3)
即:你的检索器把答案塞进了 prompt,但你的模型不一定能从 50 篇文档里找到它。检索 recall 的提升,并不能线性兑换成 QA 性能的提升。
⚠️ 对 RAG 系统的实践启示
检索文档数并非越多越好,建议控制在 20 篇以内(对 GPT-3.5 级别模型)
最重要的文档/段落应放在 prompt 的头部或尾部,避免放在中间
KV 检索类任务可以用 query-aware contextualization 大幅提升性能
评估新的长上下文模型时,位置变化鲁棒性(最佳 vs 最差性能差距)应作为重要指标
六、写在最后
论文最后也没明确U型曲线的根本原因,可能的原因比如:
- 注意力熵分布
Transformer 的位置编码(RoPE、ALiBi 等)对相邻 token 的注意力权重有天然衰减,越靠近当前生成位置的 token 注意力越集中。首部 token 在所有后续生成步骤中都被反复 attend,尾部 token 在生成答案时距离最近,中间的天然最吃亏。
- 训练数据分布
预训练语料(网页文章、代码、书籍)中,关键结论/答案往往出现在文章开头(新闻倒金字塔)或结尾(论文结论),中间是铺垫。模型从数据中「学到」了这种分布先验。
大模型的知识又多又杂,到底怎么学?
做这行久了,被问最多的问题就一个:大模型的知识又多又杂,我到底先学啥?翻了一堆资料,看啥都像重点,结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍,零基础、应届生、转行的都适用。跟着走,至少方向不乱、不瞎忙,学完拿得出手。
第一阶段(10天):初阶应用
这一阶段就一个目标:把大模型真正"玩明白",不是只会聊天那种,而是能调教它、能用代码把大模型和业务接起来。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
这阶段正式进实战,目标很实在:做出两个能拿出手的东西——一个私有知识库,一个 agent 对话机器人。
为什么要做 RAG
搭建一个简单的 ChatPDF
检索的基础概念
什么是向量表示(Embeddings)
向量数据库与向量检索
基于向量检索的 RAG
搭建 RAG 系统的扩展知识
混合检索与 RAG-Fusion 简介
向量模型本地部署
…
走完这 30 天,Python 或 JavaScript 背景的基本能独立做一套 RAG 应用,简历上也敢写"大模型应用开发"了。
第三阶段(约20天):动手微调
学到这,你已经开始 “造” 模型了 —— 通过微调,搞出垂直领域的专用小模型。
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗?
想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!
第四阶段(20天):商业闭环,部署落地
技术学完,落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
想要入坑大模型的朋友,给大家准备了一份2026 年最新 AI 大模型全套学习资料:
1、大模型系统化学习路线
2、大模型学习视频教程
3、大模型学习书籍&电子文档
4、AI大模型最新行业报告
5、大模型项目实战&配套源码
6、2026大模型大厂面试真题
7、为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
8、适合谁学?
- 传统后端 / Java / 前端开发,想转型 AI 应用
- 大学生、应届生,想拿更好的 offer
- 产品经理、运营,想武装职业竞争力
- 技术负责人,想给团队落地提效
学习是反人性的,但回报是真金白银。技术会更新,赛道会切换,但只要你先动手,机会就永远站在你这边。
9、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!
好了,就写到这。路线是死的,人是活的,卡住了随时来问我。觉得有用就点个收藏,别让它进收藏夹吃灰——动起来比啥都强。