程式設計基礎篇 · 雜湊與快取:空間換時間

快取:AI 帳單的隱形折扣

上一課的雜湊表解決了「怎麼瞬間找到」,這一課解決另一個問題:算過的東西,別再算第二遍。你在模型價格表上見過的「快取命中五折甚至一折」,帳單上省下的每一分錢,背後都是同一種收納方式——把算過的結果存起來,下次直接取。

先想一個日常場景

你算過一次「37 × 89 = 3293」,第二天有人又問你 37 × 89 等於幾——你會重新列直式嗎?不會,你直接報答案。快取就是電腦的這種「直接報答案」:把算過的結果按 key 存進上一課的雜湊表,下次遇到同樣的 key,一步直達取結果。雜湊表管「存哪、怎麼找」,快取管「什麼值得存」。兩課合起來才是完整的「空間換時間」。

互動 1 · KV Cache:同一段開頭別算兩遍

大模型每生成一個字,都要「回頭看」前面所有 token,給每個 token 算一份注意力的中間結果。關鍵在於:只要前綴一模一樣,這些中間結果就一模一樣——那第二輪對話還重算它做什麼?下面每個小方塊是一個 token,先點「播放第一輪」,再點「播放第二輪」。留意第二輪裡綠色方塊出現的速度:它們沒有被計算,是直接從快取取的。

正在計算(燒算力) 本輪算過 快取命中,免算 還沒輪到
第一輪對話
系統提示詞 + 問題①,每個 token 都要從零計算
第二輪對話
前綴(系統提示詞 + 第一輪全部內容)一字沒變
先播第一輪,看每個 token 逐個點亮計算
第二輪的計算量對比(方塊數 = 要算的 token 數)
沒有 KV Cache
0 個 token
有 KV Cache
0 個 token
KV Cache 快取的是「算過的注意力中間結果」(每個 token 的 Key 和 Value,名字就是這麼來的),不是快取答案本身。對話每多一輪,前綴就更長、省得就更多——真實場景裡系統提示詞動輒幾千 token,輪輪重算等於輪輪全價買單。模型廠商價格表上「快取命中的輸入 token 打一折」,指的正是這些綠色方塊。
一個立刻能用的驗收直覺:KV Cache 只認「前綴一模一樣」。如果你的應用每輪都把系統提示詞改一個字(比如把當前時間拼在最前面),快取就輪輪失效,帳單直接翻幾倍。把會變的內容放到提示詞末尾、固定內容放開頭——這是花一分鐘就能省一大筆的架構習慣。
互動 2 · 語義快取的帳單

KV Cache 省的是「同一段開頭」,還有一種更狠的:同樣的問題,答案整個都別再算。客服機器人每天被問 1 萬次「要怎麼退貨」,問法五花八門但意思相同——把「意思」當 key(用向量相似度判斷,第十課細講),命中就直接返回存好的答案,一次模型呼叫都不用發。拖動命中率滑塊,留意月帳單的變化。

場景:客服機器人每天 10,000 次提問,每次呼叫大模型約 0.02 元,一個月 30 天。命中快取的提問直接返回存好的答案,不產生呼叫費。
0%
這個月要付
¥6,000
每天 10,000 次全部真實呼叫
快取幫你省下
¥0
這就是Harness 核心篇講過的語義快取策略在省錢

⚠️ 但是——退貨政策改了,那舊答案怎麼辦?

快取裡還躺著按舊政策生成的標準答案,機器人會一本正經地拿它繼續回答十天半個月,比不快取錯得更穩定、更理直氣壯。所以工程師常說:快取最難的不是存進去,是知道什麼時候該作廢(術語叫「快取失效」,電腦科學兩大難題之一)。常見做法:給快取設個保質期(比如 24 小時過期)、或者政策一更新就主動清掉相關條目。設計任何快取前先想好這一步,否則省下的錢會用客訴還回來。

它在 AI 世界的真身

「算過的別再算」這一招無處不在,下面四個你天天在享受的東西,本質上是同一個結構。

🧠

KV Cache

大模型推理的標配:前綴 token 的注意力中間結果只算一次。沒有它,長對話根本跑不動。

💬

語義快取

把「問題的意思」當 key,相似提問直接複用答案。高頻客服場景能砍掉一大半呼叫費。

🌐

瀏覽器快取

圖片、樣式檔案下載一次就存本地,第二次開啟網頁秒開——你刷網頁快,一半功勞是它的。

🗺

CDN

把內容提前存到離你最近的機房,全國使用者都像連上本地伺服器。快取 + 地理位置,還是那一招。

✅ 這一課想和你分享的