Prompt 缓存的四种策略:从精确匹配到语义检索

简介: 本文详解Prompt缓存四大策略(精确匹配、规范化、语义相似、分层架构),直击LLM应用成本痛点——重复调用导致API费用飙升。代码示例+架构图,助你低成本提升命中率,降本30%–90%,延迟同步优化。

自然语言理解、摘要生成、代码编写、逻辑推理,OpenAI 等厂商的模型把这些事情做得相当好。但是只有一个问题,那就是 “贵".尤其是在应用上了规模之后,API 调用费用的增长速度会让人心跳加速。

Prompt 缓存是应对这个问题最直接也最容易被忽视的手段。本文会从原理讲到实践,覆盖四种不同层级的缓存策略,配有代码示例和架构图。

LLM 的成本为什么涨得这么快

LLM API 的定价模型就三个维度:输入 Token 数(也就是 Prompt 长度)、输出 Token 数(响应长度)、调用次数。

比如FAQ 机器人、聊天式新人引导助手、内部开发者工具、AI 仪表板——这些应用有一个共同特征:大量重复或高度相似的 Prompt 被反复发送,而期望得到的回答几乎一样。

如果不做缓存的话,每次调用都要按量计费,那费用肯定就爆炸了。

Prompt 缓存是什么

一句话概括:

当相同或等价的 Prompt 再次出现时,直接复用之前的 LLM 响应,而不是重新调用 API。

先查缓存,命中就直接返回;没命中再去调 LLM,拿到结果后存入缓存。

就这一个改动,成本就能降低 30%–90%,具体数字取决于工作负载的重复程度。

策略 1:精确匹配缓存

这是最基础的方案。逻辑非常简单:完全相同的 Prompt 字符串出现时,直接返回缓存结果。

适用场景包括静态 FAQ、政策说明文档、"解释 X"这一类 Prompt,以及聊天机器人中反复出现的 system prompt。

下面是 Node.js 的实现:

 import crypto from "crypto";  

const cache = new Map();  

function hashPrompt(prompt) {  
  return crypto.createHash("sha256").update(prompt).digest("hex");  
}  

async function getLLMResponse(prompt) {  
  const key = hashPrompt(prompt);  

  // Step 1: Cache lookup  
  if (cache.has(key)) {  
    return cache.get(key);  
  }  

  // Step 2: Call LLM API  
  const response = await callLLM(prompt);  

  // Step 3: Store in cache  
  cache.set(key, response);  

  return response;  
 }

为什么要对 Prompt 做哈希?因为 Prompt 本身可能很长,哈希之后得到固定长度的 key,查找速度快,SHA-256 的碰撞概率也低到可以忽略。

内存缓存的优点是极快,单实例或小规模系统用起来非常合适。但是这样做也进程重启缓存就没了,多实例之间也无法共享。

策略 2:规范化缓存

精确匹配有一个很容易遇到的问题:Prompt 里多一个空格、少一个换行、大小写不同,就被当成不同的 key 了。实际上这些差异对语义毫无影响。

解决办法是在缓存前先做规范化处理。举个例子:

规范化之前:

  "Explain REST APIs"  
 "Explain REST APIs "  
 "Explain  REST APIs"

规范化之后全部变成:

  "explain rest apis"

代码实现:

 function normalizePrompt(prompt) {  
  return prompt  
    .toLowerCase()  
    .replace(/\s+/g, " ")  
    .trim();  
}  

function getCacheKey(prompt) {  
  return hashPrompt(normalizePrompt(prompt));  
 }

不必要的 cache miss 减少了,命中率明显上升,同时整个过程依然是确定性的、安全的。

策略 3:语义缓存

"What is REST?" 和 "Explain REST architecture" 说的其实是同一件事,但无论精确匹配还是规范化匹配都会把它们当作两个完全不同的请求。

所以思路是引入向量嵌入。把 Prompt 编码成向量,通过余弦相似度之类的指标判断两个 Prompt 是否"足够接近"。如果相似度超过阈值,直接返回缓存结果。

语义缓存流程

