免費全文 部署與推理優化 進階

語意快取:相似問題直接回舊答案,可以嗎

語意快取能省下大量成本,但誤命中的代價很高。要有明確的適用邊界。

部署與推理優化教程封面

精確字串快取的命中率通常很低,因為使用者不會問一模一樣的話。語意快取改用向量相似度判斷「問的是不是同一件事」,命中率高得多——但也可能把不同的問題誤判成同一個。

基本流程

def ask(q):
    v = embed(q)
    hit = cache.search(v, top_k=1)
    if hit and hit.score >= THRESHOLD:
        return hit.answer, {'cached': True, 'score': hit.score}
    ans = call_model(q)
    cache.insert(v, q, ans)
    return ans, {'cached': False}

門檻要保守

相似度門檻設得越低,命中率越高,誤命中也越多。建議從很嚴格開始(例如 0.95 以上)再慢慢放寬,並且人工檢視一批命中案例確認合理。

適合與不適合

  • 適合:FAQ 型問答、產品說明、固定知識查詢。
  • 不適合:帶有具體參數的查詢(「我的訂單」「這個月的報表」)。
  • 不適合:需要即時資料的問題。
  • 不適合:對話中的追問,因為上下文不同答案就不同。

快取鍵要包含情境

只用問題文字當鍵是常見錯誤。使用者身分、語言、模型版本、提示版本都應該納入,否則會出現「A 使用者看到 B 使用者的答案」這種嚴重問題。

含個人資料的答案不要進共用快取。要嘛完全不快取,要嘛快取空間依使用者隔離。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區