uniem 項目的目標是創建中文最好的通用文本嵌入模型。
本項目主要包括模型的訓練,微調和評測代碼,模型與數據集會在HuggingFace 社區上進行開源。
FineTuner除M3E 外,還支持sentence_transformers , text2vec等模型的微調,同時還支持SGPT 的方式對GPT 系列模型進行訓練,以及Prefix Tuning。 FineTuner 初始化的API 有小小的變化,無法兼容0.2.0FineTuner以原生支持模型微調,幾行代碼,即刻適配!openai text-embedding-ada-002 ,詳請請參考M3E models README。 M3E 系列模型完全兼容sentence-transformers ,你可以通過替換模型名稱的方式在所有支持sentence-transformers 的項目中無縫使用M3E Models,比如chroma, guidance, semantic-kernel 。
安裝
pip install sentence-transformers使用
from sentence_transformers import SentenceTransformer
model = SentenceTransformer ( "moka-ai/m3e-base" )
embeddings = model . encode ([ 'Hello World!' , '你好,世界!' ])uniem提供了非常易用的finetune 接口,幾行代碼,即刻適配!
from datasets import load_dataset
from uniem . finetuner import FineTuner
dataset = load_dataset ( 'shibing624/nli_zh' , 'STS-B' )
# 指定训练的模型为 m3e-small
finetuner = FineTuner . from_pretrained ( 'moka-ai/m3e-small' , dataset = dataset )
finetuner . run ( epochs = 3 )微調模型詳見uniem 微調教程or
如果您想要在本地運行,您需要運行如下命令,準備環境
conda create -n uniem python=3.10
pip install uniem中文Embedding 模型缺少統一的評測標準,所以我們參考了MTEB ,構建了中文評測標準MTEB-zh,目前已經對6 種模型在各種數據集上進行了橫評,詳細的評測方式和代碼請參考MTEB-zh 。
| text2vec | m3e-small | m3e-base | m3e-large-0619 | openai | DMetaSoul | uer | erlangshen | |
|---|---|---|---|---|---|---|---|---|
| TNews | 0.43 | 0.4443 | 0.4827 | 0.4866 | 0.4594 | 0.3084 | 0.3539 | 0.4361 |
| JDIphone | 0.8214 | 0.8293 | 0.8533 | 0.8692 | 0.746 | 0.7972 | 0.8283 | 0.8356 |
| GubaEastmony | 0.7472 | 0.712 | 0.7621 | 0.7663 | 0.7574 | 0.735 | 0.7534 | 0.7787 |
| TYQSentiment | 0.6099 | 0.6596 | 0.7188 | 0.7247 | 0.68 | 0.6437 | 0.6662 | 0.6444 |
| StockComSentiment | 0.4307 | 0.4291 | 0.4363 | 0.4475 | 0.4819 | 0.4309 | 0.4555 | 0.4482 |
| IFlyTek | 0.414 | 0.4263 | 0.4409 | 0.4445 | 0.4486 | 0.3969 | 0.3762 | 0.4241 |
| Average | 0.5755 | 0.5834 | 0.6157 | 0.6231 | 0.5956 | 0.552016667 | 0.57225 | 0.594516667 |
| text2vec | openai-ada-002 | m3e-small | m3e-base | m3e-large-0619 | DMetaSoul | uer | erlangshen | |
|---|---|---|---|---|---|---|---|---|
| map@1 | 0.4684 | 0.6133 | 0.5574 | 0.626 | 0.6256 | 0.25203 | 0.08647 | 0.25394 |
| map@10 | 0.5877 | 0.7423 | 0.6878 | 0.7656 | 0.7627 | 0.33312 | 0.13008 | 0.34714 |
| mrr@1 | 0.5345 | 0.6931 | 0.6324 | 0.7047 | 0.7063 | 0.29258 | 0.10067 | 0.29447 |
| mrr@10 | 0.6217 | 0.7668 | 0.712 | 0.7841 | 0.7827 | 0.36287 | 0.14516 | 0.3751 |
| ndcg@1 | 0.5207 | 0.6764 | 0.6159 | 0.6881 | 0.6884 | 0.28358 | 0.09748 | 0.28578 |
| ndcg@10 | 0.6346 | 0.7786 | 0.7262 | 0.8004 | 0.7974 | 0.37468 | 0.15783 | 0.39329 |
如果您想要在MTEB-zh 中添加評測數據集或者模型,歡迎提issue 或者PR,我會在第一時間進行支持,期待您的貢獻!
uniem is licensed under the Apache-2.0 License. See the LICENSE file for more details.
Please cite this model using the following format:
@software {Moka Massive Mixed Embedding, author = {Wang Yuxin,Sun Qingxuan,He sicheng}, title = {M3E: Moka Massive Mixed Embedding Model}, year = {2023} }