工具选型方面,Embedding 可以用 OpenAI 的接口,向量存储可以选 Pinecone、Weaviate 这类专门的向量数据库,小规模场景下在内存里做相似度搜索也够用。

伪代码如下:

 const SIMILARITY_THRESHOLD = 0.90;  

async function getSemanticResponse(prompt) {  
  const embedding = await getEmbedding(prompt);  

  const match = await vectorDB.findClosest(embedding);  

  if (match && match.score > SIMILARITY_THRESHOLD) {  
    return match.response;  
  }  

  const response = await callLLM(prompt);  

  await vectorDB.store({  
    embedding,  
    response  
  });  

  return response;  
 }

语义缓存的风险

语义缓存的核心风险在于阈值设定。设得太低会把不相关的 Prompt 混为一谈,返回错误结果;设得太高又和精确匹配没什么区别。0.90 是一个比较常见的起步值,具体数字需要根据业务场景调优。

策略 4:分层缓存架构

生产环境一般不会只用单一缓存策略,而是按层级组合。典型的三层架构长这样:

 L1 Cache (In-memory, per instance)  
    |  
 L2 Cache (Redis / Shared Cache)  
    |  
 L3 Semantic Cache (Vector DB)  
    |  
 LLM Provider

每一层的定位不同。L1 是进程内存缓存,速度最快但作用域最小;L2 一般用 Redis,多个实例可以共享同一份缓存;L3 是语义缓存层,处理那些文本不同但意思相近的 Prompt。只有三层都没命中的情况下,请求才会打到 LLM Provider。

缓存过期与失效

Prompt 缓存不能"设了就忘"。以下几种情况必须主动失效:模型版本升级了,Prompt 模板改了,或者缓存的内容涉及时效性信息。

最简单的做法是设 TTL:

 cache.set(key, response, {  
   ttl: 60*60*24// 24 hours  
 });

成本影响

缓存带来的收益是双重的——成本下降,延迟也降低了。对于重复率高的工作负载,这两个指标的改善都非常可观。

总结

在 LLM 系统的各种优化手段中,Prompt 缓存的投入产出比可能是最高的。入手门槛低,可以渐进式迭代,而且到了一定规模之后几乎是刚需。

可以先从精确缓存做起,这是成本最低、风险最小的方案。规范化处理应该尽早加上,代码量很小但效果明显。语义缓存只在业务确实需要时才引入,因为它带来了额外的复杂度和向量计算开销。TTL 和版本控制是必须配套的机制。最后缓存命中率要持续监控,因为这是判断缓存策略是否有效的核心指标。

如果正在生产环境跑 AI 系统却没做 Prompt 缓存,可以试试上面的方法,肯定会为你省钱。

https://avoid.overfit.cn/post/10623b71c58d425dae471f5333a54e4c

作者: Vasanthan K

