什么是语义缓存?让相似问题不必重复调用大模型

语义缓存是什么?它如何用 Embedding 识别意思相近的问题、和普通缓存有何不同,以及怎样避免把旧答案错给新问题,一文讲清。

什么是语义缓存?让相似问题不必重复调用大模型
编辑部 ·

普通缓存只认完全一样的 key:“退款流程” 和 “怎么申请退款?” 虽然意思相近,在传统缓存里却是两次不同请求。**语义缓存(Semantic Cache)**会先把问题转成向量,判断它是否与已有问题足够相似;若相似,就复用之前的答案,少调用一次昂贵的大模型。

它能降低延迟和成本,但前提是“相似”真的可以安全地复用。

它怎么工作

  1. 用户提问转成 Embedding 向量。
  2. 在缓存中查找距离最近的历史问题。
  3. 相似度超过阈值、且上下文条件一致时,返回已缓存答案。
  4. 否则调用模型,并将新问题与答案写回缓存。

Embedding 如何表示语义距离,可看什么是 Embedding;这里的关键是:缓存匹配不再只看字面是否相同。

和普通缓存的区别

普通缓存语义缓存
匹配方式完全相同的 key意思足够相近
命中率低但确定更高但有误判风险
适合内容固定接口结果FAQ、摘要、常见问答

语义缓存不应取代普通缓存。系统提示词、固定文档和完全相同的请求仍然优先用传统缓存;语义缓存适合处理“表达不同、意图相同”的重复问题。

最危险的地方:上下文不同

“我的订单何时到?”看似相似,但不同用户、不同订单和不同日期的答案完全不同。缓存 key 除了问题向量,还必须包含用户权限、知识库版本、语言、地区、产品版本等影响答案的条件。

更稳的做法是只缓存低风险、稳定且通用的回答,例如帮助中心 FAQ;涉及个人数据、价格、库存、医疗或法律结论的请求要谨慎,通常应重新查询实时来源。

如何设置阈值和过期

相似度阈值越低,命中越多但误答风险越高;阈值越高,结果更稳但省不了多少调用。应使用真实问题测试,并观察缓存命中后的用户纠错率。

缓存还需要 TTL 和版本号。知识库、提示词或模型升级后,旧答案可能失效;让缓存随版本失效,比等用户发现错误更好。

总结

语义缓存用向量相似度复用“意思相同”的问答,是降低 AI 延迟和成本的实用方法。但它不是把所有问题都记下来:必须把权限、版本、时效性和风险纳入 key,并对高风险与实时数据保守处理。省下的一次模型调用,不能以错答为代价。