文本嵌入(text embedding)将变长文本映射为固定维度的稠密向量,供语义检索、聚类、分类与 RAG 等下游任务使用。OpenAI、Google、阿里、火山、BGE、E5 等厂商与开源社区均提供多种 Embedding 模型——排行榜上的第一名,未必是你业务场景的最优解。
本文给出多维度、可复现的对比框架:先区分「测什么」,再选「用什么指标」,最后约定「怎么测才公平」。文中不重复介绍 Embedding 的基本概念;概念入门可参考 0009.概念-术语-embeddings嵌入。
缩写体例:缩写首次出现写「中文全称(English,ABB)」;段末 段末注释 释义;后文沿用缩写。
1. 评测前先回答三个问题
| 问题 | 决定什么 |
|---|---|
| 下游任务是什么? | 检索、重排序、分类、聚类、STS,指标完全不同 |
| 语料域是否匹配? | 通用新闻 vs 医学文献 vs 代码/蛋白序列,泛化能力不可外推 |
| 部署约束是什么? | 维度、延迟、GPU/CPU、API 成本往往与精度 trade-off |
核心原则:Embedding 评测是任务对齐(task-aligned)的,不是单一标量排名。MTEB 均分适合初筛;上线前必须在自有验证集上复测。
段末注释:RAG(Retrieval-Augmented Generation,检索增强生成)先检索相关文档再喂给 LLM;Embedding 质量直接决定召回上限。
2. 评测维度总览

