跳到主内容

语义缓存是怎么判断「相似问题」的?

2026-10-18 发布 来源:我告诉你AI导航 阅读

同一个问题换几种问法丢给大模型,答案其实大同小异,重复推理纯属浪费,语义缓存就是靠这点省钱:先把问题变成向量,再拿向量比远近,够近就直接返回旧答案。

同一个问题换几种问法丢给大模型,答案其实大同小异,重复推理纯属浪费,语义缓存就是靠这点省钱:先把问题变成向量,再拿向量比远近,够近就直接返回旧答案。

相似问题是怎么被认出来的

问题进系统后先过嵌入模型,变成一串向量:语义相近的问法,向量距离也近。进来的是原始文本,发生的是向量化,出去的是可比较的坐标。

比远近常用余弦相似度:两个向量夹角越小越像。阈值定多少是关键,定高了命中率低,定低了容易把不像的问题当成一样的。具体阈值以所用服务的官方设置为准。

嵌入模型的选择也影响命中质量:通用语义模型分不清近义词,领域微调过的模型能把「怎么开发票」和「发票抬头怎么写」分开。模型选得粗,后面再严的阈值也补不回来。

要注意的是,向量只捕捉语义接近,不保证意图一致。「怎么退款」和「退款要多久」向量很近,答案取向可能完全不同,这就是误命中的土壤。

一次命中要走几步

第一步查询向量进缓存索引,索引按近似最近邻思路检索,不必和全部历史问题逐一比。进来的是新向量,发生的是索引内召回,出去的是若干候选旧问题。

索引也不是越大越好:候选池太大,召回质量下降,还拖慢响应;通常按业务域分池,池内再检索,兼顾速度与准头。

第二步逐个算相似度并过阈值,同时校验时效与适用范围:旧答案对应的知识过期了、或者分属不同业务域,都不能用。进来的是候选加元数据,发生的是阈值判定与规则过滤,出去的是可用或不可用的结论。

第三步命中即返回,把旧答案交给用户,全程不再调大模型;未命中才真正发起推理,并把新问答写回缓存。进来的是结论,发生的是分流,出去的是零算力回答或一次真实推理。

第三步之后还有兜底:即使命中,回答出口仍会做一次格式与安全校验,避免旧答案把不该出的内容带出来。缓存还分层:热问题的答案放快层,冷问题放慢层,命中速度差别很大,分层策略决定了「秒出」能覆盖多广。

误命中的风险在哪

最大的坑是「像而不等于」:问价格和问打折,向量很近,答案可能完全不同。所以阈值之外还要加业务校验,敏感或时效性强的内容干脆不进缓存。

缓存的另一面是新鲜度:知识更新后,旧答案还躺在缓存里,用户拿到的就是过期信息。做法是给缓存条目加有效期,或按知识版本号让它失效。

误命中的代价不对称:一次错误命中伤的是信任,一次漏命中只是多花点算力。所以阈值宁可保守,也不要为了命中率放松校验。

三类误判风险,代价与应对各不同。

风险来源典型表现应对办法
像而不等于问价格和问打折向量很近,答案取向可能完全不同阈值之外加业务校验,敏感或时效性强的内容干脆不进缓存
知识过期知识更新后旧答案还躺在缓存里,用户拿到过期信息给缓存条目加有效期,或按知识版本号让它失效
代价不对称一次错误命中伤信任,一次漏命中只是多花算力阈值宁可保守,不为了命中率放松校验

你在豆包、讯飞星火里连续追问时感觉「有些回答秒出」,往往是缓存或预计算在起作用。它省的是重复推理,判断依据始终是语义距离加规则,不是猜;省下来的算力,才能留给真正需要想的问题。

  • 速查:问题先变向量再比远近;索引只做召回不做终审;阈值加时效双重校验;敏感内容主动绕开。

和缓存打配合的还有PagedAttention 是怎么管缓存的?像内存分页、FlashAttention 是怎么省显存的?分块计算、负载均衡是怎么分流请求的?多实例配合和优先级队列是怎么排 VIP 的?权重怎么定。

聊聊语义缓存的常见疑问

  • 它和精确缓存有什么区别?:精确缓存要求字面一致,它认语义相近,命中面宽得多,误判风险也更高,常配合业务校验使用。
  • 缓存会无限涨吗?:不会,通常带容量上限和淘汰策略,满了按规则腾位置。
  • 答案会不会给错人?:靠阈值和业务校验压低概率,时效性强的内容建议关掉缓存。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]