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 2019 和 TREC-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 模型。