← 返回 AI 主页  /  上下文管理  /  上下文窗口

🪟 模型上下文窗口

一句话讲清「上下文窗口是什么 / 为什么是有限的 / 常见模型的上限是多少 / 超出后会怎样」——全程图解。

1什么是上下文窗口?

大语言模型(LLM)在一次推理中能「同时看到」的文本量是有限的,这个上限就叫 上下文窗口(Context Window)。它像一个固定大小的「工作台」—— 模型把对话历史、系统提示、你的新问题、以及它即将生成的回答,全部摆在这张台子上处理。

窗口里的文本按 Token( token,模型的最小处理单元,约等于「词 / 字 / 子词」)来计量。 窗口上限通常用 「K / M 个 Token」表示,例如 128K ≈ 12.8 万个 token。

一个 128K 上下文窗口 = 以下四部分共享的 Token 预算 系统 ~2K 对话历史 ~80K(最大头) 当前输入 ~30K 模型输出 ~16K ⚠ 四部分「抢」同一个预算:历史越长,留给当前问题和回答的空间越少
图 1:上下文窗口的内部结构——所有内容共用一份 Token 预算
注:上图各段比例是示意,用于说明「预算被共享」。真实占比随场景变化:长对话里历史占绝大部分,而单次问答里输入/输出占比更高。

2窗口为什么用 Token 计量,而不是字数?

模型并不是直接「读字」,而是先把文本切成 Token 再喂给神经网络。不同语言、不同模型的切法不同:

中文:「我喜欢吃苹果派」 喜欢 苹果 → 约 5~6 个 Token 英文:"I like apple pie" I like apple pie → 通常 4 个 Token
图 2:Token 是「子词」级切分,跨语言密度不同(中文往往 1~2 字 / Token)
🔤

不等同于字数

同一段中文,1 个汉字可能就是 1 个 token,也可能被拆开;英文一个词可能是 1 个或多个 token。

📏

经验换算

英文约 1 token ≈ 0.75 单词;中文约 1 token ≈ 1~1.5 个汉字。所以 128K token ≈ 8~10 万汉字。

💸

直接决定账单

API 按「输入 token + 输出 token」分别计费。窗口越大、用得越满,成本越高。

3上下文窗口带来的四大核心问题

窗口不是「越大就万事大吉」。即使上限很大,实际使用中仍有四类典型问题:

① 截断(Truncation):装不下就被切掉

当输入内容(历史 + 系统提示 + 当前问题)超过窗口上限时,要么直接报错,要么「悄悄」丢掉最前面/最早的内容。被丢掉的往往是最早但可能重要的背景

窗口上限(如 128K) 系统 早期历史 近期历史 当前问题 更早的内容 被丢弃 ✂ ✂ 超出窗口的部分被截断 / 报错
图 3:输入超过上限时,早期内容最先牺牲

② 中间迷失(Lost in the Middle):装得下也未必用得好

2023 年的研究(Lost in the Middle)发现:即便内容都在窗口内,模型对开头结尾的信息利用率高, 对中间部分明显「走神」——关键信息放在长文本的腰上,模型反而容易答错。

回答准确率 信息在窗口中的位置 → 开头(系统/最新) 中间(最易被忽略) 结尾(当前问题) U 形注意力分布
图 4:模型对「首尾」更敏感,关键信息放中间反而危险

③ 注意力稀释:窗口越大,单位信息越「淡」

即使没有硬截断,塞进太多无关内容也会让模型「分心」:指令遵循变差、事实准确性下降、开始编造。 业内把这种现象概括为 「长上下文 ≠ 会用长上下文」——很多模型的有效利用率远低于标称窗口

④ 成本与延迟:不是免费变大

Transformer 的自注意力机制,计算量大致随 token 数 平方级增长。 上下文翻倍,成本和延迟往往远不止翻倍。长窗口用满,账单会「指数级」跳。

计算/成本 上下文长度(token)→ 短上下文 长上下文 ×N²
图 5:注意力计算量近似随长度平方增长,长上下文代价高昂

4常见模型的上下文窗口上限(对比图)

下面是主流大模型的上下文窗口上限对比。由于数值跨度极大(从 16K 到 2M), 横轴采用对数刻度,方便在同图里比较。

