快取: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 認前綴:固定內容放提示詞開頭、會變的放末尾,快取命中率直接決定帳單
- 語義快取更狠:意思相同的提問連模型都不調,高頻場景省錢效果按命中率線性放大
- 快取三問:存什麼(值得複用的結果)、存哪(記憶體 / 磁碟 / 離使用者近的地方)、何時作廢(最難的一問)
- 驗收視角:看到「每次請求都重新呼叫模型 / 重新計算」的設計,就該問一句「這裡為什麼不快取?」