首页优化地图方法索引基础概念
返回技术汇总表 ↗

M045 · 独立详解

结果缓存:满足复用合同,才可以跳过整次生成

精确键保存已完成结果,语义检索找候选;先核对版本、时效与访问范围,再判断是否能复用。

内存与数据搬运调度与并行详解已编写
视频讲解待制作

这篇文章的小视频尚未制作;可以先阅读下方文字详解。

本页目录

01 · 缓存命中时,模型还要算吗

结果缓存保存之前完成的回答或业务结果。命中且有效时,直接返回内容,可以跳过这次模型生成。前缀KV缓存则保存模型中间状态,复用后仍要处理新输入和生成答案;编译缓存保存执行方案,新输入也仍要算。

缓存保存对象命中后仍需做什么
结果缓存完成的答案/结果权限与有效性检查、返回;必要时重验。
前缀KV历史位置的K/V等中间状态续接输入和Decode,不是直接返回旧答案。
编译缓存图/内核/调优产物加载兼容产物后计算新的数据。

依据:Redis · 语义结果缓存、硬过滤与TTL ↗ · PyTorch · 编译缓存与兼容检查教程 ↗

02 · 查询路径与写回路径分开

教学示意 · 不代表设备实测
请求上下文 + 当前版本/权限/知识快照
  ↓
确定是否允许复用 → 构造精确键
  ↓
查结果缓存 → 检查时效/完整性/合同 → 命中则返回
  ↓ 未命中(可选语义检索,再验证候选)
正常检索/生成/业务处理
  ↓
确认结果完整且可缓存 → 连同身份和依赖写入
# 失败、取消、半段stream与未完成工具任务按合同处理。

查缓存也消耗时间;语义缓存通常还需计算Embedding、检索和候选校验。若缓存故障,按既定策略回退正常生成。没有正常miss路径,缓存不是可用的加速方案。

依据:Apache APISIX · 精确/语义结果缓存与完整stream ↗

03 · 精确键不能只有用户那一句话

“公司报销标准是什么?”在不同租户、知识库版本、权限与system prompt下可能应返回不同答案。键或命中硬过滤至少要覆盖所有影响复用的条件,具体字段由业务合同决定,不能只hash最后一句用户消息。

教学示意 · 不代表设备实测
教学精确身份:
租户/访问范围 + 有序完整消息(含system/历史)
模型与adapter版本 + 生成/输出格式配置
知识快照/工具结果依赖 + 缓存策略版本
# 若新鲜随机样本、时效数据或工具动作不允许复用,先绕过缓存。
# 规范序列化只改变表示,不能重排消息/文档而改变语义。

如果模板、模型或检索内容升级,却继续复用旧键,缓存可能看起来很快但回答已不适用。精确匹配保证身份相同,不保证原回答正确,也不证明隐藏依赖未变。

依据:Redis · 语义结果缓存、硬过滤与TTL ↗ · Microsoft API Management · LLM语义缓存匹配与分区 ↗

04 · 精确命中也要符合返回语义

温度大于0时,每次请求可能期待一个新随机样本。直接返回上次答案,会把生成分布变成偏向旧结果的过程;即使prompt和temperature一样,也不是重新独立采样。用户允许复用或任务只关心可接受答案时可以缓存,但要明确合同。

实时价格、个人进度、需要执行动作的工具调用等有外部状态。可以按依赖版本保存只读结果,也可以明确绕过。返回旧工具调用文本不等于执行新动作;重放有副作用的动作又可能重复执行。

视频/文本流还要分清内容完成与客户端收到。只有完整、成功且满足业务条件的结果才可按这份策略提交,客户端断开时不能自动把半段内容作为成功答案。

依据:Apache APISIX · 精确/语义结果缓存与完整stream ↗

05 · 语义接近只能找候选,不能证明等价

语义缓存用Embedding距离或相似度寻找近似问题,可能提高改写问句的命中率。但是“支持退款吗?”与“不支持退款吗?”、“2024政策”与“2025政策”可能很近而答案不同。阈值没有统一安全数值,距离和相似度的方向也要按所用接口解释。

先以租户、模型、知识版本、访问范围等硬条件限制候选,再评估语义和必要业务字段。验证器本身也会错,也有开销;无法可靠判断时回退生成。微软API Management文档说明了相似匹配的风险和vary-by分区入口。

依据:Microsoft API Management · LLM语义缓存匹配与分区 ↗

相似度0.96,这份结果就能直接返回吗?

只有一个教学候选;0.96为自设相似度,越大越相似。意图/版本等在例子中已知;真实Embedding和校验器可能误判,本演示不保证生产答案等价。

