赞
踩
文章链接: [2210.07316] MTEB: Massive Text Embedding Benchmark (arxiv.org)
项目地址: mteb:MTEB: Massive Text Embedding Benchmark - GitCode
github地址: FlagEmbedding/C_MTEB at master · FlagOpen/FlagEmbedding (github.com)
Hugging Face Leadboard: MTEB Leaderboard - a Hugging Face Space by mteb
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
NLP的应用中,有一个最关键的步骤就是将文字/其他多模态的模型转换成词嵌入/向量化,而对应的这个模型便称之为Embedding模型。那么在这么多embedding模型里,如何评价好坏呢?本文就会介绍,MTEB(Massive Text Embedding Benchmark)是目前评测文本向量很重要的一个参考,其榜单也是各大文本向量模型用来展示与其他向量模型强弱的一个竞技台。C-MTEB则是专门针对中文文本向量的评测基准。本文介绍了 Massive Text Embedding Benchmark (MTEB),这是一个大规模的文本嵌入基准测试,旨在全面评估文本嵌入方法的性能。MTEB 覆盖了 8 种嵌入任务,包含 58 个数据集和 112 种语言。通过对 33 种模型的基准测试,MTEB 建立了迄今为止最全面的文本嵌入基准。研究发现,没有单一的文本嵌入方法能够在所有任务上都占据优势,这表明该领域尚未就通用文本嵌入方法达成共识,并且尚未将其扩展到足以在所有嵌入任务上提供最先进的结果。
随着人工智能和自然语言处理技术的飞速发展,文本嵌入技术已成为推动这些领域进步的重要工具。文本嵌入是将文本转换为密集向量表示的过程,这些向量能够捕捉文本中的语义信息,并使得文本之间的相似性和差异性可以通过向量之间的距离来度量。这种技术已被广泛应用于各种NLP任务中,如文本分类、聚类、搜索、问答等。
然而,文本嵌入模型的评估一直是一个挑战。传统的评估方法通常基于有限的数据集和单一的任务,这无法全面反映模型在真实世界应用中的泛化能力。此外,随着新的文本嵌入模型不断涌现,如何公平地比较不同模型之间的性能也变得越来越困难。
为了解决这些问题,研究人员提出了各种基准测试,以更全面地评估文本嵌入技术的性能。然而,这些基准测试往往存在局限性,例如涵盖的任务和数据集数量有限,或者仅关注于特定的应用场景。因此,需要一个更加全面、更加广泛的基准测试来评估文本嵌入技术的性能。
MTEB 包含以下 8 种任务类型:
在 MTEB 上评估了超过 30 种模型,包括开源模型和通过 API 访问的模型,如 OpenAI Embeddings 端点。结果显示,不同的模型在不同的任务上表现各异,没有单一的最佳解决方案。例如,SimCSE 在 STS 上表现强劲,但在聚类和检索任务上表现不佳
MTEB中的数据集可以归为三类:
MTEB基于如下需求构建:
C-MTEB是为了评估中文文本向量,共收集了如上图所示的35个公共数据集,一共分为6类的评估任务:
- retrieval,包括查询语句和语料库,对于每个查询,从语料库中查询最相似的top-k个文档,使用BEIR相同的设置,nDCG@10是主要指标。
- re-ranking,包括查询语句和候选文档集(一个正样本和N个负样本),基于向量相似性来重排序,MAP是主要指标。
- STS (semantic textual similarity),基于向量相似度比较两个句子的相关性,计算了Spearman 相关性并作为主要指标。
- classification,与MTEB一样。
- pair classification,比较一对句子的相似性,使用平均精度作为主要指标。
- clustering,评测方法与MTEB一样。向量在每个任务上的表现是对应任务下所有数据集的平均指标来决定,而向量整体性能是所有数据集的平均值决定的。
MTEB 的软件是开源的,允许通过添加不到 10 行代码来评估任何嵌入模型。下面简单的说一下使用方法:
pip install mteb
import mteb
from sentence_transformers import SentenceTransformer
# 定义 sentence-transformers 模型名
model_name = "average_word_embeddings_komninos"
# 或直接从 Hugging Face 加载:
# 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 -m sentence-transformers/all-MiniLM-L6-v2 \
-t Banking77Classification \
--verbosity 3
# 如果没有指定,默认将结果保存在 results/{model_name} 文件夹中
截至到本榜单更新时间: 24/06/05,MTEB Leaderboard - a Hugging Face Space by mteb 中文top10如下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。