统一嵌入模型(uniem):创建中文最佳通用文本嵌入模型

🔗 GitHub链接:wangyuxinwhy/uniem

引言

在自然语言处理(NLP)领域,文本嵌入是一项重要任务。它将文本转换成向量表示,使得计算机可以更好地理解和处理文本数据。最近,GitHub上出现了一个令人瞩目的项目,名为统一嵌入模型(uniem)。该项目的目标是创建中文最佳的通用文本嵌入模型。在本博客文章中,我们将深入探讨uniem项目,了解其功能和优势。

uniem项目概述

uniem项目的主要目标是开发中文最佳的通用文本嵌入模型。该项目包括模型的训练、微调和评测代码。所有的模型和数据集都在HuggingFace社区上进行了开源。uniem项目的重要更新如下:

🌟 2023.07.11,发布uniem 0.3.0版本。FineTuner除了支持M3E模型外,还支持sentence_transformers和text2vec等模型的微调。同时,还支持使用SGPT的方式对GPT系列模型进行训练,以及使用Prefix Tuning。FineTuner的API有一些小的变化,不兼容0.2.0版本。
🌟 2023.06.17,发布uniem 0.2.1版本。该版本实现了FineTuner对模型微调的原生支持,只需几行代码即可适配。
📊 2023.06.17,发布正式版的MTEB-zh,该版本支持6种Embedding模型和4种任务,共9个数据集的自动化评测。
🎉 2023.06.08,发布M3E models,该模型在中文文本分类和文本检索方面优于openai text-embedding-ada-002。

使用M3E模型

M3E模型是uniem项目中的重要组成部分。M3E模型完全兼容sentence-transformers,因此您可以通过替换模型名称的方式在所有支持sentence-transformers的项目中无缝使用M3E模型。以下是使用M3E模型的安装和使用示例:

安装

pip install sentence-transformers uniem

使用

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("moka-ai/m3e-base")
embeddings = model.encode(['Hello World!', '你好,世界!'])

微调模型

uniem项目提供了非常易用的微调接口,只需几行代码即可完成微调。以下是微调模型的示例代码:

from datasets import load_dataset
from uniem.finetuner import FineTuner

dataset = load_dataset('shibing624/nli_zh', 'STS-B')
finetuner = FineTuner.from_pretrained('moka-ai/m3e-small', dataset=dataset)
finetuner.run(epochs=3)

如果您希望在本地运行微调代码,请按照以下步骤准备环境:

conda create -n uniem python=3.10
pip install uniem

MTEB-zh:中文嵌入模型评测

由于缺乏统一的评测标准,中文嵌入模型的性能评估一直是一个挑战。为了解决这个问题,uniem项目引入了MTEB-zh评测标准。MTEB-zh在多个数据集上对6种不同模型进行了评测,包括文本分类和文本检索任务。以下是MTEB-zh的一些亮点:

文本分类

MTEB-zh选择了多个经典的中文文本分类数据集,如THUCNews、LCQMC等。通过在这些数据集上对不同模型进行评测,MTEB-zh可以提供准确性和性能方面的评估。

文本检索

对于文本检索任务,MTEB-zh选择了一些开源的中文搜索引擎数据集,如TREC-CD-1、TREC-CD-2等。通过对这些数据集进行评测,MTEB-zh可以衡量模型在返回相关文档方面的性能。

MTEB-zh还提供了详细的评测报告,包括评估指标、模型对比和结果分析。这些报告可以帮助研究人员和开发者选择合适的模型,并了解其在不同任务上的性能。

结论

uniem项目是一个令人兴奋的开源项目,旨在创建中文最佳的通用文本嵌入模型。通过使用M3E模型和微调接口,开发者可以轻松地将uniem集成到自己的项目中。同时,MTEB-zh评测标准提供了一个公正、准确的评估平台,帮助研究人员和开发者选择最适合其应用场景的模型。

在未来,我们可以期待uniem项目的进一步发展,包括更多模型的加入和更广泛的数据集评测。这将为中文NLP领域的研究和应用带来更多的机遇和挑战。

无论是对NLP领域感兴趣的研究人员,还是想要在中文文本处理方面应用嵌入模型的开发者,uniem项目都是一个值得关注的资源。通过参与该项目,我们可以共同推动中文NLP的发展,为更广泛的应用场景提供更好的解决方案。

🎉 让我们一起加入uniem项目,为中文文本嵌入模型的发展贡献自己的力量!🚀

发表评论