一句话定义:缓存命中率(Cache Hit Rate)指的是所有请求中,能直接从缓存里拿到结果、不用重新算一遍的比例。公式很朴素:命中次数 ÷(命中次数 + 未命中次数)。
打个比方:便利店把最常卖的饮料摆在门口货架上,货架就是缓存,后面仓库是数据源头。一天来 10 个人买同一款饮料,8 个人从货架直接拿走,命中率 80%;剩下 2 个人得喊店员去仓库翻,这就是「未命中」,又慢又占人手。货架摆得再大、再整齐,如果摆的都是没人买的冷门口味,命中率照样是零。
在 AI 系统里,这件事尤其要紧。推理时的 AI 词典:KV Cache">KV Cache(键值缓存)、提示词缓存(Prompt Cache)、RAG 里对检索结果的缓存、对模型调用的响应缓存,本质上都在赌一件事:相似的请求会反复出现。命中一次,就省掉一次重复的向量检索或者一段重复的注意力计算。
但缓存不是「有就行」。命中率低,意味着每一笔请求你仍然付了查缓存的开销——哈希查找、一次网络往返、序列化与反序列化、常驻内存——却没有换回省下的计算。等于白交了一层税,还多背了一套架构的维护成本。命中率趋近于零的缓存,是纯粹的复杂度。
命中率高低,取决于两件事:请求本身够不够重复(局部性够不够强),以及系统能不能认出「这是同一个请求」。前者是业务特性,后者是工程选择——精确匹配还是语义相似匹配,直接决定了同一份缓存能覆盖多少真实流量。
几个容易混淆的指标:
| 指标 | 回答的问题 | 变好意味着什么 |
|---|---|---|
| 缓存命中率 | 多少请求不用重算 | 省算力、省延迟 |
| 缓存容量 | 能存多少条 | 只是成本,不必然提升命中率 |
| 命中时的延迟 | 从缓存取一次多快 | 决定真正省下多少时间 |
| 缓存正确性 | 取出来的结果还有效吗 | 不达标会比不缓存更糟 |
注意最后一行:命中率衡量的是「省了多少」,不是「对了多少」。检索场景里的准确率、召回率说的是结果质量,命中率是复用效率,两者不能互相替代。缓存错了,比没缓存更危险——所以失效策略(数据更新后必须让旧结果作废)和命中率是一体两面。
对从业者:优化之前先埋点,把 hit/miss 按接口、按用户、按请求类型拆开看。如果一天里大部分请求都是独一无二的长提示词,那缓存收益天然有限,先别急着上架构。
对普通人:把常用任务固化成模板、把参考资料固定成同一份上下文,比每次重开一段新对话更容易吃到缓存。具体哪些内容会被缓存、怎么计费,各产品策略不同,以官方页面为准。
