缓存:AI 账单的隐形折扣
上一课的哈希表解决了「怎么瞬间找到」,这一课解决另一个问题:算过的东西,别再算第二遍。你在模型价格表上见过的「缓存命中五折甚至一折」,账单上省下的每一分钱,背后都是同一种收纳方式——把算过的结果存起来,下次直接取。
你算过一次「37 × 89 = 3293」,第二天有人又问你 37 × 89 等于几——你会重新列竖式吗?不会,你直接报答案。缓存就是电脑的这种「直接报答案」:把算过的结果按 key 存进上一课的哈希表,下次遇到同样的 key,一步直达取结果。哈希表管「存哪、怎么找」,缓存管「什么值得存」。两课合起来才是完整的「空间换时间」。
大模型每生成一个字,都要「回头看」前面所有 token,给每个 token 算一份注意力的中间结果。关键在于:只要前缀一模一样,这些中间结果就一模一样——那第二轮对话还重算它干嘛?下面每个小方块是一个 token,先点「播放第一轮」,再点「播放第二轮」。留意第二轮里绿色方块出现的速度:它们没有被计算,是直接从缓存取的。
第一轮对话
系统提示词 + 问题①,每个 token 都要从零计算第二轮对话
前缀(系统提示词 + 第一轮全部内容)一字没变第二轮的计算量对比(方块数 = 要算的 token 数)
KV Cache 省的是「同一段开头」,还有一种更狠的:同样的问题,答案整个都别再算。客服机器人每天被问 1 万次「怎么退货」,问法五花八门但意思相同——把「意思」当 key(用向量相似度判断,第十课细讲),命中就直接返回存好的答案,一次模型调用都不用发。拖动命中率滑块,留意月账单的变化。
⚠️ 但是——退货政策改了怎么办?
缓存里还躺着按旧政策生成的标准答案,机器人会一本正经地拿它继续回答十天半个月,比不缓存错得更稳定、更理直气壮。所以工程师常说:缓存最难的不是存,是知道什么时候作废(术语叫「缓存失效」,计算机科学两大难题之一)。常见做法:给缓存设个保质期(比如 24 小时过期)、或者政策一更新就主动清掉相关条目。设计任何缓存前先想好这一步,否则省下的钱会用客诉还回来。
「算过的别再算」这一招无处不在,下面四个你天天在享受的东西,本质上是同一个结构。
KV Cache
大模型推理的标配:前缀 token 的注意力中间结果只算一次。没有它,长对话根本跑不动。
语义缓存
把「问题的意思」当 key,相似提问直接复用答案。高频客服场景能砍掉一大半调用费。
浏览器缓存
图片、样式文件下载一次就存本地,第二次打开网页秒开——你刷网页快,一半功劳是它的。
CDN
把内容提前存到离你最近的机房,全国用户都像访问本地服务器。缓存 + 地理位置,还是那一招。
✅ 这一课想和你分享的
- 缓存 = 算过的别再算:结果按 key 存进哈希表,下次直达取——上一课的结构在这一课开始赚钱
- KV Cache 认前缀:固定内容放提示词开头、会变的放末尾,缓存命中率直接决定账单
- 语义缓存更狠:意思相同的提问连模型都不调,高频场景省钱效果按命中率线性放大
- 缓存三问:存什么(值得复用的结果)、存哪(内存 / 磁盘 / 离用户近的地方)、何时作废(最难的一问)
- 验收视角:看到「每次请求都重新调用模型 / 重新计算」的设计,就该问一句「这里为什么不缓存?」