一句话定义:缓存感知路由(Cache-Aware Routing)是一种不按"谁闲给谁"、而是按"谁的缓存里正好存着这段内容"来派发请求的调度策略。在大模型推理里,它通常指:对请求的提示前缀(prompt prefix)算一个哈希,把请求送到 AI 词典:KV Cache">KV Cache 里已经存着这段前缀的那个实例上。
它解决的是什么问题
大模型生成第一个字之前,得先把整个输入读一遍,为每个 token 算出 Key 和 Value 向量留在显存里,这就是 KV Cache。如果下一个请求的开头跟前面某个请求一模一样,这段 KV 可以直接拿来用,跳过重复计算——这叫前缀缓存(Prefix Caching)。
麻烦在于,一个模型往往要部署多份实例(replica)才扛得住流量,而每份实例的显存里只有自己那一份 KV Cache。前面挡着一层负载均衡,默认逻辑是"轮流发"或"谁闲给谁"。于是同一个很长的系统提示词,被轮流撒到八台机器上,八台各算一遍,谁的缓存都没真正复用,命中率直接腰斩。
打个后厨的比方:一道菜得先把一堆料切好。如果每张单子都丢给不同厨师,每个厨师都要从头切一遍;把同类单子交给案板上已经备好料的那位,他才真省事。缓存感知路由就是那个"看谁案板上有现成料"的派单员。
和相邻概念的区别
| 概念 | 按什么派发 | 想解决什么 |
|---|---|---|
| 轮询 / 最小负载均衡 | 连接数、当前负载 | 别把某台机器压垮 |
| 会话保持(Sticky Session) | 用户 ID、会话 ID | 同一用户的上下文不丢 |
| 缓存感知路由 | 前缀内容的哈希 | 让 KV Cache 真正被复用 |
关键差别在粒度:会话保持绑的是"人",缓存感知路由绑的是"内容"。不同用户只要前缀相同也能互相命中;而且同一个会话内部,还可以按前缀层级再分流。
对从业者的意义
未命中就意味着把整个前缀重算一遍,算力和首字延迟都成倍增加。所以命中率差一倍,成本往往就差一倍——这也是它值钱的原因。
收益最大的场景很集中:多轮对话(历史越滚越长)、Agent(系统提示词和工具描述基本固定)、批处理(同一份长文档问不同问题)、RAG 里共用的指令模板。
落地时有几个坑要留意:前缀必须逐 token 完全一致才算命中,差一个空格就白搭;缓存有容量上限,会被淘汰;某个热点前缀可能把单台机器压爆,所以实际系统通常是"缓存亲和 + 负载兜底"混着用;换模型权重或适配器时,旧缓存要当作失效。各家推理引擎和网关对这套机制的支持程度、参数配置都不一样,具体以官方文档为准。
对普通人来说,感受就是两件事:回答出得更快,账单更便宜。
