Embedding 模型怎么选?语言、长度、部署、成本,四个问题一次讲清(2026实战)

开头先说一个坑

搭 RAG 的第一步不是买向量数据库,是选 embedding 模型。模型选错了,后面分块切得再细、重排调得再精,检索出来的东西还是不对味。

上一篇文章我写了 RAG 分块怎么切(RAG 分块怎么切?结构、粒度、重叠三个决定),有读者留言问:分块之后,用什么模型把文字变成向量?这篇文章就把这个选择题讲清楚。

先交代一下我核实的边界:文里的模型参数、上下文长度、榜单分数都从 Hugging Face 的 config 和模型卡片现拉的(2026 年 11 月),Voyage 的价格从它官方文档现抓。OpenAI 的定价页被 Cloudflare 拦着打不开,所以它的数字我一条没写,只说机制。

先复习 30 秒:embedding 是干什么的

Embedding 模型把一段文字压成一个固定长度的数字列表(向量)。意思相近的两段话,向量之间的距离就近;意思不相关的,距离就远。检索的时候,把用户问题变成向量,去向量库里找距离最近的几块文本,就是「语义检索」。

原理在 Embedding 和向量数据库是什么?5 分钟搞懂 AI 记忆的底层原理里讲过,这里不重复。你只需要记住一句话:embedding 模型决定「什么算相关」,这是检索质量的天花板,重排器(reranker)只能在这个天花板下面整理秩序。

第一个决定:你的文档是什么语言

这是我建议的第一个筛选条件,也是最容易被忽略的。

如果你的知识库主要是中文,直接看中文榜单(C-MTEB)。英文模型在中文上经常翻车,反过来也一样。

举两个现成的例子,都是多语言模型:

  • BGE-M3(北京智源):支持超过 100 种工作语言,XLM-RoBERTa 底座。它还有个特点,一个模型同时输出三种检索形态:稠密向量、稀疏权重(类似 BM25 的词权重)、多向量(ColBERT 式)。做混合检索可以只用它一个模型。
  • Qwen3-Embedding 系列(阿里通义):0.6B/4B/8B 三个尺寸,官方说明支持多语言,8B 版在 2025 年 6 月 5 日曾以 70.58 分登顶 MTEB 多语言榜单。

纯英文场景可以选专门的英文模型,尺寸往往更小。但中文场景,我建议直接从上面两个系列里挑。

第二个决定:文档有多长

每个 embedding 模型有最大输入长度,超长会截断。截断发生在分块之后:你精心切好的 500 字一块,模型都吃得下,这个参数就不用纠结;如果你的块切得大(比如整章 8000 字),就必须看这个数。

现成参考:BGE-M3 是 8192 tokens;Qwen3 系列是 32K。都是 config.json 里实拉的。中文 1 个字大约 1 个 token 出头,日常分块(几百字到一两千字)离这些上限都很远。

所以我的经验是:这个参数别当首选条件,拿它做排除法就行。你的分块粒度在 分块那篇里定了,块最大不超过模型上限,这一项就过关。

第三个决定:本地跑还是调 API

这一步的分水岭是数据出不出门。

先说 API。调用简单,按 token 计费,不用自己管 GPU。有个现象值得知道:主流 LLM 聚合网关上基本没有 embedding 模型,我拉了一遍 OpenRouter 当天的模型列表,454 个模型里 embedding 是 0 个。也就是说,走 API 就得直接用原厂:Voyage、OpenAI 这类。

Voyage 的价格我从官方文档现抓的(2026 年 11 月):voyage-3.5 是 0.06 美元每百万 tokens,更便宜的 voyage-3.5-lite 是 0.02 美元,最贵的 voyage-3-large 0.18 美元。新出的 voyage-4 系列从 0.02 到 0.12 美元不等,每个账号有 2 亿 tokens 免费额度。一个 100 万块的知识库,块均 500 tokens,首次全量嵌入大约 5 亿 tokens,用 0.06 美元档算约 30 美元,之后每次增量更新花得很少。这个账你可以自己按官网现价重算,价格变动很勤。

