首页/AI/RAG 与向量库速查/语义缓存降低重复问答开销

语义缓存降低重复问答开销

对高频相似问题缓存已有答案:用户问题先按向量相似度查缓存,命中直接返回,省掉 embedding、向量检索与生成的开销;注意阈值校准与失效策略。

RAG 与向量库速查AI更新于 2026-10-13

语义缓存是什么

高频场景里大量问题是同一件事的不同问法:语义缓存把用户问题的向量当键,先按相似度查缓存,命中就直接返回已有答案,省掉 embedding、检索与生成三段开销。它的收益直接体现在成本与延迟上,风险则集中在阈值上——阈值过高命中率低,等于是白做;阈值过低会把不相关问题的答案返回给用户,属于体验事故。此外知识更新或权限变化时必须按文档或租户维度失效相关缓存。

基本信息

匹配方式问题向量相似度查缓存,命中即返回
关键参数相似度阈值,按业务与模型分布校准
过期策略TTL 加事件驱动的主动失效
失效维度按 doc_id、租户、权限变更定向清理
观测指标命中率、误命中率、节省的调用量

典型使用场景

  • 高频FAQ:同一问题被反复提问,缓存命中可以省掉绝大部分生成调用
  • 促销与活动问答:短期内流量集中且答案稳定
  • 多租户平台:缓存按租户隔离,避免答案串台
  • 知识更新:文档变更后定向失效相关缓存,避免继续返回旧结论
  • 配额保护:高峰期用缓存削峰,维持稳定的响应时间

缓存命中伪代码

缓存命中伪代码
qv = embed(question)
hit = cache.search(qv, threshold=0.95,              # 阈值按业务校准
                   namespace=tenant_id)             # 按租户隔离
if hit:
    return hit.answer
ans = rag_answer(question)
cache.add(qv, ans, ttl=7 * 86400, doc_ids=hit_doc_ids)   # 记下依据文档

阈值与行为

阈值命中率风险
过高(0.97+)很低缓存形同虚设
适中(0.93~0.96)较高需要按语料实测调优
过低(0.85-)很高答非所问,用户明显感到错乱
缓存条目必须记录依据的文档 id:文档更新或权限变化时按这些 id 定向失效,否则用户会持续拿到已废止的答案,而系统看上去一切正常。

易错点

  • 缓存键只用原始问题文本,轻微改写就完全不命中
  • 缓存未按租户隔离,A 租户的答案被返回给 B 租户
  • 知识更新后未失效相关缓存,用户仍拿到旧答案
  • 阈值过低导致误命中,表象是“回答错乱”而非报错,排查方向容易跑偏
  • 只统计命中率不评估误命中,指标好看但体验在下降
  • 缓存写入不带依据文档 id,文档变更时无法定向清理,只能整体清空

数据来源与参考

  • GPTCache 项目文档(github.com/zilliztech/GPTCache)
  • Gao et al., RAG for LLMs: A Survey(记忆与缓存模块)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