标准回答
它解决什么问题
直接调用 LLM 每次都要付出 token 费用和推理延迟,而真实业务里大量请求是重复或高度相似的问法。GPTCache 在应用与 LLM 之间插入一层语义缓存:先查缓存,命中就直接返回历史答案,未命中才真正调用模型并把结果写回缓存。
与传统缓存的区别
传统 KV 缓存依赖 key 的精确匹配,自然语言换个说法就失效。GPTCache 用语义相似度匹配:把问题经 Embedding 模型转成向量,在向量库里检索最相近的历史问题,相似度超过设定阈值即判为命中。这样语义等价但措辞不同的问题也能复用同一个答案。
四大组成
一是 Embedding 生成器,把问题编码为向量;二是 向量相似匹配,由向量库(如 Milvus、FAISS)做最近邻检索;三是 缓存存储,保存问答对、向量与元数据;四是 相似度阈值与判定逻辑,决定命中或穿透到 LLM。
降本提速的来源
命中时完全不调用 LLM,因此节省全部 token 成本、把数百毫秒到数秒的生成延迟降到一次向量检索的量级,并在流量高峰时为后端模型分担压力、提升整体吞吐与稳定性。
常见误区
⚠️ 常见踩坑
相似度阈值是把双刃剑:阈值设得过高会大量漏命中、缓存形同虚设;过低则把语义并不等价的问题误判为命中、返回错误答案。GPTCache 最适合 FAQ、知识问答等重复问法稳定的场景;对实时性强、个性化或依赖用户上下文的动态内容要谨慎使用,并配置 TTL、按数据变更主动失效等策略,避免返回过期或张冠李戴的回答。
追问
追问 1:如何确定一个合理的相似度阈值?
用真实问答日志构造评测集,标注"应命中/不应命中"的问题对,扫描不同阈值统计命中率、错误命中率(误返回不相关答案)和漏命中率,画出权衡曲线取拐点。生产上倾向保守:宁可略低命中率也要把错误命中压到极低,并对高风险场景叠加二次校验。阈值还要随 Embedding 模型变化重新标定,不能跨模型照搬。
追问 2:缓存命中了,但底层知识已经更新,怎么避免返回过期答案?
给缓存条目打时间戳并设置 TTL,过期自动淘汰;当依赖的知识库或文档发生变更时,主动按标签或来源批量失效相关缓存;对时效敏感的问题类别可整体绕过缓存或缩短有效期。还可记录每条答案依赖的数据版本,源数据更新即触发对应缓存清理,保证一致性。
追问 3:Embedding 模型的选择会怎样影响缓存效果?
Embedding 决定语义相似度的判断质量:模型越能刻画语义,相近问法的向量距离越小、命中越准,反之会同时增加漏命中和错误命中。要选与业务语料、语种匹配的模型,并保证写入缓存和查询用同一模型与版本;一旦更换模型,历史向量需重新生成,否则新旧向量不在同一空间无法正确比较。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习