缓存策略
743 字约 2 分钟
domain/aiai/engineering
2026-07-24
1. 核心结论
- 缓存是降低 AI 应用延迟和成本的关键技术
- 精确缓存适用于相同请求,语义缓存适用于相似请求
- 缓存策略需要平衡一致性、成本和性能
- 合理的缓存可以大幅减少重复的 API 调用
- 缓存失效策略需要根据业务场景设计
2. 基础概念
Exact Cache:精确缓存,完全相同的请求复用结果。
Semantic Cache:语义缓存,语义相似的请求复用结果。
Cache Hit Rate:缓存命中率,命中次数占总请求次数的比例。
TTL(Time To Live):缓存存活时间,过期后自动失效。
Cache Invalidation:缓存失效,主动清除过期或不一致的缓存。
Embedding Cache:缓存文本的 embedding 向量。
Prompt Cache:缓存 prompt 的中间状态(如 OpenAI prompt caching)。
3. 工作原理
缓存层级:
- L1 - 精确缓存:
- 使用请求哈希作为 key
- 完全匹配时返回缓存
- 零延迟,零成本
- 适合 FAQ、固定查询
- L2 - 语义缓存:
- 计算查询 embedding
- 在向量数据库中搜索相似查询
- 相似度超过阈值时返回缓存
- 适合语义相似的查询
- L3 - Prompt Cache:
- 缓存 prompt 的 KV 状态
- 相同 system prompt 复用
- 减少首 token 延迟
- 适合多轮对话
- L4 - Embedding Cache:
- 缓存文本的 embedding
- 避免重复计算
- 适合 RAG 系统文档处理
缓存实现示例:
# 精确缓存
import hashlib
cache = {}
def get_cache_key(prompt):
return hashlib.md5(prompt.encode()).hexdigest()
def get_response(prompt):
key = get_cache_key(prompt)
if key in cache:
return cache[key]
response = call_llm(prompt)
cache[key] = response
return response
# 语义缓存
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer('all-MiniLM-L6-v2')
cache_embeddings = []
cache_responses = []
def semantic_cache(query, threshold=0.95):
query_emb = model.encode(query)
for i, emb in enumerate(cache_embeddings):
similarity = np.dot(query_emb, emb)
if similarity > threshold:
return cache_responses[i]
return None缓存策略选择:
- 高频相同查询:精确缓存
- 语义相似查询:语义缓存
- 多轮对话:Prompt Cache
- 文档处理:Embedding Cache
4. 实战场景
- FAQ 系统缓存
- RAG 系统 embedding 缓存
- 多轮对话上下文缓存
- 热门查询结果缓存
- 批量数据处理缓存
- 开发测试缓存
5. 常见误区
- 缓存不验证:缓存结果可能过时
- TTL 设置不当:过长导致不一致,过短降低命中率
- 忽视缓存成本:缓存存储也有成本
- 不监控命中率:无法评估缓存效果
- 语义缓存阈值过高或过低
6. 进阶方向
- 自适应缓存策略
- 分布式缓存
- 缓存预热
- 智能缓存失效
- 多层缓存协同
- 缓存压缩优化
7. 推荐资料
- OpenAI Prompt Caching - https://platform.openai.com/docs/guides/prompt-caching
- Redis Cache - https://redis.io/docs/use-caches/
- Semantic Caching - https://www.pinecone.io/learn/semantic-caching/
- LangChain Cache - https://python.langchain.com/docs/how_to/chat_model_caching/