Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Semantic Caching

语义缓存会在新查询与先前查询含义相同时返回已存储的 LLM 响应,通过匹配嵌入来跳过模型调用并降低成本。

语义缓存会存储大型语言模型(LLM)或其他生成模型的响应,并在新请求与先前请求含义相同时重复使用这些响应,即使措辞不同也可以。缓存会将每个提示转换为嵌入,找到相似度最高的已存储提示,并在相似度超过阈值时返回保存的答案。命中缓存后完全跳过模型调用,因此延迟会降至毫秒级,而且请求不会消耗任何 token。由于匹配依据是含义,“我忘了密码”和“如何重置密码?”可以共用一个已存储的答案;若缓存按提示文本进行精确匹配,则必须分别存储两份答案。Zilliz 于 2023 年发布了用于此模式的开源 GPTCache 库,如今向量数据库和 API 网关也将其作为内置功能提供。

语义缓存的工作原理#

句子嵌入模型会对传入的提示进行编码,向量搜索会将其与先前已回答提示的嵌入进行比较,通常使用余弦相似度。小型缓存可以放在内存中,大型缓存则存储在带有近似最近邻索引的向量数据库中。缓存未命中时,模型会生成新答案,并将新提示的嵌入与响应一起存储,通常还会设置过期时间。

缓存键必须涵盖所有其他会改变正确答案的因素。在不同系统提示、模型版本、用户权限级别或检索文档集合下生成的响应会分别存储在不同范围中,因此一个客户的缓存答案绝不会提供给另一个客户。新鲜度也需要同样谨慎处理:当价格、政策或源文档发生变化时,基于旧版本创建的条目仍会匹配新提示,因此每个条目都要设置生存时间,并在源数据变化时清除受影响范围内的条目。

选择相似度阈值#

阈值决定了两个提示可以有多大差异,但仍能共用一个答案。以下示例使用 Sentence Transformers 中的 all-MiniLM-L6-v2 模型作为编码器,构建一个包含三条记录的缓存:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")

# Earlier prompts whose answers are already stored in the cache
cached = ["How do I reset my password?", "What are your opening hours?", "How do I cancel my subscription?"]
cached_embeddings = model.encode(cached)

# Each new prompt reuses the closest cached answer if it clears the threshold
queries = ["I forgot my password, how can I change it?", "When does the store open?", "How do I cancel my order?"]
for query in queries:
    query_embedding = model.encode(query)
    scores = model.similarity(query_embedding, cached_embeddings)[0]
    best = scores.argmax().item()
    status = "hit" if scores[best] >= 0.7 else "miss"
    print(f"{query} -> {cached[best]} ({scores[best]:.2f}, {status})")

密码问题的改写得分为 0.89,命中正确。营业时间问题的改写只得 0.61,未命中。“如何取消我的订单?”与“如何取消我的订阅?”的相似度为 0.71,会返回错误的操作说明。嵌入相似度衡量的是措辞和主题的相似程度,因此,没有一个阈值能区分这三种情况。生产环境中的缓存会通过以下方式缩小这一差距:用自身流量中的改写句对微调编码器、按类别设置阈值,或将每个候选命中交给重排器,由其对两个提示进行联合评分后再返回缓存答案。

语义缓存适用的场景#

语义缓存适用于许多用户会提出相同问题、且答案变化缓慢的场景,例如客服聊天机器人、内部服务台,以及基于稳定文档的检索增强生成(RAG)助手。个性化、时效性强或需要创意的请求则很少能从中受益,因为复用答案可能会出错或显得重复。

LLM 服务中还有另外两种缓存,它们工作在不同层级:

  • 提示缓存:模型服务器存储完全重复的提示前缀所计算出的状态,从而缩短预填充时间;模型仍会生成新答案。
  • KV 缓存:在单次生成过程中保留先前 token 的键和值,使每个新 token 无需重新计算这些内容。

语义搜索使用相同的嵌入查找方式为查询检索文档;语义缓存则用它检索已完成的答案,通常部署在位于应用和模型提供商之间的AI 网关中。

图像也可以用同样的方式作为缓存键。Ultralytics YOLO 中的 embed() 会为每张图像返回一个特征向量,因此,针对图像分类训练的 YOLO26 模型可以提供查找键,让近乎重复的摄像头帧复用视觉语言模型先前生成的描述。

Explore solutions

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

借助 Ultralytics YOLO,将无人机和航空影像转化为实时洞察,应用于农业、水产养殖、环境监测、自然保护和地理空间分析。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 应用于航空监测。借助计算机视觉解决方案,赋能无人机、航空航天工作流、环境保护和地理空间行业。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来