MSMARCO 模型

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

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

用法

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer("msmarco-distilbert-dot-v5")

query_embedding = model.encode("How big is London")
passage_embedding = model.encode([
    "London has 9,787,426 inhabitants at the 2011 census",
    "London is known for its financial district",
])

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

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

性能

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

方法 MRR@10 (MS Marco Dev) NDCG@10 (TREC DL 19 重排序) NDCG@10 (TREC DL 20 重排序) 查询(GPU / CPU) 文档(GPU / CPU)
使用归一化嵌入调优的模型
msmarco-MiniLM-L6-cos-v5 32.27 67.46 64.73 18,000 / 750 2,800 / 180
msmarco-MiniLM-L12-cos-v5 32.75 65.14 67.48 11,000 / 400 1,500 / 90
msmarco-distilbert-cos-v5 33.79 70.24 66.24 7,000 / 350 1,100 / 70
multi-qa-MiniLM-L6-cos-v1 65.55 64.66 18,000 / 750 2,800 / 180
multi-qa-distilbert-cos-v1 67.59 66.46 7,000 / 350 1,100 / 70
multi-qa-mpnet-base-cos-v1 67.78 69.87 4,000 / 170 540 / 30
为点积调优的模型
msmarco-distilbert-base-tas-b 34.43 71.04 69.78 7,000 / 350 1100 / 70
msmarco-distilbert-dot-v5 37.25 70.14 71.08 7,000 / 350 1100 / 70
msmarco-bert-base-dot-v5 38.08 70.51 73.45 4,000 / 170 540 / 30
multi-qa-MiniLM-L6-dot-v1 66.70 65.98 18,000 / 750 2,800 / 180
multi-qa-distilbert-dot-v1 68.05 70.49 7,000 / 350 1,100 / 70
multi-qa-mpnet-base-dot-v1 70.66 71.18 4,000 / 170 540 / 30

注释

  • 我们提供两种类型的模型:一种产生归一化嵌入,可以与点积、余弦相似度或欧几里得距离一起使用(所有三种评分函数将产生相同的结果)。为点积调优的模型将产生不同长度的嵌入,并且必须与点积一起使用才能在向量空间中找到接近的项目。

  • 具有归一化嵌入的模型将倾向于检索较短的段落,而为点积调优的模型将倾向于检索较长的段落。根据您的任务,您可能更喜欢其中一种类型的模型。

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

v5 中的更改

  • 添加了具有归一化嵌入的模型:这些是 v3 余弦相似度模型,但在顶部添加了额外的归一化层。

  • 使用 MarginMSE 损失训练的新模型:msmarco-distilbert-dot-v5 和 msmarco-bert-base-dot-v5

v4 中的更改

  • 仅使用更好的难负例训练了一个新模型,与 v3 相比略有改进

v3 中的更改

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

如果他们被交叉编码器给出了低分,我们将它们保存为难负例:他们从双编码器获得了高分,但从(更好的)交叉编码器获得了低分。

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

版本历史