base_model:
- nomic-ai/nomic-embed-text-v2-moe-unsupervised
library_name: sentence-transformers
pipeline_tag: sentence-similarity
tags:
- sentence-transformers
- sentence-similarity
- feature-extraction
license: apache-2.0
language:
- en
- es
- fr
- de
- it
- pt
- pl
- nl
- tr
- ja
- vi
- ru
- id
- ar
- cs
- ro
- sv
- el
- uk
- zh
- hu
- da
- 'no'
- hi
- fi
- bg
- ko
- sk
- th
- he
- ca
- lt
- fa
- ms
- sl
- lv
- mr
- bn
- sq
- cy
- be
- ml
- kn
- mk
- ur
- fy
- te
- eu
- sw
- so
- sd
- uz
- co
- hr
- gu
- ce
- eo
- jv
- la
- zu
- mn
- si
- ga
- ky
- tg
- my
- km
- mg
- pa
- sn
- ha
- ht
- su
- gd
- ny
- ps
- ku
- am
- ig
- lo
- mi
- nn
- sm
- yi
- st
- tl
- xh
- yo
- af
- ta
- tn
- ug
- az
- ba
- bs
- dv
- et
- gl
- gn
- gv
- hy
nomic-embed-text-v2-moe:多语言专家混合文本嵌入模型
博客 | 技术报告 | AWS SageMaker | Atlas嵌入与非结构化数据分析平台
本模型在论文《训练稀疏专家混合文本嵌入模型》中首次提出。
模型概览
nomic-embed-text-v2-moe
是一款领先的多语言MoE文本嵌入模型,在多语言检索任务中表现卓越:
- 高性能:在约3亿参数规模的模型中实现多语言任务最优表现,可与两倍大小的模型竞争
- 多语言支持:覆盖约100种语言,训练数据超过16亿对
- 灵活嵌入维度:采用套娃嵌入技术,存储成本降低3倍且性能损失极小
- 完全开源:公开模型权重、代码及训练数据(见代码库)
模型 |
参数量(M) |
嵌入维度 |
BEIR |
MIRACL |
预训练数据 |
微调数据 |
代码 |
Nomic Embed v2 |
305 |
768 |
52.86 |
65.80 |
✅ |
✅ |
✅ |
mE5 Base |
278 |
768 |
48.88 |
62.30 |
❌ |
❌ |
❌ |
mGTE Base |
305 |
768 |
51.10 |
63.40 |
❌ |
❌ |
❌ |
Arctic Embed v2 Base |
305 |
768 |
55.40 |
59.90 |
❌ |
❌ |
❌ |
|
|
|
|
|
|
|
|
BGE M3 |
568 |
1024 |
48.80 |
69.20 |
❌ |
✅ |
❌ |
Arctic Embed v2 Large |
568 |
1024 |
55.65 |
66.00 |
❌ |
❌ |
❌ |
mE5 Large |
560 |
1024 |
51.40 |
66.50 |
❌ |
❌ |
❌ |
模型架构
- 总参数量:4.75亿
- 推理时激活参数:3.05亿
- 架构类型:专家混合(MoE)
- MoE配置:8专家top-2路由机制
- 嵌入维度:通过套娃表示学习支持768至256的灵活维度
- 最大序列长度:512个token
- 语言支持:覆盖数十种语言(见性能章节)
论文摘要
基于Transformer的文本嵌入模型通过增加参数量提升了在MIRACL和BEIR等基准测试中的表现。然而,这种扩展方法带来了显著的部署挑战,包括推理延迟增加和内存占用上升。这些挑战在检索增强生成(RAG)应用中尤为严重——大型模型增加的内存需求会限制数据集处理容量,而更高的延迟直接影响查询性能。虽然因果语言模型已通过专家混合(MoE)架构解决了类似效率问题,但该方法尚未成功应用于通用文本嵌入场景。本文提出的Nomic Embed v2是首个通用MoE文本嵌入模型,其在单语和多语基准测试中均超越同参数级别模型,同时保持与两倍大小模型竞争的性能。我们在https://github.com/nomic-ai/contrastors开源了所有代码、模型和评估数据,确保训练流程的完全可复现性。
使用指南
安装
可通过SentenceTransformers和Transformers使用本模型。
为获得GPU最佳性能,请安装:
pip install torch transformers einops git+https://github.com/nomic-ai/megablocks.git
[!重要]
重要提示!
文本提示必须包含任务指令前缀,明确指示模型执行的任务类型。
查询/问题前请使用search_query:
前缀,文档前请使用search_document:
前缀。
Transformers
使用Transformers时,务必添加任务指令前缀。
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("nomic-ai/nomic-embed-text-v2-moe")
model = AutoModel.from_pretrained("nomic-ai/nomic-embed-text-v2-moe", trust_remote_code=True)
sentences = ['search_document: 你好!', 'search_document: ¡Hola!']
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
model.eval()
with torch.no_grad():
model_output = model(**encoded_input)
embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
embeddings = F.normalize(embeddings, p=2, dim=1)
print(embeddings.shape)
similarity = F.cosine_similarity(embeddings[0], embeddings[1], dim=0)
print(similarity)
截断处理可在归一化前执行:
+ embeddings = embeddings[:, :matryoshka_dim]
embeddings = F.normalize(embeddings, p=2, dim=1)
SentenceTransformers
使用SentenceTransformers时,可指定prompt_name
为"query"
或"passage"
,系统将自动添加任务指令。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("nomic-ai/nomic-embed-text-v2-moe", trust_remote_code=True)
sentences = ["你好!", "¡Hola!"]
embeddings = model.encode(sentences, prompt_name="passage")
print(embeddings.shape)
similarity = model.similarity(embeddings[0], embeddings[1])
print(similarity)
对于截断/套娃嵌入,可指定truncate_dim
参数:
model = SentenceTransformer("nomic-ai/nomic-embed-text-v2-moe", trust_remote_code=True, truncate_dim=256)
...
性能表现
nomic-embed-text-v2-moe在BEIR和MIRACL基准测试中与其他开源权重嵌入模型的对比:

nomic-embed-text-v2-moe在768维和截断至256维时的BEIR表现:

最佳实践
- 为文本添加适当前缀:
- 查询:"search_query: "
- 文档:"search_document: "
- 最大输入长度为512个token
- 若存储/计算资源有限,建议使用256维嵌入
局限性
- 不同语言性能可能存在差异
- 因MoE架构特性,资源需求可能高于传统稠密模型
- 加载模型时必须使用
trust_remote_code=True
以启用定制架构实现
训练详情

- 基于16亿对多语言高质量数据训练
- 采用一致性过滤确保训练数据质量
- 融合套娃表示学习实现维度灵活性
- 训练包含弱监督对比预训练和有监督微调
更多细节请参阅博客文章和技术报告。
加入Nomic社区
引用
若模型、数据集或训练代码对您有帮助,请引用我们的工作:
@misc{nussbaum2025trainingsparsemixtureexperts,
title={训练稀疏专家混合文本嵌入模型},
author={Zach Nussbaum与Brandon Duderstadt},
year={2025},
eprint={2502.07972},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2502.07972},
}