Gemini 上下文缓存是什么
Gemini 提供两类上下文缓存:显式缓存需要预先创建缓存对象并设置存活时间(TTL),请求里引用缓存名;隐式缓存对重复的前缀自动给折扣,不需要配置但有最小 token 门槛。对「同一份长资料被反复提问」的场景,命中后输入按折扣价计费。关键约束是缓存本身按存活时长计费,访问频率不够时闲置期的费用会盖过折扣收益,所以启用前要先算访问频率够不够覆盖成本。
基本信息
| 显式缓存 | 预创建缓存对象(含 TTL),请求引用缓存名 |
|---|---|
| 隐式缓存 | 重复前缀自动折扣,无需配置,有最小 token 门槛 |
| 适用场景 | 同一长资料反复问答、批处理同一资料集 |
| 计费特点 | 缓存按存活时长计费,需与访问频率匹配 |
| 收益条件 | 复用次数足够多才能覆盖缓存成本 |
| 清理动作 | 任务结束主动删除,避免闲置计费 |
典型使用场景
- 长文档批量问答:同一份合同或手册被问几十上百次
- 视频与音频分析:长素材处理后围绕它连续提问
- 固定知识库助手:系统提示与资料集长期稳定不变
- 批处理任务:一次写入长上下文,后续请求只带短问题
- 评测对比:同一语料下跑多组提示词,减少重复输入费用
显式缓存流程
显式缓存流程
1) 创建缓存:上传长文档,得到缓存对象名,并设定存活时长
2) 请求时引用:在 generateContent 里指定缓存,只发送问题
3) 后续提问复用同一缓存,直到过期或被删除
4) 任务结束主动删除,避免 TTL 内闲置计费
# 先估算:缓存写入与存活成本 vs 复用次数节省的输入费用
# 复用次数少时不要启用显式缓存,直接用普通请求更省
# 缓存内容变更后必须重建,旧缓存的引用会失效两类缓存怎么选
| 类型 | 配置方式 | 适用情况 |
|---|---|---|
| 显式缓存 | 预创建对象并设 TTL,请求引用 | 同一大文件被多次询问 |
| 隐式缓存 | 无需配置,前缀重复即折扣 | 模板固定、前缀长的常规调用 |
| 不使用缓存 | 每轮重新发送全部内容 | 一次性问答,复用概率低 |
| 缓存清理 | 任务结束主动删除 | 避免存活期内的闲置计费 |
缓存有最小 token 门槛与按时长计费的双重约束:先算访问频率能否覆盖成本,再决定启用,低频率场景往往不划算。
缓存前缀必须完全一致才可能命中:把时间戳、用户标识或随机数插进前缀会直接毁掉命中,动态内容一律放在请求末尾。