LLM Context Window 竞赛:一场没有终点的马拉松
目录
Context window 是什么
简单说:context window 是 LLM 一次能处理的 token 数量。
你跟 LLM 对话的历史、所有背景信息、你给的文档——都在 context window 里。
context window 越大,LLM 能同时处理的"记忆"就越多。
2023 年的 context window 竞赛
| 模型 | Context Window | 发布时间 |
|---|---|---|
| GPT-3.5 | 4k | 2022 |
| GPT-4 初始版 | 8k | 2023-03 |
| GPT-4 32k | 32k | 2023-05 |
| Claude 2 | 100k | 2023-07 |
| Gemini 1 | 1M | 2023-12 |
| Claude 2.1 | 200k | 2023-11 |
数字看起来很吓人。但这些数字在实际场景里能用在哪里?
真实使用场景
场景 1:代码库分析
200k context 理论上可以把整个代码库丢给 LLM。
# 实际测试:分析一个有 50 万行代码的项目
# Claude 2 (100k) 可以分析到什么?
# - 单个文件的完整分析:✅
# - 10 个相关文件的分析:✅
# - 整个代码库:❌ (超出 100k)
# 实际上 100k tokens 大约等于 7.5 万英文单词
# 或者 2500 行代码结论:100k 对单个模块或小型代码库够用,对大型代码库依然不够。
场景 2:长文档处理
# 典型场景:处理一本技术书籍
# 《Designing Data-Intensive Applications》
# - 英文版约 30 万词
# - 100k tokens ≈ 7.5 万词
# - 需要分 4 次处理Claude 200k 可以一次处理完一本普通技术书的大部分章节。但实际意义有限——你需要先从书里找特定信息,不是整本丢进去。
场景 3:多文档比较
# 实际用例:比较 10 份技术文档
# 每份文档平均 1 万词
# 10 份 = 10 万词 = 约 130k tokens
# 200k context 可以一次处理
# 但输出质量取决于你怎么组织 promptcontext window 的真实限制
1. 模型不一定会"用满"整个 context
研究发现,随着 context 变长,LLM 对中间信息的注意力会下降——这叫 “lost in the middle”。
# 实验:把代码分成三段
# 开头:设置代码
# 中间:核心逻辑
# 结尾:测试代码
# 问:测试代码验证了什么功能?
# 8k context: 准确回答
# 200k context: 经常答错(忘了中间内容)所以即使有 200k context,如果你的信息放在中间,LLM 可能还是会漏掉。
2. 成本随着 context 增长
# GPT-4 32k 的成本:
# - 8k tokens 以内:$0.03/1k tokens
# - 超过 8k:$0.06/1k tokens
# 实际对话:
# - 32k context 的平均成本 ≈ 8k context 的 3 倍3. 延迟是另一个问题
# 32k context 的 first token 时间
# GPT-4 32k: ~30-60 秒
# Claude 100k: ~15-30 秒
# 这还是单轮对话
# 多轮对话累计 context,时间会更长实用建议
不要被数字迷惑。
| 任务 | 实际需要的 context |
|---|---|
| 单文件代码 review | 2-5k tokens |
| 小型项目分析(5-10 个文件) | 10-30k tokens |
| 整本技术书籍总结 | 50-100k tokens |
| 整个代码库分析 | 永远不够,分模块处理 |
context window 是能力,但不代表你需要一直用满。
结论
2023 年的 context window 竞赛是宣传战,不是技术突破。
200k context 听起来很厉害,但:
- 大多数场景不需要这么大
- 模型对中间内容注意力会下降
- 成本和延迟是真实问题
更重要的是:怎么组织 context 让 LLM 有效利用,比单纯增加 window 大小更重要。
这才是 2024 年需要解决的问题。