AI个人学习
和实操指南
讯飞绘镜

MTEB:评估文本嵌入模型性能的基准测试

综合介绍

MTEB(Massive Text Embedding Benchmark)是一个由 embeddings-benchmark 团队开发并托管在 GitHub 上的开源项目,旨在为文本嵌入模型提供全面的性能评估。它涵盖了8大任务类型,包括分类、聚类、检索等,整合了58个数据集,支持112种语言,是目前最全面的文本嵌入基准测试工具之一。MTEB 通过对33种模型的测试,揭示了不同模型在各类任务中的表现差异,帮助开发者选择适合具体应用的嵌入模型。该项目提供开源代码,用户可以自由运行测试或提交新模型至公共排行榜,广泛适用于NLP研究、模型开发及行业应用场景。

MTEB:评估文本嵌入模型性能的开源基准测试工具-1

访问地址:https://huggingface.co/spaces/mteb/leaderboard


MTEB:评估文本嵌入模型性能的开源基准测试工具-1

 

功能列表

  • 多任务评估支持:包含8种嵌入任务,如语义文本相似度(STS)、检索、聚类等,覆盖多种应用场景。
  • 多语言数据集:支持112种语言,提供多语言模型的测试能力,适合全球化应用开发。
  • 模型性能排行榜:内置公共排行榜,展示33种模型的测试结果,便于用户对比选择。
  • 自定义模型测试:允许用户导入自定义嵌入模型,仅需少量代码即可运行评估。
  • 缓存嵌入功能:支持嵌入结果缓存,优化重复测试效率,适合大规模实验。
  • 灵活参数调整:提供编码参数配置,如批量大小调整,提升测试灵活性。
  • 开源代码支持:完整源码开放,用户可根据需求修改或扩展功能。
  • 社区扩展性:支持用户提交新任务、数据集或模型,持续丰富测试内容。

 

使用帮助

安装流程

MTEB 是一个基于 Python 的工具,部署和运行需要一定的编程环境。以下是详细的安装步骤:

1. 环境准备

  • 操作系统:支持 Windows、MacOS 或 Linux。
  • Python 版本:需要 Python 3.10 或以上版本,可通过 python --version 检查。
  • Git 工具:用于从 GitHub 获取源码,建议提前安装。

2. 克隆代码库

打开终端,运行以下命令获取 MTEB 源码:

git clone https://github.com/embeddings-benchmark/mteb.git
cd mteb

这会将项目下载到本地并进入项目目录。

3. 安装依赖

MTEB 需要一些 Python 库支持,安装依赖前建议创建虚拟环境以避免冲突:

python -m venv venv
source venv/bin/activate  # Linux/MacOS
venv\Scripts\activate     # Windows

然后安装核心依赖:

pip install -r requirements.txt

若需运行排行榜界面,还需安装 Gradio:

pip install mteb[gradio]

4. 验证安装

运行以下命令检查可用任务,确保安装成功:

mteb --available_tasks

若返回任务列表,说明环境配置完成。

使用方法

MTEB 的核心功能是评估文本嵌入模型,以下是主要操作流程:

功能1:运行预置任务评估现有模型

MTEB 支持直接测试已有模型(如 SentenceTransformer 模型)。例如,评估 "average_word_embeddings_komninos" 模型在 Banking77Classification 任务上的表现:

mteb -m average_word_embeddings_komninos -t Banking77Classification --output_folder results/average_word_embeddings_komninos --verbosity 3
  • -m 指定模型名称。
  • -t 指定任务名称。
  • --output_folder 指定结果保存路径。
  • --verbosity 3 显示详细日志。

结果会保存到指定文件夹,包含各项任务的得分。

功能2:测试自定义模型

若需测试自己的模型,只需实现简单的接口。以 SentenceTransformer 为例:

from mteb import MTEB
from sentence_transformers import SentenceTransformer
# 加载模型
model = SentenceTransformer("average_word_embeddings_komninos")
# 定义评估任务
evaluation = MTEB(tasks=["Banking77Classification"])
# 运行评估
evaluation.run(model, output_folder="results")

运行后,结果会保存到 "results" 文件夹。

功能3:缓存嵌入以优化效率

对于重复测试,可启用缓存功能,避免重复计算嵌入:

from mteb.models.cache_wrapper import CachedEmbeddingWrapper
# 包装模型以启用缓存
model_with_cache = CachedEmbeddingWrapper(model, cache_path="cache_embeddings")
evaluation.run(model_with_cache)

缓存文件会按任务名称存储在指定路径。

功能4:查看排行榜

若想查看当前模型排名,可访问官方排行榜,或本地部署:

git clone https://github.com/embeddings-benchmark/leaderboard.git
cd leaderboard
pip install -r requirements.txt
python app.py

在浏览器中访问 http://localhost:7860,即可查看实时排行榜。

功能5:添加新任务

用户可通过继承任务类扩展 MTEB。例如,添加一个 reranking 任务:

from mteb.abstasks.AbsTaskReranking import AbsTaskReranking
class CustomReranking(AbsTaskReranking):
    @property
def description(self):
return {
"name": "CustomReranking",
"description": "自定义重排序任务",
"type": "Reranking",
"eval_splits": ["test"],
"eval_langs": ["en"],
"main_score": "map"
}
evaluation = MTEB(tasks=[CustomReranking()])
evaluation.run(model)

操作技巧

  • 多GPU支持:对于检索任务,可使用多GPU加速:
pip install git+https://github.com/NouamaneTazi/beir@nouamane/better-multi-gpu
torchrun --nproc_per_node=2 scripts/retrieval_multigpu.py
  • 选择子集:只评估特定任务子集:
evaluation.run(model, eval_subsets=["Banking77Classification"])
  • 调整批量大小:优化编码速度:
evaluation.run(model, encode_kwargs={"batch_size": 32})

通过以上步骤,用户可以轻松上手 MTEB,完成模型评估或功能扩展。

CDN1
未经允许不得转载:首席AI分享圈 » MTEB:评估文本嵌入模型性能的基准测试

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文