mteb

mteb

多任务文本嵌入模型评估基准

MTEB是一个开源的文本嵌入模型评估基准,涵盖多种任务类型和语言。它提供标准化的测试集、灵活的评估配置和公开排行榜。研究人员可以使用MTEB评估自定义模型,添加新任务,并进行模型性能比较,从而推动文本嵌入技术的进步。

MTEB文本嵌入基准测试评估自然语言处理Github开源项目
<h1 align="center">大规模文本嵌入基准测试</h1> <p align="center"> <a href="https://github.com/embeddings-benchmark/mteb/releases"> <img alt="GitHub 发布版本" src="https://yellow-cdn.veclightyear.com/835a84d5/7fc7b9e2-85e9-4e0a-bb04-e10c407bd304.svg"> </a> <a href="https://arxiv.org/abs/2210.07316"> <img alt="GitHub 发布版本" src="https://yellow-cdn.veclightyear.com/835a84d5/e1bc5618-0fe9-4a9d-8a94-bd9fdf5ac7f5.svg"> </a> <a href="https://github.com/embeddings-benchmark/mteb/blob/master/LICENSE"> <img alt="许可证" src="https://yellow-cdn.veclightyear.com/835a84d5/4ad028de-673a-4c34-9ef4-d9610f825686.svg?color=green"> </a> <a href="https://pepy.tech/project/mteb"> <img alt="下载量" src="https://static.pepy.tech/personalized-badge/mteb?period=total&units=international_system&left_color=grey&right_color=orange&left_text=Downloads"> </a> </p> <h4 align="center"> <p> <a href="#installation">安装</a> | <a href="#usage">使用</a> | <a href="https://huggingface.co/spaces/mteb/leaderboard">排行榜</a> | <a href="#documentation">文档</a> | <a href="#citing">引用</a> <p> </h4> <h3 align="center"> <a href="https://huggingface.co/spaces/mteb/leaderboard"><img style="float: middle; padding: 10px 10px 10px 10px;" width="60" height="55" src="https://yellow-cdn.veclightyear.com/835a84d5/680fc015-da20-401d-aa4b-8888a668c3b7.png" /></a> </h3>

安装

pip install mteb

使用

import mteb from sentence_transformers import SentenceTransformer # 定义 sentence-transformers 模型名称 model_name = "average_word_embeddings_komninos" # 或直接从 huggingface 加载: # model_name = "sentence-transformers/all-MiniLM-L6-v2" model = SentenceTransformer(model_name) tasks = mteb.get_tasks(tasks=["Banking77Classification"]) evaluation = mteb.MTEB(tasks=tasks) results = evaluation.run(model, output_folder=f"results/{model_name}")
  • 使用命令行界面
mteb available_tasks mteb run -m sentence-transformers/all-MiniLM-L6-v2 \ -t Banking77Classification \ --verbosity 3 # 如果未指定,默认将结果保存在 results/{model_name} 文件夹中
  • 使用多个 GPU 并行处理可以通过自定义编码函数来实现,该函数将输入分配给多个 GPU,例如这里这里

高级用法

点击下面的每个部分查看详细信息。

<br /> <details> <summary> 数据集选择 </summary>

数据集选择

可以通过提供数据集列表来选择数据集,也可以:

  • 按任务类型选择(例如 "Clustering" 或 "Classification")
tasks = mteb.get_tasks(task_types=["Clustering", "Retrieval"]) # 仅选择聚类和检索任务
  • 按类别选择,例如 "s2s"(句子到句子)或 "p2p"(段落到段落)
tasks = mteb.get_tasks(categories=["s2s", "p2p"]) # 仅选择句子到句子和段落到段落数据集
  • 按语言选择
tasks = mteb.get_tasks(languages=["eng", "deu"]) # 仅选择包含 "eng" 或 "deu"(ISO 639-3 代码)的数据集

您还可以为多语言/跨语言任务指定要加载的语言,如下所示:

