MTEB项目1.31.4版本更新:任务聚合与语言过滤优化
【免费下载链接】mteb MTEB: Massive Text Embedding Benchmark 项目地址: https://gitcode.com/gh_mirrors/mt/mteb
引言
作为文本嵌入模型评估的黄金标准,Massive Text Embedding Benchmark(MTEB)项目在1.31.4版本中带来了两项关键改进:任务聚合功能增强和语言过滤机制优化。这些更新不仅提升了评估结果的可靠性,还为多语言场景下的模型比较提供了更精确的工具。
任务聚合功能全面升级
聚合方法体系
MTEB 1.31.4版本引入了三种科学的任务聚合方法,每种方法针对不同的评估需求:
1. 简单均值聚合(Mean - Naïve)
from mteb.task_aggregation import mean
# 计算所有任务得分的简单平均值
aggregated_results = mean(benchmark_results)
这种方法为每个模型计算所有任务主要得分的算术平均值,适合快速概览模型整体性能。
2. 任务类别加权均值(Mean - Weighted by Task Category)
from mteb.task_aggregation import task_category_weighted_mean
# 按任务类型加权计算平均得分
weighted_results = task_category_weighted_mean(benchmark_results)
该方法考虑不同任务类型的分布,先计算每个任务类型(如分类、检索、聚类等)的平均得分,再对这些类型均值进行平均,避免任务类型不平衡带来的偏差。
3. 博尔达计数排名(Borda Count)
from mteb.task_aggregation import borda_count
# 使用博尔达计数法进行排名聚合
ranked_results = borda_count(benchmark_results)
博尔达计数法将每个任务视为"投票者",模型在每个任务上的排名转换为分数,最后汇总所有任务的分数。这种方法特别适合处理排名数据,能有效处理并列情况。
聚合方法对比表
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 简单均值 | 快速概览 | 计算简单,易于理解 | 忽略任务重要性差异 |
| 任务类别加权 | 平衡评估 | 考虑任务类型分布 | 需要任务类型信息 |
| 博尔达计数 | 排名比较 | 处理并列,适合排序 | 计算相对复杂 |
语言过滤机制深度优化
多层级语言支持
1.31.4版本对语言过滤功能进行了重大改进,支持更精细的语言控制:
语言代码规范化处理
新版本增强了语言代码的验证和规范化:
from mteb.languages import check_language_code
# 验证语言代码格式
check_language_code("eng-Latn") # 有效:英语-拉丁字母
check_language_code("zho-Hans") # 有效:中文-简体字
check_language_code("python-Code") # 有效:Python编程语言
# 无效代码会抛出ValueError
check_language_code("invalid-Latn") # 抛出异常
多维度过滤功能
import mteb
# 按语言过滤任务
tasks = mteb.get_tasks(languages=["eng", "deu"])
# 按脚本过滤任务
tasks = mteb.get_tasks(scripts=["Latn", "Cyrl"])
# 组合过滤:德语和法语的拉丁字母任务
tasks = mteb.get_tasks(
languages=["deu", "fra"],
scripts=["Latn"]
)
# 语言-脚本精确匹配
tasks = mteb.get_tasks(languages=["eng-Latn", "ara-Arab"])
实际应用场景
场景一:多语言模型评估
import mteb
from mteb.task_aggregation import task_category_weighted_mean
# 选择多语言任务
multilingual_tasks = mteb.get_tasks(
languages=["eng", "deu", "fra", "spa", "ita"],
scripts=["Latn"]
)
# 运行评估
evaluation = mteb.MTEB(tasks=multilingual_tasks)
results = evaluation.run(model)
# 使用加权聚合分析结果
aggregated_scores = task_category_weighted_mean(results)
print(f"多语言加权平均得分: {aggregated_scores}")
场景二:特定语言家族分析
# 分析斯堪的纳维亚语言性能
scandinavian_languages = ["dan", "swe", "nor", "isl", "fin"]
scandinavian_tasks = mteb.get_tasks(languages=scandinavian_languages)
# 运行并聚合结果
evaluation = mteb.MTEB(tasks=scandinavian_tasks)
results = evaluation.run(model)
# 比较不同聚合方法
naive_mean = mean(results)
weighted_mean = task_category_weighted_mean(results)
borda_rank = borda_count(results)
场景三:跨脚本性能比较
# 比较同一语言不同脚本的表现
chinese_tasks = mteb.get_tasks(languages=["zho-Hans", "zho-Hant"])
arabic_tasks = mteb.get_tasks(languages=["ara-Arab", "ara-Latn"])
# 分别评估简繁体中文
chinese_eval = mteb.MTEB(tasks=chinese_tasks)
chinese_results = chinese_eval.run(model)
# 分别评估阿拉伯语不同文字
arabic_eval = mteb.MTEB(tasks=arabic_tasks)
arabic_results = arabic_eval.run(model)
技术实现细节
聚合算法核心逻辑
语言过滤验证流程
语言过滤系统采用严格的验证机制:
- 格式解析:自动识别
语言-脚本或纯语言格式 - 代码验证:对照ISO 639-3语言代码和ISO 15924脚本代码标准
- 编程语言特殊处理:支持常见的编程语言标识
- 错误处理:提供清晰的错误信息和修复建议
最佳实践建议
聚合方法选择指南
- 初步探索:使用简单均值快速了解模型整体性能
- 详细分析:采用任务类型加权方法获得更平衡的评估
- 排名比较:在模型间比较时使用博尔达计数法
- 结果验证:尝试多种方法确保结论的稳健性
语言过滤使用技巧
- 精确匹配:使用
语言-脚本格式获得最精确的过滤结果 - 批量处理:利用列表形式一次过滤多个语言或脚本
- 错误处理:捕获
ValueError异常处理无效语言代码 - 性能优化:合理选择过滤条件避免不必要的任务加载
版本兼容性说明
1.31.4版本保持向后兼容性,所有现有代码无需修改即可运行。新功能通过附加参数和新增函数提供,不会影响现有功能的使用。
总结
MTEB 1.31.4版本的任务聚合和语言过滤优化为文本嵌入模型的评估提供了更强大、更精确的工具集。这些改进使得研究人员和开发者能够:
- 🔍 更科学地聚合多任务评估结果
- 🌍 更精确地处理多语言场景
- 📊 更可靠地比较模型性能
- ⚡ 更高效地进行大规模评估
通过合理利用这些新功能,用户可以获得更有意义的评估结果,推动文本嵌入技术的进一步发展。
【免费下载链接】mteb MTEB: Massive Text Embedding Benchmark 项目地址: https://gitcode.com/gh_mirrors/mt/mteb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



