实测 LLM 语义缓存:危险查询反而更像安全查询,多数系统不该上

bfeeny · reddit · 2026-09-27

作者亲手构建并测量了一个 LLM 语义缓存系统,结论反直觉:大多数系统不应该用语义缓存。

核心实验:作者构造了 40 组三元组——原始提示、语义相同的改写、以及改动最小但正确答案不同的「近似错问」(如「去夏威夷旅行」→「去日本旅行」)。结果显示:改写的余弦相似度中位数为 0.836,而危险的近似错问反而高达 0.911——不该缓存的查询平均比该缓存的更近,40 个近似错问中有 33 个高于改写的中位数。这不是重叠问题而是倒置,根源在于嵌入编码的是句子「关于什么」,而决定答案的那一个 token 只是舍入误差。

先例佐证:GPTCache 论文承认当前嵌入下命中率不超过 90%,重排器也无法区分好坏命中;AWS ElastiCache 在 63,796 条真实查询上的基准显示阈值从 0.75 调到 0.99,准确率都卡在 91%-93%。

修复方案:相似度召回 3 个候选,再用一个便宜小模型判断存储问题与新问题是否真的同答案。基于 DynamoDB 向量索引 + AgentCore Gateway 拦截器实测:验证开启、召回 ≥0.65 时,90% 的改写被正确服务、仅 5% 近似错问被误服务;关闭验证器后误服务率飙到 90%——而且关闭反而更快,这就是陷阱:常规缓存指标双双变好,实际却在输出错误答案。

经济学与结论:对昂贵模型,0.15% 命中率即可回本;对便宜模型永远不划算(验证成本是被替代调用的 32 倍)。但成本不是跳过的理由,错误率才是——错误的缓存答案与错误的模型输出无法区分。精确缓存虽然触发少,但零错误,胜过「偶尔错得很自信」。代码、CloudFormation 和原始数据均在博文中。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →