← 算法与AI总览 首页 / 算法与AI / AI 基础入门 / 第8课 · 上下文窗口
AI 基础入门 · 第8课

上下文窗口:大模型一次能"看"多少字

你有没有这种经历:跟豆包聊了半天,它突然把你十分钟前说的话忘了?这不是它不用心,是它的"工作台"就那么大。这一课讲清楚三件事:模型眼里的文字单位叫 Token;模型一次能摊开在桌上看的字数上限叫 上下文窗口(Context Window);以及——它超了这个上限会发生什么。

① 小白第一课怎么学(4 步走,约 50 分钟)

这一课是理解"为什么长文本要花钱、为什么会忘事"的关键,也是下一课"记忆"的铺垫。

1先搞清 Token(10 分钟)
读②③:模型不认识"字",它只认切好的 token 块。
2理解上下文窗口(15 分钟)
读④:工作台有多大,能摊开多少东西。
3看超窗后果(10 分钟)
读⑤⑥:为什么会截断、为什么按 token 收费。
4刷题自测(15 分钟)
做⑦⑩,错题回⑥看易错点。
本课小目标学完你要能:① 解释什么是 token、中文英文大概怎么折算;② 说清上下文窗口里能装哪四类东西;③ 说出现代模型 128K / 200K / 1M 档位大概对应多少字;④ 讲出"超窗"会发生哪三件事。

② 一图看懂:上下文窗口里到底装了什么

上下文窗口 = 模型这次的"工作台"(一次能读入的 token 总数) ① 系统提示 System Prompt "你是一个助手,回答要简洁…" 每次都在,占固定一小格 ② 对话历史 History 你和它前面聊过的每一句话 越聊越长,越占地方 ③ RAG 检索材料 临时塞进来的资料片段/文档 用来让它"现查现用" ④ 用户当前问题 你这一轮真正想问的那句话 工作台最右边,等着被回答 四块加起来一旦超过上限 → 最左边的内容被"挤掉"(滑动窗口,旧的先丢)
读法:模型每次回答前,会把这四类东西拼成一长串一起读进去。工作台是固定大小的,东西越多,越早放进去的就越容易被挤到桌子外面——这就是"聊到后面忘了前面"的物理原因。

③ 本质直觉:模型不认识"字",它只认 token 块

先破除一个误会:大模型不是一个字一个字读你的输入的。它眼里根本没有"汉字""英文单词"这种概念。在它处理之前,有一道叫分词器(Tokenizer)的工序,会把你的整段文字切成一个个token(词块),模型才开始工作。

token 是什么?你可以把它想成"半个字到一个常用词之间的小块"。常见的词直接是一个 token,生僻的词会被拆成几段再拼起来。

英文例子:单词 unbelievable 对人来说是一个词,但分词器可能把它切成 un + believ + able 三块。为什么这么切?因为这三块在训练文本里都很常见,拼成各种词时都能复用(unhappy、unclear、believable、readable……)。

中文直觉:中文没有空格,分词器会按字和常见词组切。经验值:中文大约 1 个汉字 ≈ 1~2 个 token(常用字偏 1,生僻字偏 2);英文大约 1 个常用单词 ≈ 1~1.5 个 token。

为什么要知道这个?因为 API 收费、上下文上限,全都是按 token 算的,不是按"字数"算的。你以为发了 1000 字,可能花了 1500 个 token 的钱。

你输入的原文 "unbelievable" 分词器 Tokenizer 切一刀 un + believ + able(3 块) 模型逐块读入 3 个 token 占工作台 3 格 中文:1字≈1-2 token;英文:1词≈1-1.5 token
为什么要"切小块"而不是整词整词塞因为语言无穷无尽,你不可能给每个词都准备一个编号。切成可复用的小词块后,模型就能用有限的积木拼出几乎所有词——包括它从没完整见过的新词。这就是它能"理解"生僻词和拼写变体的诀窍。

④ 完整体系:上下文窗口的档位与构成

什么叫"上下文窗口"(Context Window)

就是模型这一次回答时,最多能同时"看见"多少个 token。它像一张工作台的桌面大小:桌上摆得下的材料,模型才能参考;摆不下的,它真的就看不见了——不是它"忘了",是物理上没放进去。

主流长上下文档位对比

档位大约对应中文能放下什么典型用途
4K~8K约 3~6 千字几轮对话 + 短提问早期模型、简单聊天
32K约 2~3 万字一篇长文 + 对话读一篇中短篇小说
128K约 8~12 万字一整本书 + 对话历史长文档分析、整本书问答
200K约 15~20 万字几本书 + 大量资料Claude 常见档位
1M+(百万级)约 70~100 万字上百份文档同时喂入代码库整体分析、超长资料汇总
"128K"到底是多少字128K token 不是 128K 字。按中文 1 字 ≈ 1.5 token 粗算,128K 大约对应 8~12 万汉字(一本中等厚度的书)。别被"K"唬住,换算成你熟悉的汉字才有概念。

