建構大型語言模型應用與前沿
快取大型語言模型回應(caching LLM responses)
如果兩個使用者問同一個問題,何必付錢讓模型答兩次?快取(caching)把過去的結果存起來,當同樣——或相似——的請求再進來時就再次供應,在快取命中時把成本與延遲都壓到近乎零。它是計算領域最古老的把戲之一,套用到一個昂貴的新元件上。
最簡單的形式是精確比對快取:把完整提示做雜湊,若之前見過就重用存下的生成結果。語意快取(semantic caching)走得更遠——它把新查詢嵌入向量,當較早的查詢在意義上夠接近時就回傳一個快取答案,抓住精確比對會漏掉的換句話說。另外,供應商也提供提示快取,把一段又長又重複的前綴(一大段系統提示或文件)的已處理形式存起來,於是你不必每次呼叫都按全價重新處理它。每一種都需要一套「項目何時過期」的策略。
當請求會重複、而正確答案又穩定時,快取最為閃亮,也是最便宜的勝利之一。但當答案必須新鮮、個人化或時效敏感時,它就危險了——一個過時的快取回覆,可能比一個慢卻正確的答案更糟——而語意快取也可能回傳一個對「這個特定查詢」其實微妙地錯誤的近似結果。訣竅在於:在輸出可重用之處積極快取,在必須即時之處則完全不快取。
\text{cost}_{\text{eff}} = (1 - h)\,\text{cost}_{\text{call}}
在快取命中率為 h 時,越多請求由快取供應,每次請求的平均成本就越趨近於零。
又称
另见