目录
相关文章
|
27天前
|
机器学习/深度学习 数据采集 人工智能
OpAgent:登顶WebArena的多模态Web GUI Agent
蚂蚁集团自研多模态Web智能体OpAgent,以71.6%的成功率登顶WebArena榜单。该方案通过层次化多任务微调构建基座,利用在线强化学习与混合奖励机制应对环境动态性,并结合模块化架构实现复杂任务的稳健执行与自我修正,刷新了Web智能体领域的SOTA纪录。
138 11
|
22天前
|
编解码 atlas ice
MEaSUREs 格陵兰冰盖测绘项目(GrIMP)基于 GeoEye 和 WorldView 影像的数字高程模型 V002
MEaSUREs格陵兰冰绘图计划(GrIMP)V002 DEM,基于GeoEye与WorldView系列卫星亚米级立体影像生成,空间分辨率高,经ICESat-2 ATL06数据精校准,适用于冰盖高程变化研究。(239字)
124 15
|
1月前
|
人工智能 测试技术
LLM创造力可以被度量吗?一个基于提示词变更的探索性实验
本文探讨提示词工程为何仍是“玄学”,并通过实验证明:加入明确指令(如“Be as creative as possible”)可显著、可量化地提升LLM输出多样性,效果甚至超过调高温度。研究以embedding距离为代理指标,覆盖13个主流模型,揭示提示词迭代可度量、可预测,为LLM应用从经验走向工程化提供新路径。
104 17
LLM创造力可以被度量吗?一个基于提示词变更的探索性实验
|
27天前
|
机器学习/深度学习 SQL 人工智能
别再群发拜年消息了!三步微调AI,让它学会你的“独家语气”
每逢春节,通用AI祝福总显生硬空洞。本文探讨如何通过微调(LoRA),将“人情世故”转化为结构化数据(称呼/关系/细节/风格等),让AI真正学会你的语气与记忆,生成有温度、带梗、专属的个性化祝福——技术不是替代表达,而是帮你把来不及说的情意,说得恰到好处。(239字)
273 16
别再群发拜年消息了!三步微调AI,让它学会你的“独家语气”
|
27天前
|
人工智能 安全 程序员
编程已shi?2026年AI技术趋势预测
Django联合创始人Willison在2026年初发布AI技术趋势预测:1年内LLM生成代码将达生产级;3年AI可协作开发浏览器;6年后手写代码或成历史,程序员转向架构设计与AI协同。安全沙箱、Jevons悖论与角色重塑是核心议题。
|
27天前
|
监控 测试技术 持续交付
大模型测试怎么做?从模型评估、幻觉检测到 RAG 系统测试全指南
本指南系统讲解大模型测试全流程:涵盖多维度评估(私有评测集构建、指标选择)、幻觉检测(事实核查、一致性与对抗测试)、RAG分层验证(检索/生成/端到端),以及持续集成实践与避坑指南,助力团队落地可靠评估体系。
|
27天前
|
域名解析 人工智能 API
不用懂代码?DeepSeek 个人网站搭建,新手0基础一看就会!
通过阿里云计算巢“DeepSeek个人站点-快速部署”服务,用户可以轻松搭建专属DeepSeek网站。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。整个过程简单快捷,无需代码,最快5分钟完成部署,支持多种AI模型如DeepSeek、Qwen-max、Llama等。详细教程涵盖从购买到设置的每一步,确保用户顺利搭建并访问自己的AI网站。
179 9
|
22天前
|
人工智能 运维 自然语言处理
阿里云OpenClaw/Clawdbot企业级部署指南:6大核心技能+安全运维,打造全天候AI助理
在2026年AI Agent赛道中,OpenClaw(原Clawdbot/Moltbot)凭借“能落地执行”的核心优势脱颖而出——它并非简单的聊天机器人,而是可通过自然语言指令完成脚本编写、跨平台操作、文件处理的全能数字助理。阿里云针对零基础用户打造的一键部署方案,将复杂环境配置简化为20分钟流程,搭配ClawHub精选的7个核心技能,能让OpenClaw从基础对话工具升级为处理真实工作场景的智能助理,真正实现“雇佣一个不知疲倦的AI员工”。
441 25
|
27天前
|
机器学习/深度学习 人工智能 物联网
春节祝福“AI味”太重?我用30分钟微调了一个能记住你我故事的专属模型
用30分钟微调Qwen3-32B,打造专属“马年祝福语创意伙伴”。借助LLaMA-Factory Online与PPO强化学习,让AI从“说正确的话”升级为“说走心的话”——懂关系、记细节、会调侃、有温度。技术不冰冷,祝福才动人。
193 9
|
17天前
|
机器学习/深度学习 存储 物联网
深入理解三种PEFT方法:LoRA的低秩更新、QLoRA的4位量化与DoRA的幅度-方向分解
大模型全量微调显存开销巨大(65B模型需130GB),参数高效微调(PEFT)应运而生。LoRA通过低秩矩阵增量更新,节省99%+参数;QLoRA结合4-bit量化(NF4)与LoRA,单卡48GB即可微调65B模型;DoRA进一步解耦权重的幅度与方向,精度显著超越LoRA。三者协同构建高效、低成本、高性能的微调新范式。
185 6
深入理解三种PEFT方法:LoRA的低秩更新、QLoRA的4位量化与DoRA的幅度-方向分解

热门文章

最新文章