Context Window 是大模型的”工作记忆”,窗口越大,能同时处理的信息越多。
上下文窗口:大模型的”工作记忆”
大模型回答问题依赖两部分知识:
- 参数知识:训练时学到的,存储在模型权重中
- 上下文知识:推理时喂进去的,即 Context Window
窗口越大,能同时”看到”的内容越多,分析长文档、长代码库、多轮对话的能力越强。
2026年上下文窗口军备竞赛
| 模型 | 上下文窗口 | Token 数量 |
|---|---|---|
| GPT-4o | 128K | 约10万字 |
| Claude 3.5 | 200K | 约15万字 |
| Gemini 2.0 | 1M | 约75万字 |
| Kimi 1.5 | 200K | 约15万字 |
| Qwen 2.5 | 128K | 约10万字 |
Gemini 2.0 的 1M Token 窗口可以一次读完《战争与和平》全文还有余。
技术难点:长上下文为什么难做?
短文本到长文本,不是简单的”堆内存”,核心挑战:
1. 注意力机制的平方复杂度
标准 Self-Attention 的计算复杂度是 O(n²),n 是序列长度:
- 4K 上下文:16M 次计算
- 128K 上下文:16B 次计算(差1000倍)
- 1M 上下文:1T 次计算(差6万倍)
2. 位置编码的外推问题
Transformer 需要知道每个 Token 的位置。训练时没见过超长序列,位置编码会”失效”。
主流解决方案:
- RoPE(Rotary Position Embedding):相对位置编码,支持外推
- YaRN:专门优化长上下文的 RoPE 扩展
- ALiBi:用线性偏置替代绝对位置编码
3. KV Cache 内存爆炸
Attention 计算需要缓存 Key-Value:
KV Cache 大小 = 2 × 层数 × 隐藏维度 × 序列长度
1M 上下文、70B 参数模型,KV Cache 可能需要 几百 GB 显存。
主流优化技术
稀疏注意力(Sparse Attention)
不计算全连接注意力,只算局部和全局锚点:
# 稀疏注意力示例:Local + Global
def sparse_attention(query, key, value, local_window=512, global_indices=[0, seq_len-1]):
# 局部窗口注意力
local_output = causal_local_attention(query, key, value, local_window)
# 全局 token 注意力
global_output = global_attention(query, key, value, global_indices)
return local_output + global_output
代表工作:Longformer(局部+全局)、BigBird(随机+局部+全局)
滑动窗口 + 无限注意力
用固定大小的窗口模拟无限上下文:
┌──────────────────────────────────────────────┐
│ W2 W1 W0 ← 当前 Token │
│ ↓ │
│ [缓存区] ← 定期压缩/汇总历史信息 │
└──────────────────────────────────────────────┘
代表工作:Mistral 的 StreamingLLM、H2O(Heavy-Hitter Oracle)
KV Cache 量化压缩
将 KV Cache 从 FP16 量化到 INT4 / INT8,大幅降低显存占用:
| 精度 | 显存占用 | 质量损失 |
|---|---|---|
| FP16 | 100% | 无 |
| INT8 | 50% | <1% |
| INT4 | 25% | 2-5% |
代表工作:KIVI、LM-Infinite
分层检索(Hierarchical Retrieval)
不把全部文档塞进上下文,而是按需检索相关段落:
用户问题 → 检索相关段落 → 拼接 → LLM 生成
↑ 不是全文,是Top-K段落
这本质上是 RAG + Long-Context 的结合。
Long-Context 的实用场景
| 场景 | 窗口需求 | 价值 |
|---|---|---|
| 长篇小说阅读 | 100K+ | 一次性分析全书 |
| 代码库理解 | 200K+ | 理解多文件依赖 |
| 论文精读 | 128K | 全文+注释+问答 |
| 视频理解 | 1M | 多帧图像序列 |
| 法律文档 | 500K+ | 整本案规汇编 |
| 财报分析 | 200K | 多份年报对比 |
💡 小结
上下文窗口的扩张解决了大模型”记不住”的问题,但 O(n²) 复杂度是根本瓶颈。
当前主流方向:
- 稀疏化:不全量计算注意力
- 量化:压缩 KV Cache
- 外推:让模型能在训练范围外工作
- RAG 补充:不是塞更多,而是找更准
未来趋势:无限上下文 + 精准检索 的组合会是主流。