前两天一个朋友问了我这个问题。
这是一个 AI 工程里非常典型、但很多人第一次会困惑的问题。
还不了解Embedding的小伙伴点击了解详情,建议了解了什么是 Embedding 再继续看哦。
先说结论
Embedding 单次成本低,但调用规模极大、频率极高、可优化空间大,所以公司会疯狂优化。
换句话说:
LLM 是*"贵但少用"*,毕竟每一次对话大多数情况下LLM只调用一次(公司有额外的业务场景另算
Embedding 是 "便宜但一次对话里一般需要调用多次"
一、调用次数不是一个量级
在一个典型的 RAG系统 里:
LLM 调用
只在 最后一步回答问题 时调用。
流程:
scss
用户问题
↓
Embedding(query)
↓
向量检索
↓
拿到文档
↓
LLM 生成回答
所以:
一次提问 == 1 次 LLM
Embedding 调用
假定你是一个完善的AI产品,拥有完整的agent 和Embedding,接下来我们模拟一次输入。
Embedding通常包括:
1.用户问题 embedding
用户问题 → embedding → 检索
这就一次了 ,而且每次提问都会发生。
有些产品为了持久化缓存历史记录,还会把回答的内容再次进行切片,然后分片继续 embedding,存入。
分完片embedding又得好几次。
2.公司数据预填入
假设公司有文档100万条需要存入向量数据库,那么每条都要 embedding 一次。就是1000000 次 embedding
3.数据更新 embedding
企业知识库会更新:
新增文档
修改文档
重新切片
都会重新 embedding。
4. 缓存失效 / 重建索引
例如:
换 embedding 模型
向量维度升级
索引重建
可能要 全库重新 embedding。
所以调用规模通常是:
| 类型 | 调用次数 |
|---|---|
| LLM | 1 次 / query |
| Embedding | N 次 / query + 全库 |
很多系统里:
arduino
Embedding调用量 = LLM 的 10 ~ 1000 倍 //具体哪个数量级取决于公司产品业务需求
二、Embedding 发生在"高 QPS 环节"
QPS = Queries Per Second 即 每秒查询数
Embedding 是在线服务
用户提问
↓
embedding
↓
向量搜索
如果:
ini
DAU = 10万
每人10次提问
DAU = Daily Active Users
日活跃用户数
一天:
100万次 embedding
这是 实时调用。
而 LLM:
很多公司会做:
缓存
FAQ
模板回答
降级
所以:
很多请求不会真的打到 LLM,不然容易破产。
但:Embedding 基本无法绕过 因为:检索必须有向量
三、Embedding 优化收益大
假设:
embedding 单价
bash
$0.00002 / 次
一天:
100万次
成本:
bash
$20 / 天
一年:
bash
$7300
如果系统规模是:
1亿次 / 天
那就是:
bash
$2000 / 天
≈ $73万 / 年
所以很多公司会:优化策略
1.query embedding 缓存
很多问题是重复的。
北京天气
北京天气
北京天气
缓存:
arduino
query → vector
直接命中。
2.本地 embedding 模型
不用 API:
bge-small
e5-small
gte-small
GPU 一次跑几百条。
成本几乎:
≈ 0
3.批量 embedding
很多 API 支持:
batch embedding
例如:
100 条一起 embedding
吞吐量会高很多。
4. 只 embedding 新数据
很多公司会做:
bash
hash
版本号
只对新增内容 embedding。
四、Embedding 是 RAG 的"基础设施"
LLM 只是 生成层。
但 RAG 系统真正的核心其实是:
数据层
结构是:
数据
↓
切片
↓
embedding
↓
向量数据库
↓
检索
↓
LLM
这里面:
embedding 是整个数据 pipeline 的入口。
如果 embedding 不好:
问题会很多:
- 检索不准
- 召回差
- 上下文错
- LLM乱答
所以公司优化的不只是 成本,还有:embedding质量
可以记住一个 AI工程经验公式:
ini
LLM = 最贵的脑子
Embedding = 最忙的工人
所以:
LLM 优化 = 节省单次成本
Embedding 优化 = 节省规模成本
总结
- Embedding 单次成本低,但调用规模极大、频率极高、可优化空间大,所以公司会疯狂优化
- 一次对话里大概只有一次LLM,但是会有多次Embedding
- Embedding的触发原因包括但不限于:*数据更新/公司数据预填入/缓存失效 + 重建索引/用户问题 *等等
- 优化Embedding不止优化成本,还优化质量
最后
如果对你有用的话
