RAG / 语义检索基础 · 数据截至 2025–2026

主流嵌入模型(Embedding)全景对比

一篇讲清:嵌入模型是什么、维度与参数量级意味着什么、用什么指标衡量好坏(MTEB 等)、以及当下主流模型(OpenAI / Cohere / Voyage / BGE / GTE / E5 / Qwen3 / NV-Embed …)的维度、参数、效果到底怎么排。所有数值为公开基准的近似参考值,MTEB 分数会随版本与测试集浮动,最终以你自己的数据评测为准。

01嵌入模型是什么

嵌入模型(Embedding Model)把文本(词、句、段、文档)映射成一个固定长度的实数向量。语义相近的文本,在向量空间里距离更近——下游靠余弦相似度就能做语义检索、聚类、去重、推荐。

"如何重置密码" 查询文本 Encoder Transformer + 池化 向量 [1536] [0.23, -0.45, 0.67, ..., 0.12] 语义空间里的点 相似问题 → 相近向量 → 余弦相似度高分
图 1:查询文本经 Encoder 变成稠密向量,进入语义空间;"如何重置密码"与"账户恢复步骤"虽无相同词,向量却很近。
关键认知:嵌入模型 = 一个编码器(Encoder)。分词是确定的、相似度是算术、Top-K 是排序——唯一"学习"出来的就是它。选嵌入模型,本质上就是选这个编码器,它决定了你向量空间的"天花板"。

02维度与参数:意味着什么

📐 维度(Dimensions)

向量长度,常见 384 / 768 / 1024 / 1536 / 3072 / 4096。维度越高,能编码的语义细节越多,但存储和检索成本线性上涨。多数 RAG 系统 512–1024 维是甜区。

⚙️ 参数量级(Parameters)

从 22M(MiniLM)到 8B(Qwen3-Embedding)。小模型靠"精调的 BERT 类"性价比高;大模型把 LLM 当底座,效果更猛但推理慢 10 倍以上、需 GPU。

维度 vs 存储成本(100 万文档估算)

256d≈1 GB 512d≈2 GB 1024d≈4 GB 3072d≈12 GB 4096d≈16 GB float32 下每维 4 字节,维度翻倍存储翻倍——这就是 Matryoshka 截断的意义
图 2:维度直接决定存储与 ANN 检索延迟;降维是性价比最高的优化手段之一。

Matryoshka(套娃)表示:一份向量,多种维度

OpenAI text-embedding-3、Voyage、部分开源模型支持Matryoshka Representation Learning(MRL):训练时让向量的"前 N 维"本身就够用。于是同一模型可在256/512/1024等维度间切换,截断到 256 维约只掉 5% 质量,存储省 12 倍。

前256维 ≈ 完整质量95% 前1024维 → 前512维 → 前256维(嵌套,越短越省) 完整3072维
图 3:Matryoshka 嵌套结构——前缀维度即可用,无需重新训练就能按需降维。

03质量对比指标:用什么衡量"好不好"

最主要的公开基准是 MTEB(Massive Text Embedding Benchmark)——覆盖 8 大类任务、数十个数据集、上百种语言,给出一个"综合平均分"。但综合分≠你的任务分,RAG 更该看其中的 Retrieval(检索)子集。

MTEB 的 8 类任务与对应指标

🔎 Retrieval 检索

最核心(RAG)。指标 nDCG@10——看相关文档是否排进前 10。

🧩 Clustering 聚类

V-measure / NMI。衡量向量能否把同类文本聚在一起。

🏷️ Classification 分类

Accuracy / F1。向量+简单分类器的效果。

💞 STS 语义相似度

Spearman 相关系数。两句话相似度打分与人工标注的相关性。

🔁 Reranking 重排

MAP / nDCG。对候选集重新排序的能力。

🔗 PairClassification

AP / F1。判断句子对是否属于某关系。

📝 Summarization

Spearman。文档与其摘要的向量相似度。

🌐 BitextMining

F1 / Precision。跨语言平行句挖掘。

📊 综合 MTEB

以上加权平均,越接近 100 越好(当前 SOTA ≈ 73)。

