LLM 语义缓存策略

2026-06-07LLM缓存性能优化成本

为什么需要语义缓存

LLM 推理成本高、延迟大。传统缓存基于精确匹配("北京的天气" 和 "北京天气怎么样" 不命中),而语义缓存用向量相似度匹配语义相近的问题,大幅提升缓存命中率。

架构设计

用户输入
   ↓
[Embedding 编码] → 向量
   ↓
[向量检索] → 相似度 > 阈值?
   ├── 是 → [返回缓存结果]
   └── 否 → [调用 LLM] → [存入缓存]

核心组件

Embedding 模型

缓存编码需与检索编码保持一致。推荐使用轻量模型(如 bge-small-zh),编码速度要快于 LLM 推理速度才有意义。

相似度阈值

  • 高阈值(>0.92):安全但命中率低,适合事实类问答
  • 中阈值(0.85-0.92):平衡方案,通用场景推荐
  • 低阈值(<0.85):高命中但有语义漂移风险,建议配二次校验

缓存策略

  • TTL 过期:根据数据时效性设不同 TTL(如天气 30min,常识 24h)
  • LRU 淘汰:设置最大容量,淘汰最久未命中的条目
  • 分级缓存:热点数据放内存 Redis,冷数据放向量数据库

降级与预热

降级:缓存不可用时自动降级为直连 LLM,不影响服务可用性。
预热:上线前将高频 QA 批量注入缓存,避免上线后空缓存导致 LLM 负载激增。

实践建议

  • 缓存 key 除了用户问题,还应考虑上下文(如城市、用户角色)
  • 对敏感信息(医疗、金融等)谨慎缓存,设白名单字段
  • 缓存命中率目标:QA 场景 30-50%,参数固定场景可到 60%+
  • 监控缓存命中率、降级次数,及时调整阈值和 TTL
未标记