import mteb tasks = [ mteb.get_task("AmazonReviewsClassification", languages = ["eng", "fra"]), mteb.get_task("BUCCBitextMining", languages = ["deu"]), # 所有包含 "deu" 的子集 ] # 或者您可以像这样选择特定的 huggingface 子集: from mteb.tasks import AmazonReviewsClassification, BUCCBitextMining evaluation = mteb.MTEB(tasks=[ AmazonReviewsClassification(hf_subsets=["en", "fr"]) # 仅加载 Amazon Reviews 的 "en" 和 "fr" 子集 BUCCBitextMining(hf_subsets=["de-en"]), # 仅加载 BUCC 的 "de-en" 子集 ]) # 有关 HF 子集的示例,请参见数据集查看器中的 "Subset":https://huggingface.co/datasets/mteb/bucc-bitext-mining

还有一些预设可用于某些任务集合,例如选择构成 "Overall MTEB English leaderboard" 的 56 个英语数据集:

from mteb import MTEB_MAIN_EN evaluation = mteb.MTEB(tasks=MTEB_MAIN_EN, task_langs=["en"])
</details> <details> <summary> 传递 `encode` 参数 </summary>

传递 encode 参数

要向模型的 encode 函数传递参数,您可以使用编码关键字参数(encode_kwargs):

evaluation.run(model, encode_kwargs={"batch_size": 32}
</details> <details> <summary> 选择评估分割 </summary>

选择评估分割

您可以通过以下方式仅在所有任务的 test 分割上进行评估:

evaluation.run(model, eval_splits=["test"])

请注意,公开排行榜使用所有数据集的测试分割,但 MSMARCO 除外,它使用 "dev" 分割。

</details> <details> <summary> 使用自定义模型 </summary>

使用自定义模型

模型应实现以下接口,实现一个 encode 函数,该函数接受句子列表作为输入,并返回嵌入列表(嵌入可以是 np.arraytorch.tensor 等)。为获得灵感,您可以查看 mteb/mtebscripts 仓库,该仓库用于通过 SLURM 脚本运行论文中的各种模型。

class MyModel(): def encode( self, sentences: list[str], **kwargs: Any ) -> torch.Tensor | np.ndarray: """使用编码器对给定句子进行编码。 参数: sentences: 要编码的句子。 **kwargs: 传递给编码器的其他参数。 返回: 编码后的句子。 """ pass model = MyModel() tasks = mteb.get_task("Banking77Classification") evaluation = MTEB(tasks=tasks) evaluation.run(model)

如果您想在评估检索或重排任务时为查询和语料库使用不同的编码函数,可以添加单独的 encode_queriesencode_corpus 方法。如果这些方法存在,它们将自动用于这些任务。您可以参考 mteb/evaluation/evaluators/RetrievalEvaluator.py 中的 DRESModel 作为这些函数的示例。

class MyModel(): def encode_queries(self, queries: list[str], **kwargs) -> list[np.ndarray] | list[torch.Tensor]: """ 返回给定句子的嵌入列表。 参数: queries: 要编码的句子列表 返回: 给定句子的嵌入列表 """ pass def encode_corpus(self, corpus: list[str] | list[dict[str, str]], **kwargs) -> list[np.ndarray] | list[torch.Tensor]: """ 返回给定句子的嵌入列表。 参数: corpus: 要编码的句子列表 或包含 "title" 和 "text" 键的字典列表 返回: 给定句子的嵌入列表 """ pass
</details> <details> <summary> 在自定义数据集上评估 </summary>

在自定义数据集上评估

要在自定义任务上进行评估,你可以在自定义任务上运行以下代码。关于如何在MTEB中创建新任务,请参见如何添加新任务

from mteb import MTEB from mteb.abstasks.AbsTaskReranking import AbsTaskReranking from sentence_transformers import SentenceTransformer class MyCustomTask(AbsTaskReranking): ... model = SentenceTransformer("average_word_embeddings_komninos") evaluation = MTEB(tasks=[MyCustomTask()]) evaluation.run(model)
</details> <br />

文档

文档
📋 任务可用任务概览
📈 排行榜基准测试的交互式排行榜
🤖 添加模型有关如何向排行榜提交模型的信息
👩‍🔬 可复现的工作流程有关如何使用MTEB复现和创建可复现工作流程的信息
👩‍💻 添加数据集如何向MTEB添加新任务/数据集
👩‍💻 添加排行榜标签页如何向MTEB添加新的排行榜标签页
🤝 贡献如何为MTEB做出贡献并进行开发设置
🌐 MMTEB一项开源努力,旨在扩展MTEB以涵盖广泛的语言

引用

MTEB在"MTEB: Massive Text Embedding Benchmark"中被介绍,欢迎引用:

@article{muennighoff2022mteb, doi = {10.48550/ARXIV.2210.07316}, url = {https://arxiv.org/abs/2210.07316}, author = {Muennighoff, Niklas and Tazi, Nouamane and Magne, Lo{\"\i}c and Reimers, Nils}, title = {MTEB: Massive Text Embedding Benchmark}, publisher = {arXiv}, journal={arXiv preprint arXiv:2210.07316}, year = {2022} }

你可能还想阅读并引用那些扩展MTEB和集成新数据集的出色工作:

对于使用MTEB进行基准测试的工作,你可以在排行榜上找到它们。

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多