模型概述
模型特點
模型能力
使用案例
🚀 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},
}







