MSMARCO 模型¶
MS MARCO 是一个大规模的信息检索语料库,它基于使用Bing搜索引擎的真实用户搜索查询创建。提供的模型可用于语义搜索,即,给定关键词/搜索短语/问题,模型将找到与搜索查询相关的段落。
训练数据由超过50万个示例组成,而完整的语料库则包含超过880万个段落。
用法¶
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer("msmarco-distilroberta-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 段落检索数据集上进行评估。
作为基线,我们展示了使用 Elasticsearch 进行 BM25 词法搜索的结果。
Approach | NDCG@10 (TREC DL 19 Reranking) | MRR@10 (MS Marco Dev) | Queries (GPU / CPU) | Docs (GPU / CPU) |
---|---|---|---|---|
Models tuned for cosine-similarity | ||||
msmarco-MiniLM-L-6-v3 | 67.46 | 32.27 | 18,000 / 750 | 2,800 / 180 |
msmarco-MiniLM-L-12-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 |
Models tuned for dot-product | ||||
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 |
Previous approaches | ||||
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 交叉编码器被用来分类这些检索到的段落是否回答了问题。
如果交叉编码器给它们的评分较低,我们将它们保存为硬负样本:它们在双编码器中获得了高分,但在(更好的)交叉编码器中获得了低分。
然后我们使用这些新的困难负样本训练了v2模型。
版本历史¶
版本 2
版本 1