一個IT宅男

M3E文本转向量模型的部署

项目地址:https://huggingface.co/moka-ai/m3e-large

M3E 是 Moka Massive Mixed Embedding 的缩写

  • Moka,此模型由 MokaAI 训练,开源和评测,训练脚本使用 uniem ,评测 BenchMark 使用 MTEB-zh
  • Massive,此模型通过千万级 (2200w+) 的中文句对数据集进行训练
  • Mixed,此模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索
  • Embedding,此模型是文本嵌入模型,可以将自然语言转换成稠密的向量+

使用场景主要是中文 + 英文

把https://huggingface.co/moka-ai/m3e-large/tree/main 下载下来放到:

F:\m3e\m3e-large (目前没啥用,除非拿去微调)

Docker部署(存在容器里):

放docker里方便oneapi调用,也避免了各种环境的问题

docker run -d -p 6200:6008 --name=m3e-large-api stawky/m3e-large-api:latest

在oneapi里填的是:http://172.20.206.201:6200

秘钥填:sk-aaabbbcccdddeeefffggghhhiiijjjkkk

Python里调用(存在.cache里)

pip install -U sentence-transformers

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('moka-ai/m3e-large')

#Our sentences we like to encode
sentences = [
    '* Moka 此文本嵌入模型由 MokaAI 训练并开源,训练脚本使用 uniem',
    '* Massive 此文本嵌入模型通过**千万级**的中文句对数据集进行训练',
    '* Mixed 此文本嵌入模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索,ALL in one'
]

#Sentences are encoded by calling model.encode()
embeddings = model.encode(sentences)

#Print the embeddings
for sentence, embedding in zip(sentences, embeddings):
    print("Sentence:", sentence)
    print("Embedding:", embedding)
    print("")


存在哪?

用Python的**transformerssentence-transformers库下载模型时,模型文件通常会保存在您的本地硬盘上的一个特定文件夹中。默认情况下,这个文件夹是在您的用户目录下的.cache文件夹内的torch/sentence_transformers/moka-ai_m3e-large**子文件夹

第一次会从报脸下载到C:\Users\Administrator\.cache\torch\sentence_transformers\moka-ai_m3e-large

输出的向量:

Sentence: * clinch是一个非常牛的人
Embedding: [ 0.44525626  0.50271225  0.59252214 ... -0.1143298  -0.20370926
 -0.33264214]

Sentence: * clinch是一个很厉害的人
Embedding: [ 0.34531546  0.490166    0.2894031  ... -0.16533223 -0.32237428
 -0.12912813]

语义不一样,向量会不一样,可以比较

微调例子https://github.com/wangyuxinwhy/uniem/blob/main/examples/finetune.ipynb

赞(2)
未經允許不得轉載:Lincai Chen's Blog » M3E文本转向量模型的部署

評論 1