首页 / 资讯中心 / 文章详情

从精确缓存到语义缓存:变化的是命中契约,不是替代关系

从精确缓存到语义缓存:变化的是命中契约,不是替代关系 ★ FEATURED ARTICLE
“同义句能复用答案”听起来简单落到业务里却要回答另一个问题这两个人在这个时刻真的应该拿到同一份答案吗精确缓存和语义缓存可以共存。前者用业务定义的Key命中Key完全可以包含租户、版本和规范化字段哈希只是实现手段不能把所有缓存都写成“对原句算MD5”。语义缓存扩大的是候选集合付出的代价是必须判断错误复用。先挑出允许复用的问题公开的、带规则版本的退换货FAQ可以作为候选。订单状态、个人额度、实时库存则包含身份和时点即使两句话向量很接近也不能直接复用别人的回答。“明天会下雨吗”还带有相对日期跨天复用会改变问题本身。Redis现行语义缓存文档把相似匹配与租户、模型版本等硬边界放在一起也将缓存定义为可以重建的副本。这支持一种设计取舍先决定允许复用的范围再在范围内寻找近邻。官方说明未标可靠首发日本文不把它包装为十月新品。一个可以直接运行的策略例子下面没有模型、数据库或生成向量只有命中许可函数。相似度数字是手写测试输入作用是验证硬条件不能被高分绕过。import java.time.Instant; import java.util.Objects; public class CacheContract { static boolean reusable(String requestTenant, String cachedTenant, String requestRevision, String cachedRevision, boolean shareable, Instant expiresAt, Instant now, double similarity) { return requestTenant ! null requestRevision ! null Objects.equals(requestTenant, cachedTenant) Objects.equals(requestRevision, cachedRevision) shareable expiresAt ! null now.isBefore(expiresAt) Double.isFinite(similarity) similarity 0.95 similarity 1.0; } public static void main(String[] args) { Instant now Instant.parse(2026-10-23T00:00:00Z); Instant later now.plusSeconds(60); assert reusable(a, a, r1, r1, true, later, now, 0.96); assert !reusable(a, b, r1, r1, true, later, now, 1.0); assert !reusable(a, a, r2, r1, true, later, now, 1.0); assert !reusable(a, a, r1, r1, true, now, now, 1.0); assert !reusable(a, a, r1, r1, false, later, now, 1.0); assert !reusable(a, a, r1, r1, true, later, now, Double.NaN); System.out.println(cache contract: 6 assertions passed); } }保存为CacheContract.java执行javac --release 11 CacheContract.java java -ea CacheContract。断言开关-ea不能省略。0.95是教学策略值不是某个Embedding模型的通用阈值真正接Redis时还要确认引擎返回的是距离还是相似度不能直接复制这个比较方向。命中以后仍有两笔账一笔是正确性过期规则、租户串用、错商品、否定词变化分别产生多少错误复用。另一笔是开销Embedding、检索、运维和误答处理也消耗资源。命中率高最多说明多复用了内容不能单独说明节省了多少费用。本例只验证许可逻辑没有验证向量质量、Redis查询计划或真实缓存收益。工程上可以先查精确缓存再查经过硬过滤的语义候选两者均未满足条件时回源。没有合格候选时诚实Miss比返回一条“非常相似的错误答案”更容易恢复。本地验证记录Oracle JDK 12.0.1使用javac --release 11编译并以java -ea运行输出cache contract: 6 assertions passed。这只是离线契约检查不含真实模型、数据库或生产链路测试。
阅读完成 · 觉得有帮助?
咨询建站