再说本地。开源模型免费用,数据不出门,代价是你得自己跑推理。别被「GPU」吓住,CPU 也能跑,只是首次全量嵌入慢。两个候选:

  • Qwen3-Embedding-0.6B:5.96 亿参数,embedding 维度 1024,最大到 32K 上下文。用 MRL(Matryoshka Representation Learning)支持自定义维度,官方文档说可以在 32 到 1024 之间取。它也支持 instruction:查询前加一句任务说明,官方评测平均能提 1% 到 5%。
  • BGE-M3:约 5.68 亿参数(XLM-RoBERTa large 底座),1024 维,8192 tokens。MIT 许可证,商用没有额外约束。

这两个参数量差不多,都是消费级硬件能跑的尺寸。再往上有 Qwen3-Embedding-4B(2560 维)和 8B(4096 维),效果确实更好,但部署成本上去了,除非你有钱有卡,先不碰。

算一笔存储的账

维度选高还是选低,直接影响向量库体积。fp32 存储下:

  • 100 万块 x 1024 维 = 3.8 GB
  • 100 万块 x 2560 维 = 9.5 GB
  • 100 万块 x 4096 维 = 15.3 GB

这是纯向量体积,索引结构还要额外占一些。但量级清楚了:中小知识库(10 万块以内)连 1 GB 都不到,存储根本不是瓶颈。真到了百万块级,考虑 Qwen3 的 MRL 降维,或者库里的 int8 量化,能压到四分之一。

顺带说一句:维度高低不直接等于效果好坏,榜上的高分模型也有 1024 维的。别为了「数字大」选高维。

第四个决定:怎么验证它适合你的数据

榜单只是初筛。C-MTEB 中文榜单上,Qwen3-Embedding 的三个尺寸分别是 66.33、72.27、73.84 分,multilingual-e5-large-instruct 是 58.08 分,差距不小。但榜单是别人的数据分布,你的知识库不是。

我的做法,20 分钟够用:

  1. 从你的知识库里抽 30 到 50 个真实问题,人工标出每题的正确来源块。
  2. 全量嵌入(或抽 2000 块嵌入),把正确块强制塞进候选池。
  3. 跑检索,看正确块排在第几。前 3 内命中超过八成,这个模型就能用。
  4. 不达标的换一个模型重跑,同一套题、同一套块,公平对比。

这套小评测比盯着榜单数字纠结半天有用得多。它测的就是你自己的场景。

三个组合直接抄

按场景给三个现成组合:

  • 个人小知识库(几百到几千份文档):Qwen3-Embedding-0.6B 本地跑,CPU 就行,查询侧加 instruction,重排用 rerank 重排序加一层精排。
  • 中文生产环境、要混合检索:BGE-M3 本地或 API,稠密加稀疏一路出,省一个模型,配合 reranker 微调能再压榨一轮效果。
  • 不想碰任何部署:Voyage voyage-3.5 或 3.5-lite 起步,2 亿免费 tokens 够中小库全量嵌入好几次,效果好且省心,代价是数据出门和长期按量付费。

组合是死的,你的数据是活的。拿第 4 节那套 20 分钟评测跑一遍再定,别直接上线。

整篇收个尾

整篇的决策链就是四个问题:什么语言、多长的块、本地还是 API、20 分钟评测过不过。顺序不要乱,语言筛掉一半,长度做排除法,部署方式定预算,评测说了算。

换模型等于全量重嵌。向量库里的向量跟模型绑定,中途换模型,旧向量全部作废,100 万块就是 100 万块的重新计算。选型阶段多花 20 分钟评测,比上线后返工便宜太多,这笔账怎么算都划算。

知识库如果还要接长上下文的大模型,检索和「直接塞全文」怎么取舍,我在这篇里算过:RAG、长上下文、微调怎么选。

我最近在搭自己的知识库,边搭边写。有具体场景拿不准的,评论区聊。

发表评论