Skip to content

语义缓存:想法阶段

一个还没实践但觉得很有用的优化思路。

问题

用户问「今天天气怎么样」和「今天天气如何」——两个问题一个意思。不缓存的话 LLM 要调两次。

普通缓存:key 完全匹配才命中。「天气怎么样」≠「天气如何」→ miss。

语义缓存:把 query 做 embedding,语义相似的命中同一个缓存。

用户A:今天天气怎么样 → 调 LLM → 存结果 + embedding
用户B:今天天气如何   → embedding 相似度 0.98 → 命中缓存!

实现思路

把历史 query 的 embedding 存在一个向量库里。新 query → embedding → 查最相似的缓存项 → 相似度 > 阈值就命中。

ChromaDB 做缓存库就行。阈值是个难点——太高命中率低,太低可能返回不对的结果。

还没做的原因

项目目前是单人用的开发工具,不存在重复请求。等有多用户场景时再做。