M3E模型onnx格式导出和使用手把手教程

 一、模型介绍

M3E Models :是Moka(北京希瑞亚斯科技)开源的很强大的文本嵌入模型。

模型地址:

https://huggingface.co/moka-ai/m3e-base

M3E Models 是使用千万级 (2200w+) 的中文句对数据集进行训练的 Embedding 模型,在文本分类和文本检索的任务上都超越了 openai-ada-002 模型(ChatGPT 官方的模型)。

M3E的数据集,模型,训练脚本,评测框架都开源。

M3E 是 Moka Massive Mixed Embedding 的缩写

Moka,此模型由 MokaAI 训练,开源和评测,训练脚本使用 uniem ,评测 BenchMark 使用 MTEB-zh

Massive,此模型通过千万级 (2200w+) 的中文句对数据集进行训练

Mixed,此模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索

Embedding,此模型是文本嵌入模型,可以将自然语言转换成稠密的向量

二、导出onnx格式的好处
 

根据上面链接下载m3e-base可以看到,这个模型占用了1个多G的空间,而且官方介绍的模型使用方式需要安装sentence_transformes库,这个库也比较笨重,因此使用官方介绍的使用m3e模型的方式不适用于轻量级应用。

from sentence_transformers import SentenceTransformer

def m3e_model(text)
您可以按照以下步骤使用M3E-Base模型生成pkl和paiss格式的向量化数据库: 1. 准备数据:将您的原始数据整理为一个列表,每个元素代表一个文本样本。 2. 安装所需的库:确保您已经安装了以下库:transformers、torch和numpy。您可以使用pip命令进行安装。 3. 加载模型使用transformers库加载M3E-Base模型。您可以使用以下代码片段: ```python from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("cszn/M3E-Base") model = AutoModel.from_pretrained("cszn/M3E-Base") ``` 4. 文本向量化:使用tokenizer对您的文本进行标记化和编码,然后使用model获取每个文本的嵌入向量。以下是一个示例代码: ```python import torch import numpy as np def text_to_vector(text): inputs = tokenizer(text, padding=True, truncation=True, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) embeddings = outputs.last_hidden_state[:, 0, :].numpy() return embeddings data = ["文本样本1", "文本样本2", ...] # 替换为您自己的数据 vectors = [text_to_vector(text) for text in data] vectors = np.vstack(vectors) ``` 5. 保存向量化数据库:使用pickle库将向量化数据保存为pkl文件,或使用faiss库将其保存为faiss格式文件。 保存为pkl文件的示例代码: ```python import pickle output_path = "vectors.pkl" # 替换为您希望保存的文件路径 with open(output_path, "wb") as f: pickle.dump(vectors, f) ``` 保存为faiss格式文件的示例代码: ```python import faiss output_path = "vectors.faiss" # 替换为您希望保存的文件路径 faiss.write_index(faiss.IndexFlatL2(vectors.shape[1]), output_path) ``` 这样,您就可以使用M3E-Base模型生成以pkl和faiss格式存储的向量化数据库了。请根据您的需求选择适当的格式进行保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值