MTEB 综合分(越高越好,满分100) Qwen3-8B73.8 NV-Embed-v272.3 GTE-Qwen2-7B72.1 OpenAI-3-large64.6
图 4:MTEB 综合分对比(近似参考)。大模型底座(7B+)已显著拉开与传统 BERT 类(~64)的差距。
别只看综合分:一个小模型在 MTEB 整体排第 10,却可能在检索任务排第 1。RAG 场景请直接看 MTEB 的 Retrieval 子集、或用你自己的 query→doc 对算 Recall@K(期望文档是否在前 K 个里)。2 分的 MTEB 差通常不如 15% 的召回率差重要。

04主流模型全景对比

下表汇总当下最常用模型。维度/参数/MTEB 为公开基准近似参考(会随版本浮动),价格以官方或主流报价为准。

模型提供方类型参数量维度上下文MTEB≈核心特点
text-embedding-3-smallOpenAIAPI未公开1536(MRL→256)819162.3性价比之王,$0.02/1M
text-embedding-3-largeOpenAIAPI未公开3072(MRL→256)819164.6质量更高,$0.13/1M
embed-english-v3.0CohereAPI未公开102451264.5英文检索强,input_type 区分查询/文档
embed-multilingual-v3CohereAPI未公开1024512~62–64100+ 语言
voyage-3 / 3-largeVoyageAPI未公开1024(MRL)32K65–68长上下文,质量顶流
BGE-large-en-v1.5BAAI开源335M102451264.2英文开源标杆
BGE-M3BAAI开源568M10248192~64多语言 + 稠密/稀疏/多向量三模
GTE-large阿里开源335M102451263.1通用强,生态成熟
GTE-Qwen2-7B-instruct阿里开源7.62B358432K72.1LLM 底座,效果猛但贵
E5-large-v2微软开源335M102451262.3弱监督对比预训练
NV-Embed-v2NVIDIA开源7.85B409632K72.3曾登顶 MTEB
Qwen3-Embedding-8B阿里开源8B可变32K73.82025 多语 SOTA
Qwen3-Embedding-0.6B阿里开源0.6B可变32K66.3轻量多语,可本地跑
all-MiniLM-L6-v2SBERT开源22M384256~58–62极轻极快,默认 baseline
all-mpnet-base-v2SBERT开源109M768384~63经典高质量小模型
Nomic Embed v1.5Nomic开源137M768819262.3长上下文开源代表
Jina-v3Jina开源570M102432K65.5指令式,8 类任务可指定
读表要点:① 参数 7B+ 的 LLM 底座模型(Qwen3 / NV-Embed / GTE-Qwen2)在 MTEB 上已明显领先传统 BERT 类(~62–64),代价是推理成本高、需 GPU;② 开源 BGE/GTE/E5 在 ~335M 量级已能打平甚至超过 OpenAI small,且免费、可私有部署;③ Cohere/Voyage 的 API 强在多语言与长上下文。

05商业 API 模型详解

OpenAI text-embedding-3

维度:small 1536 / large 3072(均支持 MRL 截断到 256)
上下文:8191
MTEB:62.3 / 64.6
价格:$0.02 / $0.13 每 1M tokens
结论:small 是多数 RAG 的默认起点,便宜够用;large 仅在"每点召回都值钱"的场景(法律/医疗)上算得回本。

Cohere embed-v3

维度:1024(含 light 384 版)
上下文:512
MTEB:英文 64.5 / 多语 ~62–64
价格:$0.10 / 1M
亮点:input_type 分别编码 query 与 document(非对称检索),多语言与分类表现好。

Voyage voyage-3 / 3-large

维度:1024(MRL 可截断)
上下文:32K
MTEB:65–68
价格:$0.06 / $0.12 每 1M
亮点:长上下文 + 高综合分,并有 code-3 等垂直优化版。

API 选型一句话:要省心通用选 OpenAI-3-small;要英文检索质量与多语言选 Cohere;要顶流质量与长文档选 Voyage-3-large。三家的 MTEB 差距(2–4 分)通常小于你的分块策略带来的差距。

06开源模型详解

① 中文/多语言首选:BGE 系列(BAAI)

BGE-large-en-v1.5

335M / 1024 维 / 512 上下文 / MTEB 64.2。英文开源标杆,加查询前缀 Represent this sentence for searching relevant passages: 效果最佳。

BGE-M3

