MTEB项目1.34.9版本更新:模型元数据与本地排行榜功能优化
【免费下载链接】mteb MTEB: Massive Text Embedding Benchmark 项目地址: https://gitcode.com/gh_mirrors/mt/mteb
引言:文本嵌入基准测试的新里程碑
在人工智能快速发展的今天,文本嵌入模型(Text Embedding Models)已成为自然语言处理领域的核心技术之一。Massive Text Embedding Benchmark(MTEB)作为业界领先的文本嵌入基准测试平台,持续推动着模型评估标准的演进。最新发布的1.34.9版本带来了两项重要优化:模型元数据管理系统的增强和本地排行榜功能的重大改进,这些更新将显著提升开发者和研究者的使用体验。
读完本文,您将获得:
- 🚀 全面了解MTEB 1.34.9版本的核心更新内容
- 📊 掌握新版模型元数据系统的使用方法
- 🏆 学会如何高效运行本地排行榜进行模型比较
- 🔧 获得实际代码示例和最佳实践指南
- 💡 了解如何利用新功能优化您的研究和工作流程
模型元数据系统全面升级
元数据结构的精细化设计
MTEB 1.34.9版本对模型元数据(Model Metadata)系统进行了深度优化,引入了更加精细化的数据结构定义。新的ModelMeta类包含了20多个关键属性,为模型评估提供了全面的上下文信息。
class ModelMeta(BaseModel):
name: str | None
revision: str | None
release_date: STR_DATE | None
languages: list[ISO_LANGUAGE_SCRIPT] | None
loader: Callable[..., Encoder] | None = None
n_parameters: int | None
memory_usage_mb: float | None
max_tokens: float | None
embed_dim: int | None
license: LICENSES | STR_URL | None
open_weights: bool | None
# ... 更多属性
关键元数据属性详解
| 属性 | 类型 | 描述 | 示例 |
|---|---|---|---|
n_parameters | int | 模型参数量 | 335,000,000 |
memory_usage_mb | float | 内存使用量(MB) | 1242 |
embed_dim | int | 嵌入维度 | 1024 |
max_tokens | float | 最大token数 | 512 |
training_datasets | dict | 训练数据集 | {"MSMARCO": ["train"]} |
languages | list | 支持语言 | ["eng-Latn", "zho-Hans"] |
framework | list | 支持框架 | ["Sentence Transformers", "PyTorch"] |
训练数据追踪与零样本评估
新版本强化了训练数据追踪功能,能够精确记录模型在哪些数据集上进行过训练。这对于零样本(Zero-shot)评估至关重要,帮助研究者准确判断模型的泛化能力。
# 检查模型是否在特定任务上为零样本
def is_zero_shot_on(self, tasks: Sequence[AbsTask] | Sequence[str]) -> bool | None:
training_datasets = self.get_training_datasets()
if training_datasets is None:
return None
# 计算训练数据与评估任务的交集
intersection = model_datasets & benchmark_datasets
return len(intersection) == 0
本地排行榜功能重大优化
性能过滤与模型筛选增强
1.34.9版本为本地排行榜引入了强大的模型过滤功能,支持基于多种条件进行精细化筛选:
def filter_models(
model_names: list[str],
task_select: list[str],
availability: bool | None, # 开源/闭源
compatibility: list[str], # 框架兼容性
instructions: bool | None, # 是否指令调优
max_model_size: int, # 最大模型尺寸
zero_shot_setting: Literal["only_zero_shot", "allow_all", "remove_unknown"],
):
# 实现复杂的过滤逻辑
多维度比较可视化
新版排行榜提供了丰富的可视化功能,包括:
- 性能-尺寸关系图:展示模型性能与参数量的关系
- 雷达图:多任务类型性能对比
- 交互式表格:支持排序、筛选和导出
缓存机制优化
为了提高本地运行的效率,1.34.9版本引入了智能缓存系统:
def load_results():
results_cache_path = Path(__file__).parent.joinpath("__cached_results.json")
if not results_cache_path.exists():
# 首次加载并缓存结果
all_results = mteb.load_results(
only_main_score=True, require_model_meta=False, models=ALL_MODELS
).filter_models()
all_results.to_disk(results_cache_path)
return all_results
else:
# 使用缓存结果
with results_cache_path.open() as cache_file:
return mteb.BenchmarkResults.from_validated(**json.load(cache_file))
实际应用案例与代码示例
完整模型评估流程
import mteb
from sentence_transformers import SentenceTransformer
# 1. 选择模型
model_name = "BAAI/bge-large-en-v1.5"
model = mteb.get_model(model_name)
# 2. 选择评估任务
tasks = mteb.get_tasks(
task_types=["Retrieval", "Classification"],
languages=["eng-Latn"],
modalities=["text"]
)
# 3. 运行评估
evaluation = mteb.MTEB(tasks=tasks)
results = evaluation.run(
model,
output_folder=f"results/{model_name}",
encode_kwargs={"batch_size": 32}
)
# 4. 分析结果
print(f"评估完成,结果保存在: results/{model_name}")
本地排行榜部署指南
# 安装必要依赖
pip install mteb[leaderboard]
# 运行本地排行榜
make run-leaderboard
# 或者直接使用Python启动
python -m mteb.leaderboard.app
访问 http://localhost:7860 即可查看本地排行榜界面。
高级过滤配置示例
# 只显示开源、支持指令调优的模型
filtered_models = filter_models(
all_models,
task_select=selected_tasks,
availability=True, # 仅开源模型
compatibility=[], # 不限框架
instructions=True, # 仅指令调优模型
max_model_size=5000, # 最大50亿参数
zero_shot_setting="only_zero_shot" # 仅零样本模型
)
技术实现深度解析
元数据自动提取机制
MTEB 1.34.9版本实现了从HuggingFace Hub自动提取模型元数据的功能:
def model_meta_from_hf_hub(model_name: str) -> ModelMeta:
try:
safetensors_metadata = get_safetensors_metadata(model_name)
# 自动计算内存使用量
total_memory_bytes = sum(
parameters * dtype_size_map.get(dtype, 4)
for dtype, parameters in safetensors_metadata.parameter_count.items()
)
memory_usage_mb = round(total_memory_bytes / (1024**2))
return memory_usage_mb
except (NotASafetensorsRepoError, SafetensorsParsingError, GatedRepoError):
# 回退到基于参数量的估算
if self.n_parameters is not None:
return round(self.n_parameters * 4 / (1024**2))
多语言支持优化
新版本加强了对多语言模型的支持,使用ISO 639-3语言代码和ISO 15924文字代码的组合:
# 支持的语言代码示例
bgem3_languages = [
"afr-Latn", # 南非语-拉丁文
"amh-Ethi", # 阿姆哈拉语-埃塞俄比亚文
"zho-Hans", # 中文-简体中文
"jpn-Jpan", # 日语-日文
"kor-Hang", # 韩语-谚文
# ... 支持100+种语言
]
性能优化与最佳实践
内存使用优化策略
# 使用缓存包装器减少重复计算
from mteb.models.cache_wrapper import CachedEmbeddingWrapper
model = mteb.get_model("BAAI/bge-base-en-v1.5")
cached_model = CachedEmbeddingWrapper(model, cache_path='./embedding_cache')
# 运行评估时会自动使用缓存
evaluation.run(cached_model)
批量处理优化
# 调整批处理大小以获得最佳性能
evaluation.run(
model,
encode_kwargs={
"batch_size": 64, # 根据GPU内存调整
"show_progress_bar": True,
"convert_to_numpy": True
}
)
【免费下载链接】mteb MTEB: Massive Text Embedding Benchmark 项目地址: https://gitcode.com/gh_mirrors/mt/mteb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