上下文里那四类东西谁在占地方

组成占多少说明
系统提示固定小份"你是谁、怎么说话",每轮都在
对话历史越聊越多前面所有问答,每轮都重新塞一遍
RAG 材料按需波动检索回来的文档片段,临时拼进来
当前问题很小你这一轮真正问的那句

⑤ 超窗会怎样:三个真实后果

后果一:早期内容被截断(滑动窗口)
东西堆不下了,桌子最左边最早放的材料被抽走。
实现上通常是滑动窗口:保留系统提示,然后从对话历史里把最早的几轮丢掉,只留最近的。所以你会发现——它记得你刚说的话,却忘了你二十分钟前告诉它的名字。
后果二:模型开始"一本正经地失忆"
被挤掉的内容,模型真的不知道了。
它不会告诉你"我忘了",而是像没听过一样继续编。你追问"我刚才不是说过我儿子上二年级吗",它可能道歉说"抱歉没注意",其实是那段已经不在工作台里了。
后果三:API 成本按 token 计费,越长越贵
工作台塞得越满,每次推理花的钱越多。
调用大模型 API 是按输入 token + 输出 token 一起计费的。你每次发消息,前面整段对话历史都要重新读一遍、重新算一遍。聊得越久,每一轮越贵、越慢。这就是为什么工程上要做"记忆压缩"(下一课讲)。
关键区分:上下文窗口 ≠ 模型记忆很多人以为"窗口大=记性好"。不对。上下文窗口只是这一次的工作台,对话一关就全没了,它不会自动存到下次。真正的"跨会话记住你是谁",是另外一套外挂系统做的——这正是下一课《记忆》要讲的内容。

⑥ 高频错误诊断(4 条)

错误 1:把 token 等同于"字"或"词"Token 是分词器切出来的子词块,既不等于汉字也不等于英文单词。中文 1 字常要 1~2 个 token,英文 1 个常用词约 1~1.5 个 token。算钱时按 token 算,不按字数算。
错误 2:以为上下文窗口越大模型越聪明窗口大只代表"一次能读更多材料",不代表它理解力变强。塞进去的东西太多,它甚至会"中间遗忘"(lost in the middle)——开头结尾记得牢,中间一大段容易忽略。
错误 3:以为聊完关掉网页,模型就"记住你了"不会。这次对话结束,工作台清空。下次新开对话,它完全不认识你。所谓记忆全靠外挂,见下一课。
错误 4:以为超窗会报错大多数情况不会报错,而是静默截断——悄悄把最早的内容丢掉,你还以为它都看了。这是最坑的一点:长文档问答时,务必确认关键信息没落在被截掉的部分。

⑦ 考点真题演练(4 题)

考点分布

考法出题形式应对
Token 折算问中文 1 字约多少 token1~2 个
窗口构成问哪四类塞进上下文系统提示/历史/RAG/当前问题
超窗行为问超窗会怎样静默截断早期内容
窗口 vs 记忆问窗口是不是长期记忆不是,关对话就没

真题基础1. 关于 Token,下面哪种说法正确?

真题中档2. 一个 128K token 的上下文窗口,大致能装下多少中文?

真题中档3. 对话太长、超过上下文窗口时,系统通常怎么做?

真题拔高4. 为什么说"上下文窗口 ≠ 模型的长期记忆"?

⑧ 必背知识点卡

Token:分词器切出的子词块,模型最小处理单位 不是字也不是词
折算:中文 1 字≈1-2 token,英文 1 词≈1-1.5 token 算钱按 token
Tokenizer:把 unbelievable 切成 un+believ+able 复用小积木
上下文窗口:一次能读入的 token 上限 = 工作台大小
窗口四块:系统提示 + 对话历史 + RAG 材料 + 当前问题 一起读进去
超窗三件事:静默截断早期内容 / 装作忘了 / 成本按 token 上涨 不报错
窗口≠记忆:关对话就清空,跨会话靠外挂 下一课讲

⑨ 应用输出:帮同事估算"这个需求要多大窗口"

实战场景:同事说"我想把这份 50 页的合同让 AI 通读后总结风险点,该选多大窗口?"
① 先估 token:50 页中文合同约 3~5 万字,折 token 大概 5~8 万。
② 留余量:还要加系统提示、你提的问题、以及它输出的总结。选 128K 窗口才稳妥,别硬塞 32K。
③ 提醒风险:就算窗口够大,也别假设它逐句看了——长文档容易"中间遗忘",关键条款要单独点出来问。
④ 说成本:每次都把整份合同重新读一遍,token 费用不低,频繁试错要先算好账。
口述全链路"模型先由分词器把文字切成 token 块;上下文窗口是它这次能同时读的 token 上限,里面装着系统提示、对话历史、RAG 材料和你的问题;超了就静默截断最早的、还按 token 收钱;窗口只是本次工作台,不等于长期记忆。"

