MTEB 大规模文本嵌入基准测试

MTEB - Large-scale Text Embedding Benchmark Test.

MTEB 是一个用于测量文本嵌入模型在各种嵌入任务上性能的大规模基准测试。

🥇 排行榜提供了对各种任务中最佳文本嵌入模型的整体概览。

📝 论文介绍了 MTEB 中的任务和数据集,并分析了排行榜的结果!

💻 Github 仓库包含了用于对任意选择的模型进行基准测试和提交的代码。

为什么使用文本嵌入?

文本嵌入是对文本进行语义编码的向量表示。由于机器需要数值输入进行计算,文本嵌入是许多下游自然语言处理应用程序的重要组成部分。例如,谷歌使用文本嵌入来提供搜索引擎服务。文本嵌入还可以用于通过聚类查找大量文本中的模式,或作为文本分类模型的输入,例如我们最近的 SetFit 工作。然而,文本嵌入的质量在很大程度上取决于所使用的嵌入模型。MTEB 旨在帮助您找到最适合各种任务的最佳嵌入模型!

MTEB

🐋 大规模:MTEB 包含了 56 个数据集,涵盖 8 个任务,并目前总结了超过 2000 个排行榜结果。

🌎 多语言:MTEB 包含了多达 112 种不同的语言!我们在双语挖掘、分类和 STS 上对几个多语言模型进行了基准测试。

🦚 可扩展:无论是新的任务、数据集、度量标准还是排行榜增加,任何贡献都非常受欢迎。请查看 GitHub 仓库以提交到排行榜或解决开放的问题。我们希望您加入我们,一起寻找最佳的文本嵌入模型的旅程!

MTEB 中任务和数据集的概述。多语言数据集以紫色标记。

模型

对于 MTEB 的初始基准测试,我们关注声称具有最先进结果的模型和 Hub 上的流行模型。这导致了对转换器的高度代表性。🤖

按平均英文 MTEB 分数 (y) vs 速度 (x) vs 嵌入大小 (圆圈大小) 分组模型。

我们将模型分为以下三个属性,以简化找到适合您任务的最佳模型:

🏎 最大速度:Glove 等模型提供较高的速度,但缺乏上下文感知,导致平均 MTEB 分数较低。

⚖️ 速度和性能:稍微慢一些,但显著更强大,all-mpnet-base-v2 或 all-MiniLM-L6-v2 在速度和性能之间提供了良好的平衡。

💪 最大性能:ST5-XXL、GTR-XXL 或 SGPT-5.8B-msmarco 等数十亿参数的模型在 MTEB 上占主导地位。它们往往还会产生更大的嵌入,例如 SGPT-5.8B-msmarco 会产生 4096 维的嵌入,需要更多的存储空间!

模型的性能因任务和数据集而异,因此我们建议在决定使用哪个模型之前,先检查排行榜的各个标签。

基准测试您的模型

使用 MTEB 库,您可以对任何生成嵌入的模型进行基准测试,并将其结果添加到公共排行榜中。让我们快速运行一个示例!

首先,安装库:

pip install mteb

接下来,对模型在数据集上进行基准测试,例如在 Banking77 上的 komninos 词嵌入。

from mteb import MTEB
from sentence_transformers import SentenceTransformer

model_name = "average_word_embeddings_komninos"
model = SentenceTransformer(model_name)

evaluation = MTEB(tasks=["Banking77Classification"])
results = evaluation.run(model, output_folder=f"results/{model_name}")

这将生成一个 results/average_word_embeddings_komninos/Banking77Classification.json 文件!

现在,您可以通过将其添加到 Hub 上任何模型的 README.md 的元数据中,将结果提交到排行榜。

运行我们的自动脚本以生成元数据:

python mteb_meta.py results/average_word_embeddings_komninos

该脚本将生成一个名为mteb_metadata.md的文件,其内容如下:

---
标签:
- mteb
模型索引:
- 名称:average_word_embeddings_komninos
  结果:
  - 任务:
      类型:分类
    数据集:
      类型:mteb/banking77
      名称:MTEB Banking77Classification
      配置:默认
      切分:测试
      修订:0fd18e25b25c072e09e0d92ab615fda904d66300
    指标:
    - 类型:准确率
      值:66.76623376623377
    - 类型:f1
      值:66.59096432882667
---

现在将元数据添加到任何模型的README.md文件的顶部,比如这个SGPT-5.8B-msmarco模型,然后刷新后就会在排行榜上显示!

下一步

去尝试评估任何你喜欢的模型吧!如果你有问题或反馈,请在我们的GitHub仓库或排行榜社区选项卡上提出问题🤗

祝你使用愉快!

致谢

特别感谢以下人员对文章或MTEB代码库的贡献(按字母顺序排序):Steven Liu、Loïc Magne、Nils Reimers和Nouamane Tazi。