核心要点

  • 原理:把查询 Embedding,在向量库中找最相似的历史问题,相似度超阈值则直接返回缓存答案。

  • 收益:省去一次 LLM 调用,降 token 成本与延迟,对高频相似问题(FAQ、客服)效果显著。

  • 与精确缓存的区别:精确缓存按字符串完全匹配,语义缓存按语义近似匹配,命中率高得多。

  • 关键风险:相似但答案不同的「假命中」,需调相似度阈值、按上下文分桶、做缓存失效。

标准回答

工作原理

传统精确缓存按 key 字符串完全匹配,问法稍变就 miss。语义缓存把每个查询用 Embedding 向量化,存入向量库;新查询来时做相似度检索,若最近邻相似度超过阈值,就认为「语义等价」,直接返回缓存的答案,跳过 LLM 调用。

为什么省成本

LLM 调用按 token 计费且有延迟。高频场景(FAQ、客服、文档问答)里大量问题语义重复(「怎么退款」vs「退款流程是什么」)。命中缓存即省去整次推理:成本降到一次 Embedding+检索,延迟从秒级降到毫秒级。

关键风险与权衡

最大风险是「假命中」——两个问句相似但正确答案不同(如「北京天气」vs「上海天气」),返回错答案。控制手段:调高相似度阈值(牺牲命中率换准确)、按用户/上下文/参数分桶缓存、对时效性内容设 TTL 失效、对高风险问题禁用缓存。命中率与正确率需按业务权衡。

参见 Token 经济学 与向量数据库原理

常见误区

⚠️ 常见踩坑

别把阈值设太低图高命中率——会引入「相似但答案不同」的假命中,返回错误答案,比 cache miss 危害更大。也别对强时效/个性化内容(实时数据、含用户上下文的回答)做语义缓存,否则会返回过期或张冠李戴的结果,必须设 TTL 与按上下文分桶。

追问

追问 1语义缓存的相似度阈值怎么定?

用标注好的「该命中/不该命中」查询对,扫不同阈值画准确率-命中率曲线,选满足业务正确率底线下命中率最高的点。高风险场景偏保守(高阈值少假命中),容错高的场景可放松。需随线上反馈持续校准。

追问 2语义缓存和 KV Cache / prefix caching 有什么区别?

语义缓存在「请求级」缓存整个问答对,命中则完全跳过模型。KV Cache 是单次推理内缓存已生成 token 的 K/V 避免重算;prefix caching 在「token 级」复用相同前缀(如系统提示)的 KV。前者省整次调用,后两者省单次推理内部计算。

追问 3怎么处理缓存失效与一致性?

对时效内容设 TTL 到期重算;底层知识/文档更新时按来源做缓存失效(invalidation)或版本化缓存 key;含用户身份/参数的查询要把这些纳入分桶维度,避免跨用户串答案。可定期抽样比对缓存答案与实时生成,监控漂移。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。