⑩ 分层练习 16 题(基础 6 + 中档 5 + 拔高 5)

▍基础 6 题

基础1大模型处理文字的最小单位叫什么?
叫 Token(词块),由分词器切分,既不是完整的字也不是完整的词。
基础2中文大约 1 个汉字对应几个 token?
大约 1~2 个 token,常用字偏 1,生僻字偏 2。
基础3上下文窗口的英文是什么?
Context Window,指模型一次能读入的 token 上限。
基础4把 unbelievable 切成 un+believ+able 的工序叫什么?
分词器(Tokenizer),把文字切成可复用的子词块。
基础5128K 窗口大约能装多少中文?
粗算约 8~12 万汉字,差不多一本中等厚度的书。
基础6调用 API 是按什么计费的?
按 输入 token + 输出 token 一起计费,不是按字数。

▍中档 5 题

中档7上下文窗口里通常包含哪四类内容?
① 系统提示;② 对话历史;③ RAG 检索材料;④ 用户当前问题。四类拼在一起一次性读入。
中档8对话超过窗口上限时,最常见的处理方式是什么?
滑动窗口:保留系统提示,丢弃最早的几轮对话历史,只保留最近的内容。通常是静默截断,不报错。
中档9为什么聊得越久,每一轮越贵?
因为每发一条消息,前面整段对话历史都要重新塞进输入、重新算一遍。历史越长,输入 token 越多,费用和延迟都上涨。
中档10"lost in the middle"指什么现象?
长上下文里,模型对开头和结尾的内容记得牢,对中间一大段容易忽略或记错。所以关键信息别埋在文档正中间。
中档11系统提示(System Prompt)起什么作用?
它是每次对话开头那段"你是谁、回答要什么风格、遵守什么规则"的设定,每轮都占固定的一小格 token,一般不被截断。

▍拔高 5 题

拔高12为什么分词器要把单词切成子词块,而不是整词当一个单位?
语言里词无穷无尽,不可能给每个词编号;切成可复用的小词块后,用有限词汇表就能拼出几乎所有词(含新词、拼写变体),模型覆盖面更广。
拔高13窗口从 128K 升到 1M,是不是就可以无脑塞一整个代码库?
不是。窗口大只代表"读得下",不代表"读得好"——超长上下文里注意力会分散、中间遗忘严重,而且成本极高。工程上通常配合检索(RAG)只喂相关片段。
拔高14用户抱怨"AI 把我半小时前说的需求忘了",从上下文角度怎么解释?
半小时前的那轮对话很可能已被滑动窗口截掉,不在本次工作台里。模型不是故意忘,是物理上没看到。解决办法:重要信息重复强调,或做记忆摘要/外挂。
拔高15输入 token 和输出 token 哪个更贵?为什么?
通常输出 token 单价更高。因为输出是逐 token 自回归生成的,每出一个字都要再算一遍;输入可以并行处理。所以"让模型说废话"比"读资料"更烧钱。
拔高16RAG 是怎么利用上下文窗口省钱的?
它不把整本书塞进去,而是先用向量检索挑出和问题最相关的几段,只把这几段放进窗口。既让模型"看得到依据",又把 token 控制在小范围,省钱又准。

⑪ 记忆口诀 + 7 天复习计划

三句口诀 ① token 是小词块,不是字也不是词;中文一字一到俩,英文一词一点五。
② 窗口就是工作台,系统提示加历史、加 RAG 加问题,四块拼一起读。
③ 超窗不报错,悄悄丢最早;窗口≠记忆,关窗就清零。
天任务自检
第 1 天读②③,理解 token 和分词器能手算一句话大概多少 token
第 2 天读④窗口档位表,背知识点卡说清 128K 对应多少字
第 3 天读⑤⑥,做基础 1-6基础全对
第 4 天做中档 7-11说清超窗三件事
第 5 天做⑦真题 + 拔高 12-16区分窗口与记忆
第 6-7 天合上书口述"窗口里装了什么"不看资料全说对

📌 知识链路

前置知识(先学) · 第11课 · 分词器:窗口的容量单位就是 token,先知道 token 怎么来。
本节位置 模型的"短期记忆"上限:一次能看进去多少 token。它直接决定你能塞多长的文档、对话能聊几轮。
下一步(学完去) · 第6课 · KV Cache:窗口里的内容是怎么被缓存加速的。
· 第17课 · MTP:窗口里一次多吐几个 token 的加速玩法。
← 第7课 · 量化 算法与AI总览