2.2 上下文窗口的本质
2.2.1 什么是上下文窗口
上下文窗口(Context Window)是大语言模型一次能够处理的最大 Token 序列长度。它包括输入的提示词、对话历史、检索到的文档等所有信息,以及模型生成的输出。
可以将上下文窗口类比为模型的"工作记忆":
它有固定的容量上限
超出容量的内容无法被处理
窗口内的所有信息相互可见、相互影响
2.2.2 输入与输出的关系
上下文窗口容量需要同时容纳输入和输出:
上下文窗口容量=输入Token数+输出Token数
例如,一个 8K 窗口的模型:
如果输入占用 6K Token
则输出最多只剩 2K Token 的空间
这意味着在实际应用中,需要谨慎规划输入内容的规模,为输出留出足够空间。
2.2.3 上下文窗口的技术实现
从技术角度看,上下文窗口的限制来自多个层面:
位置编码:Transformer 使用位置编码(Positional Encoding)让模型感知 Token 的位置。传统的绝对位置编码难以泛化到训练时未见过的长度。现代模型采用改进方案如 RoPE(旋转位置编码)和 ALiBi(注意力线性偏置)
KV 缓存:在生成过程中,模型需要缓存之前所有 Token 的 Key 和 Value 向量。KV 缓存大小与上下文长度成正比——一个 70B 参数模型的 128K 上下文可能需要数十 GB 显存
注意力计算:自注意力的 $O(n^2)$ 复杂度使得超长上下文的计算成本极高,虽然有各种优化技术但基本瓶颈依然存在
2.2.4 长上下文的挑战
随着上下文窗口不断扩大,新的挑战也随之出现:
"大海捞针"问题:旧模型(如 GPT-4)存在"U型注意力分布"(Lost in the Middle),即中间内容关注度低。注:2026 年的 SOTA 模型(如 Gemini 3.0)已基本解决此问题,但在极端长度下仍需注意。
注意力稀释:上下文越长,每个 Token 的平均注意力权重越低,重要信息可能被"稀释"。
成本与延迟:更长的上下文意味着更高的计算成本和更长的响应延迟,直接影响用户体验。
质量与长度的权衡:精心筛选的短上下文往往比冗长的长上下文效果更好,信息质量比数量更重要。
2.2.5 有效上下文长度
需要区分两个概念:
声称上下文长度:模型官方宣称支持的最大长度
有效上下文长度:模型能够真正有效利用的长度
许多模型在接近最大上下文长度时,性能会显著下降。一个声称支持 128K 的模型,有效长度可能只有 64K 甚至更短。
评估有效上下文长度的常用方法是"大海捞针"测试(Needle in a Haystack):将一条关键信息放置在上下文的不同位置,测试模型能否准确检索。
2.2.6 上下文窗口的发展趋势
上下文窗口正在快速扩展:
2020
GPT-3
2K
2023
Claude 2.1
200K
2024
Gemini 1.5 Pro
1M
2025
Gemini 3.0 Pro
2M
2026
LLaMA 4 Scout
10M
然而,更大的上下文窗口并不意味着可以忽视上下文工程。事实上,超大上下文窗口让上下文管理变得更加重要——如何在巨大的可用空间中高效组织信息、避免噪声干扰、确保关键信息被正确利用,这些都是上下文工程需要解决的问题。
Last updated