图 1 评测维度总览:内在语义、检索排序、下游代理三类任务指标汇入 MTEB/CMTEB 等公开基准;工程指标(延迟、维度、成本)与基准分数共同决定选型,不可只看单一排行榜分数。
| 维度 | 典型指标 | 适用场景 |
|---|---|---|
| 语义相似度 | Spearman $\rho$、Pearson $r$ | STS、去重、问答匹配 |
| 检索 | Recall@$k$、MRR@$k$、nDCG@$k$ | RAG、搜索引擎、文档库 |
| 分类 | Accuracy、F1、AUROC | 意图识别、主题分类 |
| 聚类 | V-measure、NMI | 文档挖掘、无监督分组 |
| 重排序 | MAP、MRR | 两阶段检索的 rerank 头 |
| 工程 | QPS、P99 延迟、$/1M tokens | 生产 SLA 与成本核算 |
3. 相似度与检索类指标
3.1 余弦相似度
给定向量 $\mathbf{u}, \mathbf{v} \in \mathbb{R}^d$,余弦相似度(cosine similarity)为:
[
\mathrm{sim}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{|\mathbf{u}| , |\mathbf{v}|}
]
多数 Embedding 模型输出已 L2 归一化,此时 $\mathrm{sim}$ 等价于点积。对比不同模型时,必须统一:是否归一化、距离度量(cosine vs L2 vs inner product)、ANN 索引参数(HNSW 的 efConstruction / M)。
段末注释:ANN(Approximate Nearest Neighbor,近似最近邻)在大规模向量库上加速检索;不同索引参数会改变 Recall@$k$,对比时需固定。
3.2 语义文本相似度 STS
语义文本相似度(Semantic Textual Similarity,STS)任务:人工标注句子对相似度 $s \in [0,5]$(或 $[0,1]$),模型用 $\mathrm{sim}(\mathbf{e}_1, \mathbf{e}_2)$ 预测,报告 Spearman 秩相关系数 $\rho$ 或 Pearson $r$:
[
\rho = 1 - \frac{6\sum_i d_i^2}{n(n^2-1)}
]
其中 $d_i$ 为第 $i$ 对样本在「人工排序」与「模型相似度排序」中的秩差。STS 衡量连续语义梯度是否保序,对 paraphrase、问答匹配敏感;但对长文档检索代表性不足。
3.3 检索指标
设查询 $q$,语料库文档集合 $\mathcal{C}$,相关文档集合 $\mathrm{rel}(q) \subset \mathcal{C}$。按相似度降序得到排名列表 $\pi_q$。
| 指标 | 公式 / 含义 | 解读 |
|---|---|---|
| Recall@$k$ | $|\mathrm{rel}(q) \cap \pi_q[:k]| / |\mathrm{rel}(q)|$ | 前 $k$ 条是否覆盖足够多相关文档;RAG 常用 $k=5,10,20$ |
| MRR@$k$ | $\frac{1}{ | Q |
| nDCG@$k$ | 归一化折损累积增益,考虑多级相关度 | 多级标注(高相关 / 部分相关)时使用 |
| MAP | 各查询 AP 的均值 | 多相关文档、排序质量整体评估 |
nDCG@$k$ 的 DCG 定义为:
[
\mathrm{DCG@}k = \sum_{i=1}^{k} \frac{2^{\mathrm{rel}_i} - 1}{\log_2(i+1)}
]
再除以理想排序下的 IDCG 得到 nDCG。RAG 场景建议同时报告 Recall@$k$ 与 MRR@$k$:前者看「有没有召回」,后者看「排得靠不靠前」。
段末注释:nDCG(normalized Discounted Cumulative Gain,归一化折损累积增益)是信息检索(Information Retrieval,IR)经典排序指标。
4. 下游任务代理指标
公开基准(如 MTEB)很少端到端训练大模型,而是用 Embedding + 轻量头 代理下游能力:
| 任务类型 | 典型做法 | 主指标 |
|---|---|---|
| 文本分类 | 冻结 Embedding,训练 logistic regression | Accuracy、Macro-F1 |
| 聚类 | mini-batch k-means,$k$=真实类别数 | V-measure、NMI |
| 句子对分类 | 拼接或差分向量 + 分类器 | Average Precision |
| 重排序 | query-doc 向量相似度排序 | MRR@$k$、MAP |
| 检索 | 双塔编码 query/doc,全库 brute-force 或 ANN | nDCG@$k$、Recall@$k$ |
这些指标反映 Embedding 的线性可分性与度量空间结构,与「只调 API、不重训分类头」的生产用法部分一致,但不等于完整 RAG 链路(分块、重排、LLM)的最终效果。
5. 公开基准:初筛与横向对比
5.1 MTEB
大规模文本嵌入基准(Massive Text Embedding Benchmark,MTEB)覆盖 8 类任务、58+ 数据集、100+ 语言,是英文及多语场景最通用的横向对比框架。
使用注意:
- 看任务分组均分(Retrieval / Classification / Clustering …),不要只看总分;
- 确认模型是否针对 MTEB 任务过拟合(训练数据污染);
- 多语模型在英文子集上的分数可能与英文专用模型不可直接比「性价比」。
1 | # 最小可复现:单任务评测 |
5.2 CMTEB
中文大规模文本嵌入基准(Chinese Massive Text Embedding Benchmark,CMTEB)基于 MTEB 扩展,含 TNews、DuRetrieval、CMedQA 等 35 个中文数据集,分 6 类任务。中文 RAG / 分类选型应优先参考 CMTEB 对应子任务,而非英文 MTEB 排名外推。
1 | # 中文任务列表示例(完整列表见 FlagEmbedding / MTEB 文档) |
更完整的 CMTEB 跑分脚本见:特征工程-数据编码-Embedding性能测评方式。
5.3 BEIR 与其他检索基准
BEIR(Benchmarking IR,零样本信息检索基准)强调跨域零样本检索:模型未在目标域微调,直接 encode query 与 corpus。适合评估 RAG 知识库「冷启动」泛化。
| 基准 | 侧重点 |
|---|---|
| BEIR | 18 个异构检索数据集,nDCG@10 |
| AIR-Bench | 对齐 RAG 真实 query 分布 |
| LoCo / LongEmbed | 长上下文、长文档检索 |
| MLDR / C-MTEB Retrieval | 多语 / 中文检索子集 |
蛋白、药物、代码等垂直域另有专用评测;蛋白域详见 Embedding-02.蛋白Embedding模型评价标准与常用方法,通用 MTEB 高分不代表域内最优。
6. 领域对齐评测(上线前必做)
公开基准是代理任务;生产效果取决于你的 query、文档长度、分块策略与标注方式。推荐构建三层验证集:
| 层级 | 内容 | 用途 |
|---|---|---|
| Gold 检索集 | $(q, d^+, {d^-})$ 或 $(q, \mathrm{rel_rankings})$ | Recall@$k$、MRR、nDCG |
| Hard negative 集 | 语义相近但错误的 chunk | 区分「看起来像我」的误召回 |
| 端到端 RAG 集 | 同一 $q$ 下对比 answer faithfulness / EM | 链路级验收(Embedding 只是其中一环) |
Hard negative 构造:
- 同文档相邻 chunk(边界混淆);
- BM25 高分但语义无关段落;
- 同主题不同实体(如不同酶家族条目)。
标注规模:检索对比至少 200–500 条 query 可有稳定排序;少样本可用 k-fold 重复 encode,但结论置信区间会变宽。
7. 工程与成本指标
精度相近时,生产选型常由工程指标决定:
| 指标 | 测量方法 | 典型 trade-off |
|---|---|---|
| 向量维度 $d$ | 模型 card | $d$ 越大存储与 ANN 内存越高 |
| 编码延迟 | batch=1 / batch=32 的 P50/P99 ms | 小模型 + CPU 可胜过大模型 + GPU |
| 吞吐 QPS | 固定硬件下 tokens/s | 批处理与 ONNX/TensorRT 优化 |
| 索引体积 | $N \times d \times 4$ bytes(float32) | 量化(int8)可省 4× 内存,略损 Recall |
| API 成本 | $/1M tokens | 云 API vs 自托管 break-even 点 |
对比示例(需在同硬件、同 batch、同序列长度下测):
1 | import time |
公平对比清单:
- 相同硬件、驱动、精度(fp32 / fp16 / bf16)
- 相同
max_seq_length与截断策略 - 相同
normalize_embeddings与距离度量 - 相同 ANN 索引类型与
efSearch - 相同分块大小、overlap、metadata 拼接方式(RAG)
- 报告均值 ± 标准差(多 seed 或 bootstrap)
8. 推荐对比流程

图 2 推荐对比流程:从明确下游任务出发,经公开基准初筛、自有 Gold 集与 hard negative 压测、工程指标过滤,再到端到端 RAG A/B,最终选定模型并文档化评测协议。
Step 1 — 初筛:按任务类型从 MTEB/CMTEB 取对应列(如 Retrieval、Classification),剔除维度 / 延迟明显不满足的模型。
Step 2 — 域内检索:在 Gold 集上算 Recall@5/10、MRR@10、nDCG@10;画 Recall–延迟 Pareto 前沿。
Step 3 — 统计检验:多模型在同一验证集上的指标差是否显著,可用 bootstrap 或 paired t-test($p<0.05$ 且效应量 $\Delta$ Recall@10 > 2% 再宣称「更好」)。
Step 4 — 链路验收:固定 chunk、top-$k$、prompt,只换 Embedding,测 LLM 答案质量(如 RAGAS context precision、人工评分)。
9. 常见误区
| 误区 | 说明 |
|---|---|
| 只看 MTEB 总分 | 检索任务与分类任务权重不同,总分掩盖短板 |
| 英文榜外推中文 | 多语模型中文子集仍可能与中文专用模型有 gap |
| 忽略分块 | 同一 Embedding,chunk 512 vs 1024 可差 10+ pt Recall |
| 混用 API 与本地版本 | 同名模型不同 revision、量化方式结果不同 |
| 不设 hard negative | 高 Recall 可能来自「容易的正样本」,线上误召回到位 |
| 单指标决策 | Recall@10 高但 MRR 低 → 相关文档排得靠后,RAG 仍差 |
10. 模型对比报告模板
对内或论文附录建议固定表格,便于复现:
| 模型 | 维度 | CMTEB Ret. | 自有 Recall@10 | MRR@10 | P99 ms/doc | 索引 GB/100万条 |
|---|---|---|---|---|---|---|
| model-A | 768 | 0.62 | 0.81 | 0.54 | 12 | 2.9 |
| model-B | 1024 | 0.65 | 0.78 | 0.58 | 28 | 3.9 |
附:评测日期、代码 commit、数据集版本、硬件、分块参数、ANN 配置。
11. 工具链速查
| 工具 | 用途 |
|---|---|
| mteb | MTEB / CMTEB 标准跑分 |
| sentence-transformers | 本地 encode + 简易评测 |
| FlagEmbedding | BGE 系列与 C-MTEB 脚本 |
| ranx | nDCG、MRR、MAP 快速计算 |
| RAGAS | RAG 链路级指标 |
| fAISS / Milvus / Qdrant | 大规模 ANN 与召回评测 |
12. 小结
- Embedding 性能不是单一分数,而是「任务指标 + 领域数据 + 工程约束」的联合优化。
- MTEB / CMTEB / BEIR 适合缩小候选范围;自有 Gold 集 + hard negative 才是上线依据。
- 对比时必须写清协议:归一化、截断、分块、索引、硬件;否则数值不可复现、不可信。
下一步可在本系列补充:分块策略对 Recall 的敏感性实验、多模态 Embedding(图文)评测;蛋白域评测见 Embedding-02。