产品ByteByteGo·原文 2026年10月21日本站收录 2026年10月22日

ByteByteGo解析LLM提示缓存与语义缓存的区别

ByteByteGo发布技术文章,说明LLM应用中提示缓存与语义缓存分别作用于请求的不同阶段:提示缓存复用共享前缀的KV状态,语义缓存复用相似问题此前生成的答案。

AI解读:ByteByteGo的文章把LLM应用的缓存分成两类:提示缓存复用输入前缀的计算结果,语义缓存复用此前生成的答案。

提示缓存依赖请求开头内容完全一致,包括措辞、文档顺序和请求设置;作者提醒,开头放入时间戳或请求ID会破坏复用。

Anthropic的标准提示缓存定价为:缓存读取按普通输入价的 1/10 计费,5 分钟缓存写入为 1.25 倍,1 小时写入为 2 倍。

语义缓存用嵌入模型比较新旧问题,相似度阈值需按应用逐个设定;作者指出,相似度分数不等于答案正确的概率。

订单是否已发货、基础版与专业版、语言、用户身份等条件,可能让语义相近的问题不能共用答案,需要额外的元数据过滤和缓存失效策略。

文章称两种缓存可配合:提示缓存降低输入处理成本,语义缓存跳过整次模型调用;但语义缓存未命中时,因额外的嵌入和查询,总成本更高。

ByteByteGo发布文章,比较大型语言模型(LLM)应用中的提示缓存(prompt caching)与语义缓存(semantic caching),说明两者针对请求中两种不同的重复工作:前者复用共享输入前缀已算好的中间状态,后者复用相似问题此前生成的答案。

两种缓存分别解决什么问题

文章把LLM请求的成本拆成输入token和输出token两部分。客服类应用可能在用户一句提问之外,附带行为指令、示例回答、产品文档和历史对话,使一条十个词的提问对应数千个输入token;另一些应用每次请求都附带同一份长产品手册。

提示缓存处理第一种重复:把已经计算过的输入前缀存下来,后续请求复用,避免重新处理。语义缓存处理第二种重复:当大量用户用不同措辞问同一个问题时,直接返回此前生成的答案。

提示缓存要求前缀完全一致

文章解释,典型文本生成Transformer分预填充(prefill)和解码(decoding)两阶段,预填充阶段产生的键值状态(KV状态)可被缓存。若两个请求的开头都是相同的支持指令加产品手册,只是结尾问题不同,第二个请求就能复用这段共享前缀的计算结果。

作者强调,共享内容必须放在请求开头,且要“完全”一致:措辞不能改,文档顺序不能变,请求设置也不能变。开头放一个时间戳或随机请求ID,就可能让模型无法复用后面的大段共享内容。语义相同但措辞不同的两条指令,也不能互换使用。

费用方面,文章引用Anthropic的标准提示缓存定价:缓存读取按普通输入价格的十分之一计费,5 分钟缓存写入为普通输入价的 1.25 倍,1 小时写入为 2 倍;这些是受影响token的总价,而不是在普通输入费之外另加。作者举例,原本处理一个前缀花 1 美元,按 5 分钟方案,首次写入 1.25 美元、后续读取 0.10 美元,一次写入加一次读取共 1.35 美元,低于两次正常处理的 2 美元;读取次数越多,节省越多,但前缀从未被复用就没有收益。

语义缓存的难点在判断“足够相似”

语义缓存通常位于应用侧或作为独立服务,在调用LLM之前先查缓存。它用嵌入模型把问题转成向量,再与已存问题的向量比较相似度,超过阈值就返回已存答案;未命中才调用LLM生成新答案。命中时省去输入和输出token费用,但嵌入生成、查找和存储仍消耗资源;未命中则要为这些前置步骤和LLM请求都付费,因此单次未命中比不用缓存更贵。

文章用取消订单的例子说明阈值的两难:发货前取消和发货后取消两个问题几乎相同,只差一个关键词,嵌入向量可能很接近,但同一个答案不能同时适用。数字、否定、日期、产品版本和资格条件都会造成类似问题。作者还提醒,相似度 0.92 不等于缓存答案有 92% 的概率适用,分数的含义取决于嵌入模型和比较方法;有的系统返回距离分数,数值越小才表示越接近。

缓存还需要条件过滤与失效策略

文章指出,仅凭问题本身不足以决定能否复用答案。“我的订单状态是什么”取决于具体客户和当前状态,“它支持离线访问吗”取决于对话上下文里的“它”,用户换一种语言提问时也不能直接返回英文缓存答案。实现语义缓存需要额外带上客户或组织信息、访问权限、产品版本、语言、对话状态和源数据版本,并通过元数据过滤把检索限制在合适范围内。

缓存失效方面,文章给出三种做法:设置TTL(存活时间)限制陈旧信息可被复用的时长;按版本管理,例如policy_version=12 下缓存的答案在应用要求版本 13 时失效;当高层指令、输出格式或模型行为准则改变时,让旧答案失效。按整个知识库统一设版本简单,但一次小更新会让全部缓存答案失效;只失效受影响的部分更高效,但需要跟踪每个答案依赖哪些文档或记录。

文章最后表示,提示缓存和语义缓存可以配合使用,前者降低输入处理成本,后者在命中时跳过整次模型调用;两者都不是零成本,缓存是否值得取决于复用频率和具体定价。

信息来源

ByteByteGo原始来源