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 段落排序数据集上进行评估。
方法 | 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 Cross-Encoder 来分类这些检索到的段落是否回答了问题。
如果它们从交叉编码器收到低分,我们将其保存为难负例:它们从双编码器获得了高分,但从(更好的)交叉编码器获得了低分。
然后我们使用这些新的难负例训练了 v2 模型。