前置知识

阅读本文前,建议先了解:


一、什么是上下文窗口?

上下文窗口(Context Window) 是LLM一次能处理的最大Token数量。你可以把它理解为LLM的”短期记忆”——它能”记住”多少内容。

LLM的上下文窗口 = 4000 Token

这意味着:
- LLM一次对话最多处理 4000 个Token
- 超过这个限制的内容,会被"忘记"

[!比喻] 像什么? 就像一个患有“短期记忆丧失”的人。他/她只能记住最近4000个字的内容,再早的内容就完全想不起来了。


二、为什么需要上下文窗口?

LLM处理Token的方式(Transformer架构中的注意力机制)需要计算所有Token之间的关系。如果上下文太长:

  1. 计算量爆炸:注意力机制的计算量是Token数量的平方

    • 1000 Token:1,000,000 次计算
    • 10000 Token:100,000,000 次计算(100倍!)
    • 100000 Token:10,000,000,000 次计算
  2. 显存不够:所有Token都需要存储在GPU显存中

    • 4000 Token ≈ 需要几十GB显存
    • 100000 Token ≈ 需要几TB显存(不可能)
  3. 效果下降:太长的上下文可能会让模型”分心”,反而影响质量

所以,上下文窗口是技术限制下的折中方案


三、上下文窗口的核心作用

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 上下文窗口的演进

时间模型上下文窗口
2020GPT-34K
2022GPT-48K → 32K → 128K
2023Claude 2100K
2023LLaMA 24K
2024Kimi128K / 200K+
2024GPT-4 Turbo128K
2024Claude 3200K

2.5 扩展上下文窗口的技术

研究人员正在努力突破上下文窗口限制,主要技术包括:

  1. 滑动窗口(Sliding Window)

    • 每次只关注窗口内的Token
    • 旧的会被“滑出”窗口
  2. 稀疏注意力(Sparse Attention)

    • 不计算所有Token之间的注意力
    • 只计算相关的部分
  3. 线性注意力(Linear Attention)

    • 把计算复杂度从O(n²)降到O(n)
    • 可以处理无限长度
  4. 上下文扩展训练

    • 直接在更长上下文上训练
    • 但成本极高

长上下文的挑战

虽然技术上可以扩展上下文窗口,但:

  • 更长的上下文会导致推理变慢
  • 成本会显著增加
  • 模型可能”忘记”远距离的信息

五、总结

  • 上下文窗口 = LLM的”短期记忆”,限制了一次能处理的Token数量
  • 受到计算复杂度显存的限制
  • 核心作用:维持对话连贯、处理长文档、上下文学习
  • 长上下文是当前热门研究方向

延伸阅读