M3E 是Moka Massive Mixed Embedding 的縮寫
- Moka,此模型由MokaAI 訓練,開源和評測,訓練腳本使用 uniem ,評測BenchMark 使用 MTEB-zh
- Massive,此模型通過千萬級 (2200w+) 的中文句對數據集進行訓練
- Mixed,此模型支持中英雙語的同質文本相似度計算,異質文本檢索等功能,未來還會支持代碼檢索
- Embedding,此模型是文本嵌入模型,可以將自然語言轉換成稠密的向量
M3E models 使用的數據集中包括大量非商用的數據集,所以M3E models 也是非商用的,僅供研究使用。官方在M3E 數據集上標識了商用和非商用的數據集,用戶可以根據自己的需求自行訓練。
模型對比
參數數量 | 維度 | 中文 | 英文 | s2s | s2p | s2c | 開源 | 兼容性 | s2s Acc | s2p ndcg@10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
m3e-small | 24M | 512 | 是 | 否 | 是 | 否 | 否 | 是 | 優 | 0.5834 | 0.7262 |
m3e-base | 110M | 768 | 是 | 是 | 是 | 是 | 否 | 是 | 優 | 0.6157 | 0.8004 |
text2vec | 110M | 768 | 是 | 否 | 是 | 否 | 否 | 是 | 優 | 0.5755 | 0.6346 |
openai-ada-002 | 未知 | 1536 | 是 | 是 | 是 | 是 | 是 | 否 | 優 | 0.5956 | 0.7786 |
說明:
- s2s, 即sentence to sentence ,代表了同質文本之間的嵌入能力,適用任務:文本相似度,重複問題檢測,文本分類等
- s2p, 即sentence to passage ,代表了異質文本之間的嵌入能力,適用任務:文本檢索,GPT 記憶模塊等
- s2c, 即sentence to code ,代表了自然語言和程序語言之間的嵌入能力,適用任務:代碼檢索
- 兼容性,代表了模型在開源社區中各種項目被支持的程度,由於m3e 和text2vec 都可以直接通過sentence-transformers 直接使用,所以和openai 在社區的支持度上相當
- ACC & ndcg@10,詳情見下方的評測
Tips:
- 使用場景主要是中文,少量英文的情況,建議使用m3e 系列的模型
- 多語言使用場景,並且不介意數據隱私的話,我建議使用openai-ada-002
- 代碼檢索場景,推薦使用ada-002
訓練方案
M3E 使用in-batch 負採樣的對比學習的方式在句對數據集進行訓練,為了保證in-batch 負採樣的效果,我們使用A100 80G 來最大化batch-size,並在共計2200W+ 的句對數據集上訓練了1 epoch。訓練腳本使用 uniem,您可以在這裡查看具體細節。
特性
- 中文訓練集,M3E 在大規模句對數據集上的訓練,包含中文百科,金融,醫療,法律,新聞,學術等多個領域共計2200W 句對樣本,數據集詳見 M3E 數據集
- 英文訓練集,M3E 使用MEDI 145W 英文三元組數據集進行訓練,數據集詳見 MEDI 數據集,此數據集由 instructor team 提供
- 指令數據集,M3E 使用了300W + 的指令微調數據集,這使得M3E 對文本編碼的時候可以遵從指令,這部分的工作主要被啟發於 instructor-embedding
- 基礎模型,M3E 使用hfl 實驗室的 Roberta 系列模型進行訓練,目前提供small 和base 兩個版本,大家則需選用
- ALL IN ONE,M3E 旨在提供一個ALL IN ONE 的文本嵌入模型,不僅支持同質句子相似度判斷,還支持異質文本檢索,你只需要一個模型就可以覆蓋全部的應用場景,未來還會支持代碼檢索
評測
#M3E首頁文檔和下載 #開源中文Embedding #模型新SOTA #程式开发