跳到主要内容
AI News HubLIVE
站内改写2 分钟阅读

LLM 服务中的四种缓存:KV、前缀、提示词与语义缓存

文章摘要

随着 LLM 应用日趋复杂,推理成本和延迟成为瓶颈。一个请求常包含系统提示、对话历史、检索文档与工具定义等海量 token,重复处理浪费算力。本文梳理 KV 缓存、前缀缓存、提示词缓存与语义缓存四种技术,分别说明它们如何在不同层面避免重复计算、降低成本并缩短响应时间。

来源Analytics Vidhya作者: Shaik Hamzah Shareef
LLM 服务中的四种缓存:KV、前缀、提示词与语义缓存
报告错误

纠错通道尚未开通,可先复制下方文章信息留存。

查看更正说明
直接读正文

大语言模型应用日益复杂,推理成本与延迟越来越重要。一次请求可能包含系统提示、对话历史、检索文档、工具定义和用户输入,累计数千甚至数百万 token。如果不加缓存,服务端每次都把相同上下文重新计算一遍,既耗时又浪费算力。实际上,LLM 服务中的缓存不是一个单一功能,而是位于服务堆栈不同层次的四种机制:KV 缓存、前缀缓存、提示词缓存和语义缓存。

KV 缓存是现代自回归模型推理的基础。模型并不是一次生成完整回复,而是一个 token 一个 token 地生成;每生成一个新 token,注意力机制都要计算它与此前所有 token 的关系,为已处理 token 生成 Key 和 Value 张量。KV 缓存把这些张量存放在内存(通常为 GPU 显存)中。prefill 阶段处理完提示后缓存 K/V 状态,后续解码步骤直接复用并增量追加,避免序列变长后反复从头重建注意力状态。它的局限是通常只服务于当前请求:该请求结束后,相关 K/V 状态不会自动成为另一个无关请求的缓存。

前缀缓存把 KV 缓存的复用扩展到不同请求之间。实际场景中,许多用户的请求共享长长的系统提示、公司政策、工具定义,只有末尾的用户问题不同。若新请求与某先前请求有相同的开头,服务系统直接复用那部分 K/V,无需重新计算。实现上,前缀缓存把提示切成定长的 token 块,并为每个块计算基于内容和位置的哈希;新请求通过哈希检查找到 CACHE HIT,命中块直接复用,只有 CACHE MISS 的部分送入模型计算。缓存空间有限时,系统通常用 LRU 策略淘汰旧块。多模态场景中则要注意:文本相同但图片不同,不能仅凭文本判定可复用。vLLM 等系统已经以块式 KV 管理、哈希、查找和淘汰机制实现了前缀缓存。

提示词缓存则把缓存责任交给 API 提供商。对于通过云 API 使用模型的应用,请求里的系统提示、文档、工具定义等常达数万 token,且几乎不变。提供商可以在基础设施层缓存这些重复内容,使后续请求只按缓存的一部分重新处理。多家大模型 API 采用分区定价:例如缓存命中约为不缓存价格的 0.1 倍,写入缓存约为 1.25 倍或更高(有些还会额外收存储费,有些则自动缓存且不另计费)。因此,提示词缓存能同时改善输入处理成本与延迟。

语义缓存是四种缓存中离模型最远的一种:它可以完全跳过 LLM。当用户提出的问题与历史问题语义相近时,系统直接返回之前生成的答案,而不调用模型。通常会用嵌入向量而不是文本哈希来判断语义相似度。它把响应时间降到最低、避免昂贵推理,但要处理阈值设定、答案新鲜度和多轮语境等问题,适合 FAQ 和知识库等重复性较高的场景。

综合来看,四种缓存解决的是不同环节的重复劳动:KV 缓存服务于单次请求的解码提速;前缀缓存让共享前缀的请求减少 prefill;提示词缓存把固定上下文放到服务商缓存层;语义缓存则在请求进入模型之前就用相似答案命中。实际系统中它们并非互斥,而是可以叠加部署。理解它们之间的差别,有助于针对成本、延迟和缓存命中率做出正确取舍。

展开要点与分析

文章情报

工程师进阶

要点

  • KV 缓存为正在生成的请求保存已处理 token 的 Key/Value 张量,让解码步骤不再重复计算,是自回归推理的基础优化。
  • 前缀缓存将提示拆分为带哈希的 token 块,可在不同请求之间复用相同开头的 KV 状态,显著减少 prefill 计算;vLLM 等系统已实现该机制。
  • 提示词缓存通常由 API 提供商管理,让包含大量固定系统上下文的重复请求按缓存命中计费,从而降低输入处理成本。
  • 语义缓存适用于不需要调用 LLM 的场景:对语义相似的问题直接返回已有答案,彻底跳过模型推理。

要点与分析由自动化流程生成,可能有误,请结合原始来源核实。

LLM 服务中的四种缓存:KV、前缀、提示词与语义缓存 | AI News Hub