|
# MSMARCO Models |
|
[MS MARCO](https://microsoft.github.io/msmarco/) is a large scale information retrieval corpus that was created based on real user search queries using Bing search engine. The provided models can be used for semantic search, i.e., given keywords / a search phrase / a question, the model will find passages that are relevant for the search query. |
|
|
|
The training data constist of over 500k examples, while the complete corpus consist of over 8.8 Million passages. |
|
|
|
## Usage |
|
```python |
|
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)) |
|
``` |
|
|
|
|
|
For more details on the usage, see [Applications - Information Retrieval](../../examples/applications/retrieve_rerank/README.md) |
|
|
|
|
|
## Performance |
|
Performance is evaluated on [TREC-DL 2019](https://microsoft.github.io/TREC-2019-Deep-Learning/), which is a query-passage retrieval task where multiple queries have been annotated as with their relevance with respect to the given query. Further, we evaluate on the [MS Marco Passage Retrieval](https://github.com/microsoft/MSMARCO-Passage-Ranking/) dataset. |
|
|
|
As baseline we show the results for lexical search with BM25 using ElasticSearch. |
|
|
|
| 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](https://github.com/microsoft/ANCE) | 67.84 | 33.01 | 4,000 / 170 | 540 / 30 |
|
| [msmarco-distilbert-base-tas-b](https://huggingface.co/sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco) | **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 | |
|
|
|
**Notes:** |
|
- We provide two type of models, one tuned for **cosine-similarity**, the other for **dot-product**. Make sure to use the right method to compute the similarity between query and passages. |
|
- Models tuned for **cosine-similarity** will prefer the retrieval of shorter passages, while models for **dot-product** will prefer the retrieval of longer passages. Depending on your task, you might prefer the one or the other type of model. |
|
- **msmarco-roberta-base-ance-firstp** is the MSMARCO Dev Passage Retrieval ANCE(FirstP) 600K model from [ANCE](https://github.com/microsoft/ANCE). This model should be used with dot-product instead of cosine similarity. |
|
- **msmarco-distilbert-base-tas-b** uses the model from [sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco](https://huggingface.co/sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco). See the linked documentation / paper for more details. |
|
- Encoding speeds are per second and were measured on a V100 GPU and an 8 core Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz |
|
|
|
|
|
## Changes in v3 |
|
The models from v2 have been used for find for all training queries similar passages. An [MS MARCO Cross-Encoder](ce-msmarco.md) based on the electra-base-model has been then used to classify if these retrieved passages answer the question. |
|
|
|
If they received a low score by the cross-encoder, we saved them as hard negatives: They got a high score from the bi-encoder, but a low-score from the (better) cross-encoder. |
|
|
|
We then trained the v2 models with these new hard negatives. |
|
|
|
## Version Histroy |
|
As we work on the topic, we will publish updated (and improved) models. |
|
|
|
- [Version 2](msmarco-v2.md) |
|
- [Version 1](msmarco-v1.md) |
|
|