标准回答
工作原理
传统精确缓存按 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;含用户身份/参数的查询要把这些纳入分桶维度,避免跨用户串答案。可定期抽样比对缓存答案与实时生成,监控漂移。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。