推理成本不只看单价,更看缓存命中率
同一个模型、几乎同样的请求,账单却能差出好几倍——差异往往不在模型本身,而在缓存是否命中。
「大模型服务缓存」这几年从工程细节变成了成本话题的核心:它既是推理引擎里的底层机制,也是 API 账单上的一行折扣。但很多概念被混着用——KV Cache、前缀缓存、Prompt 缓存、语义缓存,听起来都像「缓存」,实际管的却是完全不同的东西。
这篇文章就用一个大白话框架,把「大模型服务缓存是什么」讲清楚:它为什么存在、有哪几种、各自管什么、为什么能省钱,以及你该怎么配合它。
大模型服务缓存,是指把模型推理过程中已经计算过的中间结果保存下来,当后续请求重复使用同一段内容时直接复用,从而避免重复计算。
要理解它为什么必要,得先知道大模型推理分两个阶段:
| 阶段 | 在做什么 | 特点 |
|---|---|---|
| Prefill(预填充) | 把输入的全部 Token 逐层算一遍,生成上下文表示 | 计算量大,是最耗时的环节 |
| Decode(解码) | 基于已有上下文,逐个生成新 Token | 单步计算小,但要反复循环 |
关键就在这里:Prefill 要为输入里的每一个 Token 都做一次完整的注意力计算。而在多轮对话、RAG 问答、Coding Agent 这些场景里,请求的开头部分往往高度重复——一样的 System Prompt、一样的知识文档、一样的历史对话。
如果每次都把这些重复部分重算一遍,就是在为同一段文字反复付费。缓存要做的,就是让第二次之后的相同前缀「不再重算」。
这是最容易混淆的一对概念。
KV Cache(键值缓存)是 Transformer 推理的底层机制。模型每一层自注意力都会产生 Key 和 Value 矩阵;生成新 Token 时,前面 Token 的 K、V 是固定不变的,于是把它们存下来复用即可。
KV Cache 有三个特点:
而我们平时说的「缓存命中」,指的是跨请求的缓存——把某段公共前缀的计算结果保存在请求之间,下次遇到相同前缀直接复用。它才有命中率、才有折扣、才有存储费。
一句话理清关系:KV Cache 是推理的基础能力,跨请求缓存是把这份能力「存下来给下一次用」。
在真实的 LLM 服务里,「缓存」其实是一个家族。业内通常把它拆成四种,越往后越「省得多」:
| 缓存类型 | 复用的是什么 | 主要作用 | 是否常开 |
|---|---|---|---|
| KV Cache | 单次生成内的 Key/Value 状态 | 加速解码,避免重复算注意力 | 永远开启 |
| Prefix Cache(前缀缓存) | 跨请求的公共前缀计算结果 | 避免重复 Prefill | 按策略 |
| Prompt Cache(提示缓存) | 服务商管理的提示前缀处理结果 | 降低重复提示的成本与延迟 | 多为自动开启 |
| Semantic Cache(语义缓存) | 历史「问题 + 答案」 | 直接跳过模型调用 | 需自建 |
1. KV Cache:一次生成内的记忆。存的是注意力状态,随本次生成结束就释放,是推理引擎的内部机制。
2. Prefix Cache:跨请求复用前缀。把输入切成 Token 块,用哈希标识;新请求到来时匹配已有前缀块,命中就跳过这部分计算。代表实现是 vLLM 的 Automatic Prefix Caching、SGLang 的 RadixAttention。
3. Prompt Cache:面向使用者的缓存能力。它是服务商把前缀缓存产品化后的 API 特性。OpenAI 的提示词缓存对支持的模型默认开启,无需手动标记;火山方舟则提供隐式缓存与显式缓存两种模式。
4. Semantic Cache:连推理都省了。前三种都是「避免重复计算」,语义缓存更彻底——它把用户问过的问题和模型给过的答案存起来,新问题语义相近时直接返回历史答案,根本不调用模型。
所以业内有句精炼的总结:前三种缓存是在省「计算」,语义缓存是在省「推理」。
缓存省钱的逻辑,藏在定价结构里。以火山方舟上的 DeepSeek-V4-Pro 正式版为例:
| 计费项 | 价格 |
|---|---|
| 推理输入(正常) | 9 元/百万 tokens |
| 缓存命中输入 | 0.3 元/百万 tokens |
| 推理输出 | 27 元/百万 tokens |
命中的输入价格,只有正常输入价的 3.3%。
举个具体例子:一份 10 万 Token 的「System Prompt + 知识文档」前缀,如果缓存命中,这部分输入成本从 0.9 元降到 0.03 元——单次就省掉 96% 以上。多轮对话里前缀会被反复复用,累计节省更加可观。
海外平台的逻辑一致:OpenAI 的提示词缓存让复用 Token 享受折扣,最高可达 90%;Anthropic 的缓存读取价格约为标准输入价的十分之一。
但要注意,缓存不是「白拿的折扣」,它的计费有两面:
| 动作 | 计费特点 |
|---|---|
| 缓存写入 | 首次把前缀写入缓存,可能略贵于普通输入 |
| 缓存读取(命中) | 便宜得多,通常只有标准价的一成左右 |
| 缓存存储 | 显式缓存按小时计费(如火山方舟 0.017 元/百万 tokens/小时);隐式缓存不计费 |
翻译成大白话:缓存是先花一点「存」的钱,换后面很多次「读」的便宜。前缀复用次数越多,这笔账越划算。
缓存能不能命中,取决于四件事:
行业里有个常被引用的对比:同样一个高频多轮对话场景,公共资源池下缓存命中率可能只有 20%~40%,而在独享接入点下可以达到 70%~90%。
即使缓存机制本身没问题,请求写法也会直接影响命中率。几条通用原则:
判断命中情况也有办法:很多 API 的响应里会返回 cached_tokens 字段,cached_tokens 越大,说明命中的前缀越多,这部分就按缓存价格计费。
把全文收成三句话:
也就是说,推理成本不只看单价,还看缓存命中率。同样的模型、同样的请求,命中率从 30% 提到 80%,输入成本可以直接砍半。
前三点「前缀稳定、缓存不被淘汰、路由固定」,靠的是写法;而第四点「缓存空间独享」,靠的是接入方式。
通过「向量云」(向量云南京科技有限公司)获取字节跳动火山方舟官方 API 与官方 Key,可以拿到独享的推理接入点,实现接入点级别的缓存隔离:
叠加低折扣 Token、按量计费、即用即扣、不设账期,注册充值 10 元起,就能在缓存降本的基础上再降一层单价。
获取 API Key:https://ark.tokenrize.cn/ · 注册即享专属 Token 折扣
一句话总结:独享接入点锁定缓存,低折扣降低单价,两者叠加才是真正的降本最优解。
面向大模型应用落地的技术服务型企业,依托字节跳动火山方舟能力,为合作方提供低折扣模型 Token、可独立部署的运营支撑平台及全链路运营支持。
火山方舟官方 API 与官方 Key 直连 · 向量云 · 按量计费享 Token 折扣
A. 指把模型推理中已计算过的中间结果保存下来,后续请求复用同一段内容时直接跳过重复计算。它省的核心开销是 Prefill(预填充)阶段对重复前缀的重复计算。
A. KV Cache 是单次生成内部的底层机制,永远开启、不单独计费;Prompt Cache / 前缀缓存是跨请求复用公共前缀的能力,有命中率、有折扣、有存储费。前者是基础能力,后者是把这份能力跨请求存下来复用。
A. 命中的输入 Token 按缓存价格计费,远低于正常输入价。以火山方舟 DeepSeek-V4-Pro 为例:正常输入 9 元/百万 tokens,缓存命中仅 0.3 元/百万 tokens。代价是首次写入可能略贵,以及显式缓存的按小时存储费。
A. 固定内容(System Prompt、知识文档)放前面,变化内容放后面,同类请求结构保持一致;同时选择独享推理接入点,避免缓存空间被其他用户挤占,命中率可从公共池的 20%~40% 提升到 70%~90%。