语义缓存:让AI响应快10倍,省一半API费
🩺 摘要
用户问的问题80%是重复的——「你们的退换货政策是什么」「你们支持哪些支付方式」。每次都要调LLM,又慢又贵。语义缓存能解决这个问题。
📝 详情
语义缓存是什么
普通缓存:完全相同的文字才能命中缓存。 语义缓存:意思相近的问题也能命中。
用户1问:「怎么退货?」 用户2问:「退换货流程是什么?」 用户3问:「我想退款,怎么办?」
语义缓存把这三个视为同一个问题,直接从缓存返回答案,不用调LLM。
怎么实现
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer("all-MiniLM-L6-v2")
cache = {} # 向量→缓存的映射
def semantic_cache(question, threshold=0.85):
# 向量化当前问题
q_vec = model.encode(question, normalize_embeddings=True)
# 找最相似的缓存
for cached_q, cached_vec in cache.items():
similarity = np.dot(q_vec, cached_vec)
if similarity > threshold:
return cache[cached_q]["answer"]
# 没命中,调LLM
answer = call_llm(question)
# 存缓存
cache[question] = {"vector": q_vec, "answer": answer}
return answer
命中率通常在60-80%。也就是说,10次请求里有6-8次不用调LLM。
推荐使用Redis+向量搜索插件的方案做生产级语义缓存。
💬 评论 (0)