语义缓存:想法阶段
一个还没实践但觉得很有用的优化思路。
问题
用户问「今天天气怎么样」和「今天天气如何」——两个问题一个意思。不缓存的话 LLM 要调两次。
普通缓存:key 完全匹配才命中。「天气怎么样」≠「天气如何」→ miss。
语义缓存:把 query 做 embedding,语义相似的命中同一个缓存。
用户A:今天天气怎么样 → 调 LLM → 存结果 + embedding
用户B:今天天气如何 → embedding 相似度 0.98 → 命中缓存!实现思路
把历史 query 的 embedding 存在一个向量库里。新 query → embedding → 查最相似的缓存项 → 相似度 > 阈值就命中。
ChromaDB 做缓存库就行。阈值是个难点——太高命中率低,太低可能返回不对的结果。
还没做的原因
项目目前是单人用的开发工具,不存在重复请求。等有多用户场景时再做。