MSMARCO 模型

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

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

用法

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer("msmarco-distilbert-base-v3")

query_embedding = model.encode("How big is London")
passage_embedding = model.encode("London has 9,787,426 inhabitants at the 2011 census")

print("Similarity:", util.cos_sim(query_embedding, passage_embedding))

有关用法的更多详细信息,请参阅 应用 - 信息检索

性能

性能在 TREC-DL 2019 上进行评估,这是一个查询-段落检索任务,其中多个查询已根据其与给定查询的相关性进行注释。此外,我们在 MS Marco Passage Retrieval 数据集上进行评估。

作为基线,我们展示了使用 Elasticsearch 的 BM25 进行词汇搜索的结果。

方法 NDCG@10 (TREC DL 19 重排序) MRR@10 (MS Marco Dev) 查询 (GPU / CPU) 文档 (GPU / CPU)
针对余弦相似度调整的模型
msmarco-MiniLM-L6-v3 67.46 32.27 18,000 / 750 2,800 / 180
msmarco-MiniLM-L12-v3 65.14 32.75 11,000 / 400 1,500 / 90
msmarco-distilbert-base-v3 69.02 33.13 7,000 / 350 1,100 / 70
msmarco-distilbert-base-v4 70.24 33.79 7,000 / 350 1,100 / 70
msmarco-roberta-base-v3 69.08 33.01 4,000 / 170 540 / 30
针对点积调整的模型
msmarco-distilbert-base-dot-prod-v3 68.42 33.04 7,000 / 350 1100 / 70
msmarco-roberta-base-ance-firstp 67.84 33.01 4,000 / 170 540 / 30
msmarco-distilbert-base-tas-b 71.04 34.43 7,000 / 350 1100 / 70
以前的方法
BM25 (Elasticsearch) 45.46 17.29
msmarco-distilroberta-base-v2 65.65 28.55
msmarco-roberta-base-v2 67.18 29.17
msmarco-distilbert-base-v2 68.35 30.77

注释

  • 我们提供两种类型的模型,一种针对余弦相似度调整,另一种针对点积。请确保使用正确的方法来计算查询和段落之间的相似度。

  • 针对余弦相似度调整的模型将优先检索较短的段落,而针对点积的模型将优先检索较长的段落。根据您的任务,您可能更喜欢其中一种类型的模型。

  • msmarco-roberta-base-ance-firstp 是来自 ANCE 的 MSMARCO Dev Passage Retrieval ANCE(FirstP) 600K 模型。此模型应与点积而不是余弦相似度一起使用。

  • msmarco-distilbert-base-tas-b 使用来自 sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco 的模型。有关更多详细信息,请参阅链接的文档/论文。

  • 编码速度为每秒,并在 V100 GPU 和 8 核 Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz 上测量。

v3 中的更改

v2 中的模型已用于查找所有训练查询的相似段落。然后,基于 electra-base-model 的 MS MARCO Cross-Encoder 已被用于分类这些检索到的段落是否回答了问题。

如果它们被 cross-encoder 赋予了低分,我们将它们保存为困难负样本:它们从 bi-encoder 获得了高分,但从(更好的)cross-encoder 获得了低分。

然后,我们使用这些新的困难负样本训练了 v2 模型。

版本历史