互动例子只放一个自设候选,余弦相似度固定0.96,不是真实Embedding。即使阈值通过,租户、知识版本、TTL、完整性或退款/取消意图不一致仍不能复用。生产意图识别不会自动像例子一样已知且无误。

06 · TTL、版本失效和并发写回

机制解决什么没有解决什么
TTL限制从写入开始的复用时间TTL内外部数据仍可能提前改变。
依赖版本/主动失效知识、模板、模型改变后绕过旧条目需要可靠传播版本;漏掉依赖仍会错。
有界容量与淘汰控制内存,保留更有用条目不证明剩余条目正确或新鲜。
同键请求合并多个相同miss共享一次计算需相同访问合同、失败传播、取消与资源管理。
带身份的写回后台完成后保存其实际计算版本不能把旧请求答案标成当前新知识版本。

自设一个请求在知识v1下开始,运行期间知识更新到v2。完成后只能以v1依赖身份写回,或直接丢弃;不能从“当前版本”变量重新构造v2键去保存旧答案。两份并发内容是否可覆盖还要看版本或业务顺序,不是最后完成的一定更新。

依据:Redis · 语义结果缓存、硬过滤与TTL ↗ · Apache APISIX · 精确/语义结果缓存与完整stream ↗

07 · 命中率与收益的简单账本

假设正常生成耗时G=1000 ms,每次查缓存L=5 ms,命中率h=0.6,miss才生成,暂忽略写回与排队。平均时间L+(1−h)G=405 ms。生成调用比例40%,但每个请求都付出查询成本。若h=0.001则1004 ms,反而比无缓存慢。

语义路径若Embedding/检索/验证合计50 ms,仍以同样公式代入额外成本,收益条件近似hG>L。它只适用于本例串行、固定生成时间且无其他成本;真实命中/未命中可能有不同长度和排队,不能用这条公式预测尾延迟。

命中率应同时报告有效命中率、误复用率与答案质量。缓存错答案、过期答案或越范围返回的比例增加时,单纯“模型调用减少”不足以证明优化成功。

依据:Redis · 语义结果缓存、硬过滤与TTL ↗

08 · CPU验证键、失效与候选拒绝

下载脚本用标准库实现有界、TTL与完整性检查的精确结果缓存,验证有序消息/版本/租户身份和绕过随机请求。另用给定相似度的教学语义候选展示意图冲突、过期和版本拒绝;模拟v1请求在v2更新后按原身份写回。它不连接Redis或真实Embedding。

教学示意 · 不代表设备实测
明确定义哪些任务允许答案复用
列出全部键/硬过滤/依赖/TTL合同
先测精确匹配,再离线评估语义候选
注入版本变化、半段结果、失效与缓存故障
观察有效命中、错误复用、模型调用和端到端时间
再决定容量、合并请求与是否启用语义路径

依据:Redis · 语义结果缓存、硬过滤与TTL ↗ · Microsoft API Management · LLM语义缓存匹配与分区 ↗ · Apache APISIX · 精确/语义结果缓存与完整stream ↗

09 · 验收及与其他优化的组合

  • 正确性:答案可复用合同、当前访问范围、依赖版本、完整性和过期行为。
  • 语义路径:候选相似度、阈值/模型版本、否定/数字/实体反例及验证器误差。
  • 资源:条目大小、索引、Embedding、淘汰与写回。
  • 性能:命中/miss分别的延迟、额外检索成本、有效命中率和P95/P99。
  • 可靠性:缓存故障回退、同键并发、取消、更新期间的旧版本写回。

结果命中通常绕过模型;miss仍可使用前缀缓存、量化与批处理。应分别统计路径,不能把大量命中后的平均延迟归因到模型kernel。GPU/NPU的区别在miss生成阶段,缓存身份则须包含实际模型及版本合同。

  • 为什么同样的用户文本,不同知识版本应有不同结果身份?
  • 相似度很高但一个问题多了“不”,为什么可能不能命中?
  • 结果缓存与前缀KV缓存,哪一个通常仍需Decode?

流程位置与关联方法

这个方法可能出现在多个位置;计算线包含模型计算与算子实现,执行线包含运行时、内存和通信。

资料与核查范围

原理依据以原始论文和官方文档为主;算例与时间线是教学推导。文档核查日期:2026-10-10。引用 main / latest 文档时,实际接口以安装版本为准。

代码为接入片段或教学伪代码;本页没有声称完成 NVIDIA / 昇腾硬件实测。

← 返回总表中的 M045继续阅读:RL 外层资源与权重同步 →
AI Infra 知识库 · 总览 → 独立讲解网站更新 2026-10-08
搜索知识库

搜索方法与基础概念 · Esc 关闭