Semantic Caching 策略
撰写日期:2026-04-17 | 阅读时间:约 10 分钟
本文档涵盖 LLM 推理流水线中**网关级别语义缓存(Semantic Caching)**的设计原则和运营考虑事项。
实现指南:工具比较表、Gateway 集成模式、配置示例、部署代码片段请参阅推理网关配置指南 — Semantic Caching 实现选项。
1. 概述
为什么需要 Semantic Cache
在大规模 LLM 服务中,用户查询表达不同但含义相同的情况非常多。传统的字符串完全匹配缓存(HTTP cache、Redis key-value)无法消除这种重复。Semantic Cache 通过基于嵌入的相似度检测语义相似的请求并重用先前的响应,同时改善以下 3 个问题。
- 减少 token 成本:缓存 HIT 时跳过 LLM 调用,节省 API 成本·GPU 时间
- 缩短延迟:用向量查询(数 ms)响应,而不是生成延迟(数百 ms ~ 数秒)
- 释放 GPU 容量:在自托管 vLLM/llm-d 环境中有效扩大吞吐量(throughput)
预期节省率(按阈值)
节省率因用户查询的重复性、领域(FAQ/客户支持/代码生成)、提示结构而有很大差异,下表数值为公开实现文档·供应商博客中观察到的一般范围。各组织应通过渐进式推出和 A/B 评估验证实际效果。
| 相似度阈值 | 运营策略 | 观察到的节省率范围 | 特点 |
|---|---|---|---|
| 0.95(严格) | 仅缓存几乎相同的查询 | 约 10-15% | 错误答案风险极低,严格质量要求服务 |
| 0.85(平衡) | 允许含义相同·表达差异 | 约 30-40% | 一般 LLM 聊天/助手推荐默认值 |
| 0.70(激进) | 将相关主题也归为一组 | 约 50-60% | 仅限 FAQ/静态 KB 等重复率极高的工作负载 |
参考来源:Redis — Building an LLM semantic cache、Portkey Semantic Cache 文档、Helicone Caching 文档、GPTCache README。
上述数字是基于公开资料的大致范围。并非所有领域都有相同的 HIT 率。通过仪表板(§6)测量自身工作负载的实际 HIT 率·false-positive 率后确定阈值。
2. 缓存层次划分
LLM 推理流水线中存在 3 种不同的缓存层次。各自的操作位置·存储单位·成本影响不同,Semantic Cache 补充而非替代其他 2 层。
3 层缓存流程图
各层次比较表
| 项目 | KV Cache(vLLM PagedAttention) | Prompt Cache(Anthropic/OpenAI managed) | Semantic Cache(Gateway 级别) |
|---|---|---|---|
| 操作位置 | 推理引擎内部(GPU HBM) | 模型提供商侧 | Gateway(Bifrost/LiteLLM/Portkey)前端 |
| 存储单位 | token 单位 KV 块 | 显式 cache_control 标记区间 | 完整响应对象(文本/JSON) |
| 匹配方式 | 前缀(prefix)完全匹配 | 提供商内部基于哈希的完全匹配 | 嵌入余弦相似度 |
| 主要目的 | TTFT·吞吐量改善 | 减少重复系统提示成本 | 直接消除重复 LLM 调用 |
| 成本影响 | 节省 GPU 时间(自托管) | 输入 token 单价折扣(托管) | 跳过 API 调用本身 |
| 失败时影响 | 仅性能下降 | 缓存未应用时一般单价 | 直接影响响应质量(错误答案风险) |
| 相关文档 | vLLM 模型服务 | 提供商官方文档 | 本文档 |
Semantic Cache HIT → 立即响应(省略 LLM 调用)。MISS 时调用提供商 → Prompt Cache 减少系统提示输入成本 → 推理引擎内部 KV Cache 改善生成速度。三个层次相互正交(orthogonal),通常同时启用。
应用时机比较
- 原型/单模型:仅 KV Cache(自动)+ Prompt Cache(提供商支持时)即可
- 多租户/多提供商:添加 Gateway 级别 Semantic Cache — 吸收相同查询在多个用户间重复的模式
- FAQ/聊天机器人/固定 KB:降低 Semantic Cache 阈值(0.80~0.85)积极重用
- 代码生成/IDE 代理:Semantic Cache 保守应用(0.95)或禁用 — 即使相似查询,文件上下文不同导致重用风险大