编程基础篇 · 复杂度:一眼看穿代码值不值

为什么上下文越长越贵?O(n²) 的账单

上一课你拿到了 Big-O 这把尺子,还记得那条起飞的红线吗?今天带你去看大模型里最有名的一个 O(n²)——注意力机制。学完你会突然理解一堆老问题:为什么长对话越来越卡、为什么上下文窗口是「窗口」不是「仓库」、为什么大家拼命做上下文压缩。

先回忆一下 · 注意力在干嘛

前面的课程讲过:大模型生成每个新词元(token)时,都要「回头看」前面所有的词元,给每个词分配注意力权重,才知道接下来该接什么。一个 token 看一遍所有 token——这句话用上一课的语言翻译一下:n 个 token,每个都要看 n 个,总共 n × n 次「对视」。这就是一张 n×n 的表格。拖滑块画给你看。

交互一 · 注意力矩阵:n² 长什么样

下面每一行代表「一个 token 要看所有 token」,深色对角线是它看自己。留意右边的格子总数:滑块只是匀速往右拖,数字却越跳越猛——这就是「平方增长」的手感。

8 个
每行 = 一个 token 要看所有 token
TOKEN 数 n
8
对视次数 n²
64
= 注意力矩阵的格子总数
n 从 4 拖到 48,只翻了 12 倍;格子却从 16 涨到 2304,翻了 144 倍。真实对话动辄几万 token——把这张图在脑子里放大一千倍,你就明白 GPU 在替你算什么了。
交互二 · 同一个问题,两种上下文

同样问一句「帮我总结一下重点」,一个人先把历史精简到 1 万 token,另一个人把 10 万 token 的完整记录原样塞进去。token 只差 10 倍,看看账单差多少。留意「注意力计算量」那一行:它不是 ×10,是 ×100。

精简派 1 万 token
只保留和问题相关的段落再提问
注意力计算量1 份
首字延迟(示意)≈ 1 秒
本次输入费用(示意)≈ ¥0.1
全塞派 10 万 token
整个历史记录一股脑丢进上下文
注意力计算量100 份
首字延迟(示意)≈ 几十秒
本次输入费用(示意)≈ ¥1+
※ 延迟与费用为量级示意,非精确报价;不同模型、不同档位差异很大
核心结论一句话:上下文翻 10 倍,注意力计算翻 100 倍。费用大体跟 token 数走(×10 起步,长上下文档位往往还要加价),而延迟和显存压力跟着计算量走——所以「多塞点总没坏处」在大模型这里不成立,塞进去的每一个 token 都要被后面所有 token 反复回头看。
知识串联 · 这解释了前面课程的三件事
把这课带进日常。下次和 AI 长聊卡了、账单高了,你知道该做什么:开新对话、让它先总结再继续、RAG 里只召回相关段落。这些技巧背后是同一条数学:让 n 小一点,n² 就小很多。

✅ 这一课想和你分享的