GPT-3.5 Turbo
16K
Mistral Large
32K
DeepSeek V3 / R1
64K
GPT-4o / 4 Turbo
128K
Llama 3.1 / 3.3
128K
Qwen2.5 / 通义
128K
Claude 3 / 3.5 / 3.7
200K
OpenAI o1 / o3
200K
Kimi (Moonshot)
200K
Gemini 1.5 Pro/Flash
1M
Gemini 2.x(最大)
2M
10K100K1M
图 6:主流模型上下文窗口上限(横轴为对数刻度)
📌 说明:以上为各模型标称的最大上下文窗口,数值会随厂商版本迭代变化(例如 Gemini 在 1.5 之后把上限推到 1M~2M,Claude / OpenAI 推理模型普遍到 200K)。 实际可用「有效长度」通常小于标称值。请以官方文档为准。

更细的横评表

模型上下文窗口(上限)输入计费档(参考)典型定位
GPT-3.5 Turbo16K轻量、便宜
GPT-4o / GPT-4 Turbo128K通用主力
OpenAI o1 / o3(推理)200K较高深度推理
Claude 3 / 3.5 / 3.7 Sonnet200K中~高长文档、代码
Gemini 1.5 Pro / Flash1M(2M 可选)超长上下文
Gemini 2.x(最大)2M超长上下文旗舰
Llama 3.1 / 3.3128K自托管免费开源可私有部署
DeepSeek V3 / R164K(128K 版)高性价比
Qwen2.5(通义千问)128K中文友好开源
Kimi(Moonshot)200K+长文本对话

5最容易混淆的一点:输入上限 ≠ 输出上限

窗口上限通常指输入能放多少 token;但模型单次能生成的 token 数(输出上限)往往小得多—— 常见只有 4K~16K,少数到 64K。即使你给它 200K 的「阅读空间」,它一次也写不出 200K 的字。

输入窗口(能读) 例如 200K tokens:系统 + 历史 + 长文档 + 你的问题 输出窗口(能写) 往往仅 4K~16K 输出 ≪ 输入
图 7:读得多、写得少——输出上限是另一个独立瓶颈
实践提醒:需要模型「输出超长内容」(如整本书翻译、超长报告)时,要靠分批 / 流式 / 多轮拼接,而非指望一次生成。

6上下文窗口是怎么「长大」的?

短短几年,窗口从「几千」涨到「百万级」,本质上是对注意力机制和工程优化的持续突破。

2020GPT-32K 2023初GPT-48K/32K 2023中Claude 2200K 2023末GPT-4 Turbo128K 2024Gemini 1.51M 2025Gemini 2.x2M 从「读几段」到「读一整座图书馆」
图 8:上下文窗口演进时间线(代表性节点)

7窗口不够 / 用不好,怎么办?(解决思路)

面对「有限 + 中间迷失 + 成本高」三重约束,工程上有一套成熟的组合拳:

📚 长文档
书籍 / 代码库 / 知识库
✂ 切块 Chunk
按语义切分成小段
🔢 向量化
Embedding 入库
🔍 检索 Top-K
只取最相关的几段
🪟 塞进窗口
小窗口也能答大事
图 9:RAG(检索增强生成)——用「检索」替代「全量塞窗口」
🔍

RAG 检索

只把最相关的片段送进窗口,从根本上避免超长输入与中间迷失。

✂️

滑动窗口

只保留最近 N 轮对话,更早的「滚出」窗口,控制长度与成本。

📝

摘要压缩

让模型把早期历史总结成短摘要,用摘要替代原文,腾出预算。

🧠

外部记忆

把知识存到向量库 / 数据库,需要时再取,突破单次窗口限制。

8怎么选?一句话决策指南

📖 要「读超长资料」

如整本手册、长代码库、大 PDF:优先 Gemini 1M~2MClaude 200K; 更稳的做法是配合 RAG,别硬塞。

💬 多轮长对话

聊天机器人 / 客服:用 滑动窗口 + 摘要 控成本,避免历史无限膨胀。

💰 成本敏感

高频调用:选 DeepSeek / Qwen / GPT-3.5 这类小窗口低价模型,靠架构补能力。

🧩 要「写超长输出」

翻译整书 / 生成大报告:盯紧输出上限,用 分批 + 多轮 拼接,而非一次生成。

🧭 一句话总结:上下文窗口 = 模型一次能「看到」的 Token 上限。它有限、且「装得下 ≠ 用得好」; 选模型看输入上限,做产品看输出上限,真要应对超长内容,靠 RAG + 压缩 + 记忆 而非盲目加大窗口。