第 38 篇 · LLM基础

上下文窗口:AI的工作记忆有多大?

决定AI能"看到"多少内容的关键参数

🤔 你有没有遇到过这种情况:

跟AI聊了很长一段对话之后,你发现它"忘记"了你在最开始说过的事情。你明明告诉过它你的名字、你的项目背景、你的具体要求……但聊到后面,它开始给出完全不相关的回答,好像根本没听你说过那些内容。

这不是AI在跟你耍性子,也不是bug——这是上下文窗口(Context Window)的物理限制在发挥作用。

上下文窗口是什么?

1
上下文窗口:AI的"视野"

想象一下:AI在处理你的对话时,就像一个人站在一条长长的纸卷前面阅读。纸卷无限长,但这个人只有一个固定大小的"阅读框",框外的内容完全看不到。

这个"阅读框"就是上下文窗口,大小用 Token 数量来衡量。

上下文窗口 = AI当前能「看到」的所有内容
系统提示(System Prompt)
用户输入(User Input)
AI回复(Assistant Output)

← 上下文窗口(128K Token)→

🟣 系统指令🔵 历史对话(你说+AI回)🟡 你上传的文件/文章🔵✨ 当前新问题

AI每次回复,都是基于窗口内全部这些内容来生成答案的

📏 Token换算参考:

1K Token ≈ 750个英文单词
1K Token ≈ 500个中文汉字
128K Token ≈ 9.6万汉字
200K Token ≈ 15万汉字

(一本《三体》约36万字,约需要480K Token)

各大模型上下文对比

2
主流模型的上下文窗口大小

2024-2025 主流模型上下文窗口对比
Gemini 1.5 Pro2M Token

约150万汉字,可处理1小时视频+大量文字

Claude 3 系列200K Token

约15万汉字,处理整本小说没问题

GPT-4 Turbo128K Token

约9.6万汉字,相当于一部中篇小说

GPT-4o128K Token

同GPT-4 Turbo

DeepSeek V3128K Token

国内头部模型,支持超长对话

早期GPT-34K Token

约3000汉字,不到一篇长文章

* 数据为撰写时信息,模型持续升级,以官方为准

📈 上下文窗口的进化趋势

2020年的GPT-3,上下文只有2K Token(约1500字);2023年的GPT-4,跳跃到32K;2024年Gemini 1.5直接达到1M、2M Token。短短4年,增长了1000倍。

这背后是算法(RoPE位置编码、FlashAttention等)和硬件的共同进步——但也不是越大越好,后面会解释为什么。

上下文窗口里装的是什么?

3
上下文窗口里装了什么?

你可能觉得"上下文窗口"就是聊天记录,但其实它装的内容远不止这些:

📋 系统提示(System Prompt)

产品方设置的"规则说明书",比如"你是一个友好的客服助手,不能讨论竞品"。这部分用户通常看不到,但会占用相当多的Token。

占用量:几百到几千Token

💬 对话历史

你和AI之间所有的来往对话——你说的每一句话,AI给出的每一条回复,都会累积在窗口里。对话越长,占用越多。

占用量:线性增长,长对话可达数万Token

📄 上传的文件/文章

你粘贴进来的文章、代码、报告……这些都会直接进入上下文窗口。"帮我分析这篇论文"中的论文全文,也计入Token总数。

占用量:取决于文件大小,几千到几十万Token

🔧 工具调用结果(Tool Use)

当AI调用搜索、计算器、代码执行等工具时,工具返回的结果也会放进上下文窗口里,供AI参考和使用。

占用量:取决于工具返回内容

超出窗口会发生什么?

4
超出窗口:AI的"遗忘"机制

当对话内容超出上下文窗口时,会发生什么?不同系统有不同的处理策略:

三种处理超长上下文的策略
✂️

策略1:截断(Truncation)

最常见的方案。当内容超出窗口大小时,直接丢弃最早的内容(一般是最旧的对话轮次)。

当前

⚠️ 风险:AI会"遗忘"早期你说的重要信息

📝

策略2:摘要压缩(Summarization)

先把旧对话用AI自动压缩成摘要,再放进窗口,这样同样的窗口大小能"容纳"更多轮对话的信息。

旧对话×20轮
→ AI压缩 →
精华摘要×1段

✅ 保留信息精华,但可能丢失细节

🗂️

策略3:外部记忆检索(RAG)

把历史对话或知识库存储在外部数据库中,每次需要时动态检索最相关的片段放入窗口,实现"无限记忆"的效果。

外部知识库(无限大)
→ 检索相关 →
只放入相关片段

