🚀 语义缓存 — 扩展 LLM 的系统设计秘密 🧠💸

发布: (2026年1月16日 GMT+8 18:55)
5 min read
原文: Dev.to

Source: Dev.to

介绍

欢迎来到我们新系列的第一期:AI at Scale。🚀

我们在过去的一周里构建了一个“弹性堡垒”——保护我们的数据库免受Thundering Herds的影响,并保护我们的服务免受Cascading Failures的影响。但当我们将重点转向 LLM 和生成式 AI 时,遇到了全新的瓶颈。

传统数据库快速且便宜。LLM 则慢且昂贵。

如果你是一名构建生产级 AI 应用的工程师 👷🏻‍♂️,你会很快意识到为每个用户请求调用 LLM API 是导致巨额云费用和迟缓用户体验的根源。

解决方案?语义缓存

问题:为什么传统缓存对 AI 失效

在我们之前的文章中,我们使用了键值缓存(比如 Redis)。如果用户请求“Taylor Swift’s Birthday”,键就是完整的字符串。如果下一个用户再次请求“Taylor Swift’s Birthday”,我们就能匹配到。

但是在自然语言的世界里,用户从不会以完全相同的方式提问:

  • 用户 A: “Taylor Swift 的生日是什么?”
  • 用户 B: “Taylor Swift 何时出生?”
  • 用户 C: “Taylor Swift 的生日?”

对传统缓存而言,这三个都是不同的键。对大语言模型(LLM)来说,它们表达的是相同的意图。因此传统缓存的命中率为 0 %,会为同一信息发起三次昂贵的 API 调用。

什么是语义缓存?

语义缓存不关注字母本身,而是关注意义。很简单!

我们不存储字符串,而是存储 向量(意义的数学表示)。当有新问题出现时,我们把它转化为向量,然后询问缓存:“你有没有在数学上足够接近的内容?”

3‑步工作流

  1. Embedding – 将用户的提示使用嵌入模型(例如 OpenAI 的 text‑embedding‑3‑small)转换为向量。
  2. Vector Search – 在向量数据库(Pinecone、Milvus,或支持向量的 Redis)中搜索最近邻。
  3. Similarity Threshold – 计算新提示与缓存提示之间的距离。如果相似度非常高(例如 0.98),返回缓存的响应;否则调用 LLM。

“真实”挑战:可能出错的地方?

1. 相似度阈值(Goldilocks 问题)

  • 阈值过高(0.99) – 缓存命中率极低;仍需支付向量搜索 以及 LLM 调用的费用。
  • 阈值过低(0.85) – 可能把“如何烤蛋糕”的答案提供给询问“如何做派”的用户。

找到最佳平衡点需要持续监控和微调。

2. 缓存陈旧(“真相”问题)

如果用户询问“苹果公司的当前股价是多少?”而你提供的是三小时前缓存的答案,这就是一次失败。与静态数据不同,语义缓存通常需要 元数据过滤(例如,“仅在数据不超过 5 分钟时使用此缓存”)。

为什么这对你的职业重要

当你在顶级公司面试时,他们并不只寻找会“连接 API”的人。他们想要能够进行优化的架构师。

提到语义缓存表明你理解:

  • 成本管理 – 降低 token 消耗。
  • 延迟优化 – 将 2 秒的 LLM 等待时间缩短至 50 毫秒的缓存命中。
  • 向量基础设施 – 具备现代 AI 核心技术的经验。

收尾 🎁

Semantic Caching 本质上是 AI 时代对 “Celebrity Problem” 的解决方案。它可以防止重复工作,并在你扩展到数百万用户时保持基础设施的精简。

接下来在 “AI at Scale” 系列中: 向量数据库分片 — 如何在不让自己抓狂的情况下管理数十亿的嵌入。

给你的问题: 如果你已经实现了语义缓存,你发现哪个相似度阈值(例如 0.92、0.95)是准确性与成本节约之间的 “最佳平衡点”?在下方分享你的数值吧!👇

Back to Blog

相关文章

阅读更多 »

Nano Banana 是如何得名的

你已经因为它的病毒式编辑功能而熟知 https://blog.google/products/gemini/nano-banana-tips/。但是,Google DeepMind 最受欢迎的模型之一是如何…

Gemini 正在获胜

如果你想在 AI 领域取得成功——我的意思是以最大、最有利可图、最能按照你的想象塑造世界的方式取得成功——你必须做很多艰难的事……