核心要点

  • 精确缓存:完全相同的请求直接命中,key = 模型 + 参数 + prompt 的哈希

  • 语义缓存:意思相近的问题用 embedding 算相似度,超过阈值就复用已有答案

  • 设阈值与失效:相似阈值别太松防误命中,给缓存加 TTL,知识更新时主动失效

  • 个性化/时效性内容(带用户私有数据、实时信息)不宜缓存或要按用户隔离

标准回答

精确缓存:最简单也最稳

key = 模型名 + 温度等参数 + prompt 文本的哈希。完全一样的请求直接返回缓存结果,0 延迟 0 花费。适合 FAQ、固定模板、批处理里重复出现的输入。注意参数(temperature、max_tokens)不同结果也不同,必须进 key。

语义缓存:覆盖「问法不同、意思相同」

「怎么退款」和「退款流程是什么」是两个字符串,精确缓存命不中。语义缓存把 query 转成 embedding,在向量库里找最相似的历史问题,相似度超过阈值就复用它的答案。能大幅提升命中率,但要调好阈值。

关键注意点

  • 阈值太松会误命中:「北京天气」和「上海天气」语义很近但答案完全不同,命中错的答案比不命中更糟。可对实体/关键词加约束。
  • 加 TTL 和主动失效:知识库或底层数据更新时,相关缓存要失效,否则返回过期答案。
  • 个性化内容(含用户私有数据)要按用户隔离,实时信息(股价、库存)干脆不缓存。

常见误区

⚠️ 常见踩坑

语义缓存相似度阈值设得太松,把「意思相近但答案不同」的问题误命中(如不同城市/不同金额的查询),返回错误答案——这比缓存未命中危害更大。

追问

追问 1语义缓存的相似度阈值怎么定?

没有万能值,要用真实 query 对做评测:标注哪些该命中、哪些不该,扫不同阈值看命中率和误命中率的权衡,选误命中可接受范围内命中率最高的点。对答案敏感的场景(金额、城市、时间)调高阈值或加关键实体匹配做二次校验。

追问 2流式输出的结果能缓存吗?

能。在流结束后把完整输出存下来,下次命中时既可一次性返回,也可以模拟分片「回放」出打字机效果保持体验一致。缓存的是最终完整文本,不是中间分片。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。