模型简介
模型特点
模型能力
使用案例
🚀 Llama.cpp量化版nomic-embed-text-v2-moe:多语言混合专家文本嵌入模型
nomic-embed-text-v2-moe
是一款最先进的多语言混合专家(MoE)文本嵌入模型,在多语言检索方面表现出色,支持约100种语言,且训练数据丰富。
博客 | 技术报告 | AWS SageMaker | Atlas嵌入和非结构化数据分析平台
该模型在论文 Training Sparse Mixture Of Experts Text Embedding Models 中被提出。
使用 llama.cpp 的提交版本 e3a9421b7 进行量化。
🚀 快速开始
本模型可与 llama.cpp服务器 以及其他支持llama.cpp嵌入模型的软件一起使用。
使用 nomic-embed-text
嵌入文本时,需要在每个字符串开头添加任务指令前缀。
启动llama.cpp服务器
llama-server -m nomic-embed-text-v2-moe.bf16.gguf --embeddings
运行示例代码
import requests
def dot(va, vb):
return sum(a * b for a, b in zip(va, vb))
def embed(texts):
resp = requests.post('http://localhost:8080/v1/embeddings', json={'input': texts}).json()
return [d['embedding'] for d in resp['data']]
docs = ['嵌入很酷', '骆驼很酷'] # 'embeddings are cool', 'llamas are cool'
docs_embed = embed(['search_document: ' + d for d in docs])
query = '跟我讲讲嵌入' # 'tell me about embeddings'
query_embed = embed(['search_query: ' + query])[0]
print(f'query: {query!r}')
for d, e in zip(docs, docs_embed):
print(f'similarity {dot(query_embed, e):.2f}: {d!r}')
预期输出
query: '跟我讲讲嵌入'
similarity 0.48: '嵌入很酷'
similarity 0.19: '骆驼很酷'
✨ 主要特性
- 高性能:与约3亿参数的模型相比,在多语言性能方面达到了最先进水平,可与参数规模两倍于它的模型相媲美。
- 多语言支持:支持约100种语言,并在超过16亿对数据上进行训练。
- 灵活的嵌入维度:采用 Matryoshka Embeddings 进行训练,在存储成本降低3倍的情况下,性能仅有微小下降。
- 完全开源:模型权重、代码 和训练数据(详见代码仓库)均已开源。
📦 模型文件下载
文件名 | 量化类型 | 文件大小 | 描述 |
---|---|---|---|
nomic-embed-text-v2-moe.f32.gguf | f32 | 1820MiB | 完整的FP32权重。 |
nomic-embed-text-v2-moe.f16.gguf | f16 | 913MiB | 完整的FP16权重。 |
nomic-embed-text-v2-moe.bf16.gguf | bf16 | 913MiB | 完整的BF16权重。 |
nomic-embed-text-v2-moe.Q8_0.gguf | Q8_0 | 488MiB | 极高质量,通常无需使用,但提供了最大可用量化。 |
nomic-embed-text-v2-moe.Q6_K.gguf | Q6_K | 379MiB | 非常高质量,接近完美,推荐使用。 |
nomic-embed-text-v2-moe.Q5_K_M.gguf | Q5_K_M | 354MiB | 高质量,推荐使用。 |
nomic-embed-text-v2-moe.Q5_K_S.gguf | Q5_K_S | 343MiB | 高质量,推荐使用。 |
nomic-embed-text-v2-moe.Q4_1.gguf | Q4_1 | 326MiB | 旧格式,性能与Q4_K_S相似,但在苹果硅芯片上的每瓦令牌数有所提高。 |
nomic-embed-text-v2-moe.Q4_K_M.gguf | Q4_K_M | 328MiB | 质量良好,是大多数用例的默认大小,推荐使用。 |
nomic-embed-text-v2-moe.Q4_K_S.gguf | Q4_K_S | 310MiB | 质量稍低,但节省更多空间,推荐使用。 |
nomic-embed-text-v2-moe.Q4_0.gguf | Q4_0 | 309MiB | 旧格式,支持ARM和AVX CPU推理的在线重新打包。 |
nomic-embed-text-v2-moe.Q3_K_L.gguf | Q3_K_L | 307MiB | 质量较低但可用,适合内存有限的情况。 |
nomic-embed-text-v2-moe.Q3_K_M.gguf | Q3_K_M | 294MiB | 低质量。 |
nomic-embed-text-v2-moe.Q3_K_S.gguf | Q3_K_S | 275MiB | 低质量,不推荐使用。 |
nomic-embed-text-v2-moe.Q2_K.gguf | Q2_K | 261MiB | 非常低质量,但出人意料地可用。 |
📚 详细文档
模型概述
模型 | 参数数量(百万) | 嵌入维度 | 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路由
- 嵌入维度:通过Matryoshka表示学习支持从768到256的灵活维度
- 最大序列长度:512个令牌
- 支持语言:支持数十种语言(详见性能部分)
论文摘要
基于Transformer的文本嵌入模型通过增加参数数量提高了在MIRACL和BEIR等基准测试中的性能。然而,这种扩展方法带来了显著的部署挑战,包括增加推理延迟和内存使用。这些挑战在检索增强生成(RAG)应用中尤为严重,因为大型模型增加的内存需求限制了数据集的摄入能力,其较高的延迟直接影响查询时的性能。虽然因果语言模型已经使用混合专家(MoE)架构解决了类似的效率挑战,但这种方法尚未成功应用于通用文本嵌入场景。在本文中,我们介绍了Nomic Embed v2,这是第一个通用的MoE文本嵌入模型。我们的模型在单语言和多语言基准测试中均优于同参数类别的模型,同时与参数规模两倍于它的模型保持竞争力。我们在https://github.com/nomic-ai/contrastors 上开源了所有代码、模型和评估数据,以确保我们的训练管道完全可复现。
性能表现
- nomic-embed-text-v2-moe在BEIR和MIRACL上与其他开源权重嵌入模型的性能对比:
- nomic-embed-text-v2-moe在768维度和截断到256维度时在BEIR上的性能表现:
最佳实践
- 添加适当的前缀:
- 查询:"search_query: "
- 文档:"search_document: "
- 最大输入长度:512个令牌
- 考虑维度选择:如果存储或计算资源有限,可考虑使用256维嵌入以提高效率。
局限性
- 语言性能差异:在不同语言上的性能可能会有所不同。
- 资源需求较高:由于采用MoE架构,资源需求可能比传统的密集模型更高。
- 加载模型要求:加载模型时必须使用
trust_remote_code=True
以使用自定义架构实现。
训练细节
- 训练数据:在跨多种语言的16亿高质量数据对上进行训练。
- 数据过滤:使用一致性过滤确保训练数据的高质量。
- 维度灵活性:采用Matryoshka表示学习实现维度灵活性。
- 训练方式:包括弱监督对比预训练和有监督微调。
🔧 技术细节
模型量化
使用 llama.cpp 的提交版本 e3a9421b7 对原始模型进行量化,以减少模型大小和推理成本。
嵌入维度
通过Matryoshka表示学习,模型支持从768到256的灵活嵌入维度,在存储成本降低3倍的情况下,性能仅有微小下降。
训练数据
模型在超过16亿对跨多种语言的数据上进行训练,并使用一致性过滤确保数据质量。训练过程包括弱监督对比预训练和有监督微调。
📄 许可证
本模型采用Apache 2.0许可证。
加入Nomic社区
- Nomic官网:https://nomic.ai
- Discord社区:https://discord.gg/myY5YDR8z8
- Twitter:https://twitter.com/nomic_ai
引用
如果您发现该模型、数据集或训练代码有用,请引用我们的工作:
@misc{nussbaum2025trainingsparsemixtureexperts,
title={Training Sparse Mixture Of Experts Text Embedding Models},
author={Zach Nussbaum and Brandon Duderstadt},
year={2025},
eprint={2502.07972},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2502.07972},
}







