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 模型。