✅ 理论上支持无限长对话,但检索准确性有要求

窗口越大越好吗?

5
上下文窗口越大越好吗?

直觉上,当然是越大越好——能记住更多,能处理更长文档。但现实更复杂:

超长上下文的代价
💸

成本与延迟爆炸性增长

Transformer 架构中,注意力计算的复杂度是上下文长度的平方。上下文翻倍,计算量翻4倍,成本翻4倍,速度也会慢很多。128K Token的请求比4K Token贵32倍、慢数倍。

🎯

中间信息可能被"遗忘"

研究发现,即使信息在窗口范围内,如果它出现在很长对话的中间位置,AI也可能不太"关注"它。这个现象叫做"Lost in the Middle"(迷失在中间)——AI更容易注意到开头和结尾的内容。

🌊

注意力稀释

上下文越长,每一段内容能"分配到"的注意力越少。当窗口里塞满了无关信息时,真正重要的内容反而可能被稀释掉。

💡 实用建议

使用AI时,与其把大量无关内容塞进上下文,不如精选最相关的信息放进来。质量比数量更重要。如果你在分析一篇长文章,可以先让AI分段分析,再综合,而不是一次性全部粘贴进去。

上下文窗口 vs 记忆

6
上下文窗口 ≠ 长期记忆

很多人混淆了"上下文窗口"和"AI的记忆",这两件事其实很不一样:

上下文窗口 vs 三种记忆形式
类型持续时间跨会话?举例
上下文窗口本次对话期间❌ 不跨会话你在这次聊天里说的所有内容
模型权重记忆永久(训练时固化)✅ 跨会话模型学到的语言知识、世界知识
外部记忆(RAG)取决于存储方案✅ 可跨会话AI助手"记住"你上次说的偏好

🔑 关键点:每次开启新对话,上下文窗口就重置为空。AI不会"记得"你上次说的话,除非产品特别实现了跨会话记忆功能(比如ChatGPT的Memory功能)。

实用技巧

7
如何更高效地利用上下文窗口?

精简✂️

只放有用的信息

不要把所有相关材料都塞进去。先筛选,只提供AI真正需要的内容。与其放100页文档,不如只放最关键的3-5段。
结构🗂️

明确标注信息位置

用标题、编号清晰标注"背景信息"、"当前任务"、"输出要求",帮AI快速找到窗口里最重要的部分,避免"迷失在中间"。
分段📝

分批次处理长文本

处理长篇报告时,先让AI分段摘要,再综合。避免一次性超长输入导致注意力稀释和响应变慢。
重置🔄

适时开启新对话

当一个任务完成后,开启新对话而不是继续追加。新对话的AI没有"历史包袱",往往更专注、回答更准确。
技术实现:为什么扩展上下文很难?

8
为什么扩展上下文窗口很难?

上下文窗口不是想多大就多大,有几个技术挑战让扩展上下文成为难题:

扩展上下文窗口的三大技术挑战

🧮 挑战1:注意力计算复杂度 O(n²)

标准的Transformer注意力机制,计算量是序列长度的平方。把上下文从4K扩到128K,计算量增加了 (128/4)² = 1024 倍!这需要FlashAttention等高效算法才能实用化。

📍 挑战2:位置编码的泛化性

模型在训练时,看到的序列长度是有限的(比如4K)。直接用到更长的序列时,位置编码会"失效"——模型不知道怎么理解"第100K个位置"的token。RoPE位置插值等技术解决了这个问题。

💾 挑战3:显存需求爆炸

推理时需要在显存里保存所谓的KV Cache(键值缓存),用于存储每个token的注意力信息。序列越长,KV Cache越大,单次推理需要的显存可能高达几十GB。

总结

9
核心总结

🎓 一句话总结

  • 上下文窗口 = AI在本次对话中能"看到"的全部内容(系统提示+历史对话+当前输入)
  • 大小:从早期4K发展到现在128K~2M Token,4年增长1000倍
  • 超出限制:通常采用截断、摘要压缩或RAG检索来处理,各有利弊
  • 不是越大越好:计算成本平方增长,中间信息可能被忽视,注意力会稀释
  • ≠ 长期记忆:每次新对话重置为空,跨会话记忆需要额外的系统设计

下篇预告

第39篇:Prompt:如何和AI高效沟通

同样的需求,不同的Prompt写法,效果天差地别。为什么有些Prompt能让AI输出完美结果,有些却一塌糊涂?Prompt到底是什么,怎样写才有效?

✏️ 手绘图解 · AI Catch 出品

第 38 篇 / 共 84 篇