568M / 1024 维 / 8192 上下文 / MTEB ~64。独特地同时支持稠密 + 稀疏 + 多向量三种检索表示,100+ 语言,长文档友好,是中文 RAG 的热门默认。

② 通用强、生态成熟:GTE(阿里)/ E5(微软)

GTE-large

335M / 1024 / 512 / MTEB 63.1。通用文本嵌入,HuggingFace 下载量极高,易落地。

E5-large-v2

335M / 1024 / 512 / MTEB 62.3。微软弱监督对比预训练,多尺寸(small/base/large);multilingual-e5 支持 100+ 语言。

③ LLM 底座的"大模型":效果顶流,成本也顶流

Qwen3-Embedding-8B

8B / 可变维度 / 32K / MTEB 73.8。2025 多语 SOTA,指令可指定任务语言与领域。

NV-Embed-v2

7.85B / 4096 / 32K / MTEB 72.3。Mistral 底座,曾登顶;延迟高,适合离线批处理。

GTE-Qwen2-7B

7.62B / 3584 / 32K / MTEB 72.1。阿里 LLM 底座版,质量接近 NV-Embed。

④ 轻量基线:Sentence-Transformers 经典款

all-MiniLM-L6-v2

22M / 384 / 256 / MTEB ~58–62。极轻极快(CPU 可跑),做原型、小语料、实时检索的默认 baseline。

all-mpnet-base-v2

109M / 768 / 384 / MTEB ~63。比 MiniLM 质量更高,仍是很多项目的"免费高质量"选择。

开源落地建议:英文/通用 → BGE-large-en-v1.5 或 GTE-large;中文/多语长文档 → BGE-M3;要本地、要免费、要隐私 → 这三者其一即可逼近 OpenAI small 且零边际成本;追求极致质量且有 GPU → Qwen3-Embedding-8B / 4B。

07按场景怎么选

1

要本地/私有部署、零成本?

→ 选开源:BGE-M3(中多语)/ BGE-large-en(英文)/ all-mpnet(轻量)。

2

要省心、不想运维、量不大?

→ 选 API:OpenAI-3-small(通用)/ Cohere(多语)/ Voyage(长文+质量)。

3

是中文/多语言/长文档检索?

→ BGE-M3 或 multilingual-e5 / Cohere multilingual;优先 8K+ 上下文模型。

4

要极致召回、有 GPU、量批处理?

→ Qwen3-Embedding-8B / 4B、NV-Embed-v2、GTE-Qwen2-7B(MTEB 72+)。

5

最终别忘了:

用你自己的 50–100 条 query→doc 对算 Recall@K 决定,而不是只看榜单分。

选嵌入模型 需要本地/私有? 是 否 开源 BGE-M3 / GTE API OpenAI/Cohere/Voyage 都回到:用 Recall@K 实测
图 5:选型决策树——本地/私有 vs API 只是第一步,真正的决定权在"你数据上的 Recall@K"。

08常见误区与避坑

❌ 只看 MTEB 综合分

RAG 看 Retrieval 子集;分类/聚类强的模型检索未必强。用自己数据算 Recall@K 才是铁律。

❌ 维度数盲目拉满

3072/4096 维存储与延迟翻倍。多数场景 512–1024 维 + MRL 截断已足够,省 4–12 倍成本。

❌ 查询和文档用同一方式编码

非对称检索(Cohere 的 input_type、BGE 的查询前缀)能显著提升召回,别忘了加前缀。

❌ 维度不匹配就直接比向量

不同模型的向量空间不可比;索引与查询必须用同一个模型同一维度,且最好 L2 归一化后用点积。

❌ 以为大模型一定适合生产

7B+ 模型推理慢 10 倍+、吃 GPU。除非召回率直接决定收益,否则 335M 开源款性价比更高。

❌ 忽视上下文长度

长文档/长 query 要选 8K–32K 上下文模型(BGE-M3、Qwen3、Voyage、Nomic),否则被截断丢信息。

最后一句:嵌入模型的"天花板"由它决定,但 RAG 的"地板"由分块、查询改写、元数据过滤、重排决定。模型之间 2–4 分的 MTEB 差距,常常小于一次好的分块策略带来的提升——先把这些做对,再纠结选哪个模型。