上下文窗口(Context Window)
上下文窗口是模型一次能"记住"的最大信息量。它是 LLM 的"工作记忆"上限——超出这个范围的内容,模型会彻底"忘记"。
① 一句话定义
上下文窗口(Context Window)是大语言模型在一次推理中能"看到"并处理的最大 Token 数量。你可以把它理解成模型的"工作记忆"——在这个窗口内的所有内容,模型都能通过注意力机制互相参照;一旦内容超出窗口范围,模型会"忘记"最前面的部分,就像你永远只能同时记住最后看过的若干页书。
比如一个模型的上下文窗口是 128K Token,意味着它可以同时"记住"大约一本 200 页书的全部内容——但如果你的对话历史+Prompt+文件超过了 128K,模型就会开始"遗忘"。
② 为什么重要
一、上下文窗口是 LLM 的核心竞争力指标
在参数规模趋于同质化的 2024-2025 年,上下文窗口长度成为模型竞争的核心维度之一。从 GPT-3 的 2K,到 GPT-4 Turbo 的 128K,再到 Gemini 1.5 Pro 的 1M(100 万 Token,约 75 万英文单词),上下文窗口的扩大正在改变 LLM 的能力边界:你可以把整本书、整个代码库、一整天的会议记录一次性喂给模型。
二、上下文窗口直接决定了你的应用架构
如果你的模型只有 4K 上下文窗口,你被逼着做 RAG(只检索相关片段喂给模型)。如果模型有 1M 上下文窗口,你可以直接把所有文档全塞进去——省去了检索步骤,但增加了推理延迟和 Token 成本。理解上下文窗口的限制和代价,是做 AI 应用架构设计的起点。
三、"Lost in the Middle"——长上下文模型的隐藏问题
研究表明,即使模型支持很长的上下文窗口,它对中间部分信息的处理能力显著弱于开头和结尾。把一份 100 页的报告中最重要的信息放在第 50 页,模型很可能"看不见"。这不仅是一个基准测试问题,更是一个影响所有长文档处理应用的实际瓶颈。
③ 核心机制
为什么上下文窗口有上限?
核心原因来自 Transformer 注意力机制的计算复杂度——自注意力(Self-Attention)的计算量与序列长度呈平方增长(O(n²))。128K Token 的注意力计算量是 4K 的 1024 倍。你加长上下文窗口,推理速度和显存消耗也呈平方级上升。模型的上下文窗口长度是在训练时就确定的(位置编码的范围),推理时无法动态扩展。
模型怎么处理超出窗口的内容?
三种策略:①截断(Truncation)——直接丢掉最前面的内容,最简单粗暴;②滑动窗口——保留最近 N 个 Token,旧的逐步丢弃;③RAG + 分块——将长文档预分成块,每次只检索最相关的几块喂给模型。策略③是目前生产环境最常见也最有效的方法。
"大海捞针"测试——长上下文的试金石
业界用"Needle in a Haystack"来测试长上下文模型的实际能力:在一份超长文档(如 100K Token)的某个随机位置,插入一句完全不相关的事实("针"——比如"最好的披萨配料是菠萝"),然后在文档末尾问:"最好的披萨配料是什么?"如果模型能找出来,说明它的长上下文能力是真实的。很多模型在宣传的"最长上下文"下根本通不过这个测试。
④ 典型应用场景
场景 1:长文档问答——你有一份 200 页的合同,用 128K 上下文窗口的模型直接让它"总结第 73 条的主要风险点"——不需要先拆分文档,模型能直接定位并回答。
场景 2:全代码库理解——把整个项目的代码文件(几十个文件,数万行代码)一次性喂给模型,然后让它回答跨文件的逻辑问题——"这个 API 的调用链是什么?从 Controller 到 Database 经过了哪些层?"
场景 3:长期对话记忆——AI 伴侣或教练类产品需要记住你和它几个月的对话历史。长上下文窗口让这成为可能——但 Token 成本也高得离谱(每次对话都要重新处理所有历史)。
⑤ 常见误区
误区一:上下文窗口越大越好——长上下文带来两个代价:推理时间更长、API 成本更高(每次调用都要为整个窗口内的 Token 付费,即使你只关心其中一小部分)。128K 的"能力"不等于 128K 的"经济"。大多数实际应用 8K-32K 已足够。
误区二:模型能"记住"窗口内的所有内容——如前所述,"Lost in the Middle"现象表明模型对中间信息的提取能力远逊于开头和结尾。把关键信息放在 Prompt 的最前面或最后面。
误区三:上下文窗口 = 模型的长期记忆——这是两个完全不同的概念。上下文窗口是一次推理的临时"工作记忆",调用结束后就清空了。长期记忆是通过外部存储(向量数据库、对话摘要、Memory 模块)实现的。
📜 历史与来源
GPT-1(2018):512 Token;BERT(2018):512;GPT-2(2019):1024;GPT-3(2020):2048;GPT-3.5(2022):4096;Claude 1(2023):100K(当时最长的商业模型);GPT-4 Turbo(2023):128K;Gemini 1.5 Pro(2024):1M(标志着百万级时代的到来)。从 512 到 1,000,000——这 6 年上下文窗口扩大了近 2000 倍,远超算力的增长速度。
故事一:Gemini 1.5 Pro 的 100 万 Token 震撼发布
故事一:Gemini 1.5 Pro 的 100 万 Token 震撼发布
2024年2月,Google发布了Gemini 1.5 Pro,声称支持100万Token的上下文窗口——足以容纳整个《三体》三部曲。演示视频中,模型准确回答了关于这套超长文本的细节问题。虽然随后被发现部分演示经过了处理,但这个里程碑毫无疑问把上下文窗口的"军备竞赛"推向了新高。到2025年,百万级上下文窗口已成为顶级模型标配。
故事二:Claude 的"记忆衰退"实验
Anthropic的研究员做了一个著名的实验:在和Claude进行了长达数小时的深度对话后,在第50000个Token附近问了Claude一个在第1000个Token处约定好的"秘密暗号"。Claude答对了第100000个附近的暗号,却完全忘记了中间部分的——尽管所有内容都在"上下文窗口"内。这个实验是"Lost in the Middle"现象最生动的证明。
争议:我们需要超长上下文还是更好的 RAG?
一派主张继续扩大上下文窗口,最终让模型能"一次读完整个互联网"——不再需要检索。另一派认为更好的检索策略(RAG)比更大的上下文窗口更重要——人类也记不住所有东西,我们查笔记、翻书、搜索,RAG 才是更自然的路径。目前看两种路线会长期共存:长上下文让模型能力更全面,RAG 让部署更经济。
「上下文窗口是 LLM 的"工作记忆"——在这个窗口内的信息,模型能充分理解和关联;超出窗口的信息就是不存在的信息。选择模型时不要只看参数,窗口大小同样关键。
」