MS MARCO 交叉编码器

MS MARCO 是一个大规模信息检索语料库,它基于必应(Bing)搜索引擎的真实用户搜索查询创建。所提供的模型可用于语义搜索,即,给定关键词/搜索短语/问题,模型将找到与搜索查询相关的段落。

训练数据包含超过 50 万个样本,而完整的语料库包含超过 880 万个段落。

在 SentenceTransformers 中使用

可以像这样使用预训练模型

from sentence_transformers import CrossEncoder

model = CrossEncoder("model_name", max_length=512)
scores = model.predict(
    [("Query", "Paragraph1"), ("Query", "Paragraph2"), ("Query", "Paragraph3")]
)

在 Transformers 中使用

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model = AutoModelForSequenceClassification.from_pretrained("model_name")
tokenizer = AutoTokenizer.from_pretrained("model_name")

features = tokenizer(["Query", "Query"], ["Paragraph1", "Paragraph2"], padding=True, truncation=True, return_tensors="pt")

model.eval()
with torch.no_grad():
    scores = model(**features).logits
    print(scores)

模型与性能

在下表中,我们提供了各种预训练的交叉编码器及其在 TREC 深度学习 2019MS MARCO 段落重排序 数据集上的性能。

模型名称 NDCG@10 (TREC DL 19) MRR@10 (MS Marco Dev) 文档数/秒
版本 2 模型
cross-encoder/ms-marco-TinyBERT-L2-v2 69.84 32.56 9000
cross-encoder/ms-marco-MiniLM-L2-v2 71.01 34.85 4100
cross-encoder/ms-marco-MiniLM-L4-v2 73.04 37.70 2500
cross-encoder/ms-marco-MiniLM-L6-v2 74.30 39.01 1800
cross-encoder/ms-marco-MiniLM-L12-v2 74.31 39.02 960
版本 1 模型
cross-encoder/ms-marco-TinyBERT-L2 67.43 30.15 9000
cross-encoder/ms-marco-TinyBERT-L4 68.09 34.50 2900
cross-encoder/ms-marco-TinyBERT-L6 69.57 36.13 680
cross-encoder/ms-marco-electra-base 71.99 36.41 340
其他模型
nboost/pt-tinybert-msmarco 63.63 28.80 2900
nboost/pt-bert-base-uncased-msmarco 70.94 34.75 340
nboost/pt-bert-large-msmarco 73.36 36.48 100
Capreolus/electra-base-msmarco 71.23 36.89 340
amberoad/bert-multilingual-passage-reranking-msmarco 68.40 35.54 330
sebastian-hofstaetter/distilbert-cat-margin_mse-T2-msmarco 72.82 37.88 720

注意:运行时间是在 V100 GPU 上使用 Hugging Face Transformers v4 计算的。