前置知识
阅读本文前,建议先了解:
- 大模型基础理论 - LLM基本原理
- 01-Token 与分词 - Token是上下文的基本单位
一、什么是上下文窗口?
上下文窗口(Context Window) 是LLM一次能处理的最大Token数量。你可以把它理解为LLM的”短期记忆”——它能”记住”多少内容。
LLM的上下文窗口 = 4000 Token
这意味着:
- LLM一次对话最多处理 4000 个Token
- 超过这个限制的内容,会被"忘记"
[!比喻] 像什么? 就像一个患有“短期记忆丧失”的人。他/她只能记住最近4000个字的内容,再早的内容就完全想不起来了。
二、为什么需要上下文窗口?
LLM处理Token的方式(Transformer架构中的注意力机制)需要计算所有Token之间的关系。如果上下文太长:
-
计算量爆炸:注意力机制的计算量是Token数量的平方
- 1000 Token:1,000,000 次计算
- 10000 Token:100,000,000 次计算(100倍!)
- 100000 Token:10,000,000,000 次计算
-
显存不够:所有Token都需要存储在GPU显存中
- 4000 Token ≈ 需要几十GB显存
- 100000 Token ≈ 需要几TB显存(不可能)
-
效果下降:太长的上下文可能会让模型”分心”,反而影响质量
所以,上下文窗口是技术限制下的折中方案。
三、上下文窗口的核心作用
2.1 维持对话连贯性
对话示例(上下文窗口 = 2000 Token):
【第一轮】
你:帮我推荐一部电影
LLM:《肖申克的救赎》是一部经典电影...
(消耗 200 Token)
【第二轮】
你:主演是谁?
LLM:主演是蒂姆·罗宾斯和摩根·弗里曼...
(累计消耗 500 Token)
【第三轮】
它获得了什么奖项?
LLM:它获得了...
(累计消耗 1200 Token)
...(继续对话)
【第N轮】 ← 已用完 2000 Token
你:之前说的电影叫什么?
LLM:抱歉,我不知道您在问什么... ← "忘记"了之前的对话
2.2 处理长文档
文档处理示例:
长文档:3000字文章(约4000 Token)
上下文窗口:4000 Token
结果:可以一次性处理完
---
长文档:10000字文章(约13000 Token)
上下文窗口:4000 Token
结果:只能分段处理,可能丢失跨段落信息
2.3 上下文学习(In-Context Learning)
上下文窗口不仅是“记忆”,还能让LLM从示例中学习:
你(输入):
请判断下面句子的情感是正面还是负面:
1. 这个产品太棒了!→ 正面
2. 很差,不推荐 → 负面
3. 还可以,一般般 → ?
LLM(在上下文窗口中学习了这个模式)
回答:负面
这就是为什么你可以在对话中给LLM举例子,它就能照着做的原因!
四、长上下文的发展现状
2.4 上下文窗口的演进
| 时间 | 模型 | 上下文窗口 |
|---|---|---|
| 2020 | GPT-3 | 4K |
| 2022 | GPT-4 | 8K → 32K → 128K |
| 2023 | Claude 2 | 100K |
| 2023 | LLaMA 2 | 4K |
| 2024 | Kimi | 128K / 200K+ |
| 2024 | GPT-4 Turbo | 128K |
| 2024 | Claude 3 | 200K |
2.5 扩展上下文窗口的技术
研究人员正在努力突破上下文窗口限制,主要技术包括:
-
滑动窗口(Sliding Window)
- 每次只关注窗口内的Token
- 旧的会被“滑出”窗口
-
稀疏注意力(Sparse Attention)
- 不计算所有Token之间的注意力
- 只计算相关的部分
-
线性注意力(Linear Attention)
- 把计算复杂度从O(n²)降到O(n)
- 可以处理无限长度
-
上下文扩展训练
- 直接在更长上下文上训练
- 但成本极高
长上下文的挑战
虽然技术上可以扩展上下文窗口,但:
- 更长的上下文会导致推理变慢
- 成本会显著增加
- 模型可能”忘记”远距离的信息
五、总结
- 上下文窗口 = LLM的”短期记忆”,限制了一次能处理的Token数量
- 受到计算复杂度和显存的限制
- 核心作用:维持对话连贯、处理长文档、上下文学习
- 长上下文是当前热门研究方向
延伸阅读
- 01-Token 与分词 - 了解Token概念