资讯动态

语义缓存实战:相似度阈值、错答风险与命中率对账

发布时间:2026/10/15 13:50:15 来源:尧图企业网站定制
语义缓存实战相似度阈值、错答风险与命中率对账结论先放这儿LLM 按次计费但用户问的问题高度重复。精确缓存只认一模一样的输入改个标点就失效命中率惨不忍睹。语义缓存把问题转成向量用相似度判断命中能接住大量换说法的重复提问真金白银地省钱。但它带来一个新风险相似的问题被返回了不合适的答案。这篇讲清楚阈值怎么定、什么场景敢用。精确缓存与语义缓存的差别维度精确缓存语义缓存命中条件输入完全一致相似度超过阈值命中率低改一个字就 miss高同义改写也能命中主要风险几乎没有相似但意图不同的问题被错答额外成本几乎为零embedding 调用 向量库运维精确缓存是免费的保险。语义缓存是真金白银换命中率但风险也随之而来。一个最小可用的实现import time class SemanticCache: def __init__(self, threshold0.92, ttl600): self.items [] # (vec, question, answer, ts) self.threshold threshold self.ttl ttl def lookup(self, vec): now time.time() self.items [it for it in self.items if now - it[3] self.ttl] best, best_sim None, 0.0 for it in self.items: sim cosine(vec, it[0]) if sim best_sim: best, best_sim it, sim if best is not None and best_sim self.threshold: return best[2] return None def put(self, question, vec, answer): self.items.append((embed_vec(question), question, answer, time.time()))工程上别自己造向量库用 FAISS 或者带向量插件的 Redis 都行。这段代码只是把逻辑摊开命中就返回旧答案未命中就调模型并写回缓存TTL 保证知识更新后旧答案会过期。阈值怎么定阈值是拿风险换命中率。阈值 0.97接住的基本是原句复述命中率趋近精确缓存但错答概率也趋近于零阈值 0.92能接住大量改写错答率开始爬升阈值 0.85命中率漂亮但「退货流程」和「退款政策」这类相似句会互相串建议用真实业务问题跑一遍评测集画出命中率与错答率的曲线再选拐点附近的值。什么场景敢用并不是所有场景都值得上语义缓存。客服寒暄答错了没人在意价格、库存、合规类问题答错就是事故。常见的折中是白名单机制涉及敏感字段的问题不走语义缓存直接透传给模型。写在最后落地顺序建议这样先上精确缓存几乎零成本零风险命中率不够再上语义缓存上了语义缓存就配一套抽检机制盯着错答率。缓存省的是真金白银但答错一次的代价可能抵得上几百次命中省下来的钱。把错答率也纳入监控口径才算真正把语义缓存用明白。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