MSMARCO 模型
MS MARCO 是一个大规模信息检索语料库,它基于必应搜索引擎的真实用户搜索查询创建。所提供的模型可用于语义搜索,即给定关键字/搜索短语/问题,模型将找到与搜索查询相关的段落。
训练数据包含超过 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 Cross-Encoder 来分类这些检索到的段落是否回答了问题。
如果它们被 Cross-Encoder 评为低分,我们将其保存为难负例:它们从双编码器获得了高分,但从(更好的)Cross-Encoder 获得了低分。
然后,我们用这些新的难负例训练了 v2 模型。