上下文窗口:AI 的"工作记忆"为什么有限,又为什么越来越不够用
一句话结论:不是硬盘记忆,是工作记忆;超出即不存在
读之前建议先懂: LLM 是如何思考的?一切从"预测下一个词"开始
当前判断
- 窗口内 = 它知道的;窗口外 = 不存在的。
- 塞满 ≠ 用上:中间内容最容易被忽略。
- 长对话”变傻”不是错觉,是早期内容被挤出去了。
一句话结论
上下文窗口是模型一次能”看到”的文本上限——它不是硬盘式的记忆,而是工作记忆:超出的部分就像没发生过一样。
逻辑链
模型每次预测都要读入全部上文 → 上文长度有上限(窗口)→ 超出窗口的内容被丢弃或截断 → 所以长对话会”忘事”→ 窗口越大,注意力被摊得越薄 → 长上下文 ≠ 好记性
展开
1. 窗口的本质:一次推理的视野
每次生成,模型都要把系统提示 + 历史对话 + 当前问题整体读一遍。窗口大小以 Token 计(1 汉字约 1-2 个 Token,1 英文单词约 1.3 个 Token),从早期 4K 到如今主流 128K-1M,跨度巨大。窗口内 = 它知道的;窗口外 = 它不存在的。
2. “中间遗忘症”(Lost in the Middle)
研究(Nelson F. Liu, Kevin Lin, John Hewitt, et al. Lost in the Middle: How Language Models Use Long Contexts, TACL 2023)发现:即使信息在窗口内,模型对开头和结尾的内容利用最好,中间部分容易被忽略。所以”塞满上下文”不等于”都用上了”。
3. 这解释了你遇到的三个日常现象
- 长聊到后面 AI “变傻”:早期对话被截断,它丢了你最开始给的要求
- “我说过用中文!“:那条指令已经滑出窗口
- 贴一份超长文档它答非所问:关键信息恰好落在它注意力弱的中间区域
决策规则
| 条件(IF) | 动作(THEN) |
|---|---|
| 有指令必须被全程遵守 | 同时放在开头和结尾,不要只说一次 |
| 资料长到要贴全文 | 先让它分段摘要,再只把相关段贴进窗口 |
| 窗口快满了、对话还要继续 | 让它总结当前结论与约定 → 开新对话粘总结(术语叫”结转”) |
常见误区
- ❌ “窗口 1M Token 就能读完整个知识库” —— 能读入 ≠ 能用好;中间遗忘 + 注意力稀释会让效果打折
- ❌ “AI 有记忆” —— 跨对话的”记忆”是产品层把历史重新塞回窗口实现的,模型本身没有持续记忆
- ❌ “窗口越大越好” —— 成本随 Token 数线性涨(见 09-token与计费逻辑),且效果未必线性升
现在就能做的事
- 关键指令放对话开头(系统提示/首条消息)和需要时重申在结尾
- 长对话定期”结转”:让 AI 总结目前的结论和约定,开新对话粘贴总结
- 长文档提问时,先用 AI 把文档分段摘要,再针对性细问相关段
相关页面
- 01-llm是如何思考的 — 窗口是预测的原料池
- 03-提示词的逻辑 — 在窗口内摆放信息的技巧
- 05-RAG — 窗口装不下的知识,用检索按需装入
出处与置信度
| 引用点 | 出处 | 类型 | 核验 |
|---|---|---|---|
| “中间遗忘症”:开头/结尾利用最好,中间易被忽略 | Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni, Percy Liang. Lost in the Middle: How Language Models Use Long Contexts. TACL 2023. arXiv:2307.03172 | [论文] | ✅ 已核验 2026-09-26 |
| 窗口 = 单次推理可见上文上限、跨对话记忆由产品层实现 | 由 01-llm是如何思考的 自回归机制推导 | [推导] | ✅ 机制稳定 |
| 各模型当前窗口大小(4K → 128K-1M)与定价 | 各厂商官方定价/模型文档 | [官方文档] | ⚠️ 待核验:时效性强,发布前须查官网 |
本页故意不写死具体窗口数值——数值迭代极快,写死即过时。读者请以厂商官网为准。