splade-distilbert-base-uncased trained on Quora Duplicates Questions
This is a SPLADE Sparse Encoder model finetuned from distilbert/distilbert-base-uncased on the quora-duplicates dataset using the sentence-transformers library. It maps sentences & paragraphs to a 30522-dimensional sparse vector space and can be used for semantic search and sparse retrieval.
Model Details
Model Description
- Model Type: SPLADE Sparse Encoder
- Base model: distilbert/distilbert-base-uncased
- Maximum Sequence Length: 256 tokens
- Output Dimensionality: 30522 dimensions
- Similarity Function: Dot Product
- Training Dataset:
- Language: en
- License: apache-2.0
Model Sources
Full Model Architecture
SparseEncoder(
(0): MLMTransformer({'max_seq_length': 256, 'do_lower_case': False}) with MLMTransformer model: DistilBertForMaskedLM
(1): SpladePooling({'pooling_strategy': 'max', 'activation_function': 'relu', 'word_embedding_dimension': 30522})
)
Usage
Direct Usage (Sentence Transformers)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SparseEncoder
model = SparseEncoder("xin0920/splade-distilbert-base-uncased-msmarco-mrl")
sentences = [
'Which laptop is best under 25000 INR?',
'What are the best laptops under 25k?',
'What is the best laptop under 45k?',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
Evaluation
Metrics
Sparse Information Retrieval
- Datasets:
NanoClimateFEVER, NanoDBPedia, NanoFEVER, NanoFiQA2018, NanoHotpotQA, NanoMSMARCO, NanoNFCorpus, NanoNQ, NanoQuoraRetrieval, NanoSCIDOCS, NanoArguAna, NanoSciFact and NanoTouche2020
- Evaluated with
SparseInformationRetrievalEvaluator
| Metric |
NanoClimateFEVER |
NanoDBPedia |
NanoFEVER |
NanoFiQA2018 |
NanoHotpotQA |
NanoMSMARCO |
NanoNFCorpus |
NanoNQ |
NanoQuoraRetrieval |
NanoSCIDOCS |
NanoArguAna |
NanoSciFact |
NanoTouche2020 |
| dot_accuracy@1 |
0.2 |
0.46 |
0.56 |
0.14 |
0.46 |
0.16 |
0.28 |
0.18 |
0.92 |
0.36 |
0.1 |
0.38 |
0.4898 |
| dot_accuracy@3 |
0.34 |
0.66 |
0.64 |
0.32 |
0.66 |
0.26 |
0.36 |
0.34 |
0.96 |
0.5 |
0.28 |
0.56 |
0.7551 |
| dot_accuracy@5 |
0.38 |
0.76 |
0.72 |
0.36 |
0.72 |
0.36 |
0.4 |
0.4 |
1.0 |
0.62 |
0.32 |
0.64 |
0.8367 |
| dot_accuracy@10 |
0.46 |
0.82 |
0.82 |
0.44 |
0.84 |
0.46 |
0.44 |
0.48 |
1.0 |
0.7 |
0.38 |
0.66 |
0.9388 |
| dot_precision@1 |
0.2 |
0.46 |
0.56 |
0.14 |
0.46 |
0.16 |
0.28 |
0.18 |
0.92 |
0.36 |
0.1 |
0.38 |
0.4898 |
| dot_precision@3 |
0.12 |
0.46 |
0.2333 |
0.12 |
0.2533 |
0.0867 |
0.1867 |
0.1133 |
0.3733 |
0.26 |
0.0933 |
0.1933 |
0.4354 |
| dot_precision@5 |
0.084 |
0.412 |
0.156 |
0.104 |
0.176 |
0.072 |
0.18 |
0.08 |
0.256 |
0.192 |
0.064 |
0.14 |
0.4286 |
| dot_precision@10 |
0.058 |
0.348 |
0.088 |
0.068 |
0.11 |
0.046 |
0.148 |
0.048 |
0.132 |
0.124 |
0.038 |
0.072 |
0.3367 |
| dot_recall@1 |
0.0883 |
0.025 |
0.5267 |
0.0678 |
0.23 |
0.16 |
0.01 |
0.17 |
0.8207 |
0.0767 |
0.1 |
0.365 |
0.0323 |
| dot_recall@3 |
0.1533 |
0.0861 |
0.6333 |
0.1457 |
0.38 |
0.26 |
0.0176 |
0.32 |
0.8987 |
0.1617 |
0.28 |
0.54 |
0.0833 |
| dot_recall@5 |
0.1717 |
0.1356 |
0.7133 |
0.2 |
0.44 |
0.36 |
0.0312 |
0.38 |
0.9727 |
0.1977 |
0.32 |
0.61 |
0.1362 |
| dot_recall@10 |
0.2223 |
0.2109 |
0.8133 |
0.2637 |
0.55 |
0.46 |
0.0436 |
0.46 |
0.9827 |
0.2547 |
0.38 |
0.63 |
0.2075 |
| dot_ndcg@10 |
0.191 |
0.4008 |
0.6697 |
0.1975 |
0.4642 |
0.289 |
0.169 |
0.3056 |
0.9457 |
0.264 |
0.2465 |
0.5013 |
0.3791 |
| dot_mrr@10 |
0.279 |
0.5754 |
0.6316 |
0.2355 |
0.5763 |
0.237 |
0.3282 |
0.2675 |
0.95 |
0.455 |
0.2034 |
0.4667 |
0.6323 |
| dot_map@100 |
0.1449 |
0.2348 |
0.6282 |
0.1473 |
0.3782 |
0.2547 |
0.0487 |
0.2611 |
0.9233 |
0.1868 |
0.2089 |
0.4647 |
0.2306 |
| row_non_zero_mean_query |
83.12 |
110.18 |
96.78 |
80.34 |
87.26 |
96.06 |
122.94 |
79.22 |
73.84 |
95.92 |
181.28 |
90.8 |
78.7755 |
| row_sparsity_mean_query |
0.9973 |
0.9964 |
0.9968 |
0.9974 |
0.9971 |
0.9969 |
0.996 |
0.9974 |
0.9976 |
0.9969 |
0.9941 |
0.997 |
0.9974 |
| row_non_zero_mean_corpus |
196.8254 |
146.9065 |
219.1213 |
125.9158 |
166.4719 |
105.462 |
199.5936 |
145.2502 |
74.9677 |
184.4491 |
160.5598 |
197.8948 |
140.811 |
| row_sparsity_mean_corpus |
0.9936 |
0.9952 |
0.9928 |
0.9959 |
0.9945 |
0.9965 |
0.9935 |
0.9952 |
0.9975 |
0.994 |
0.9947 |
0.9935 |
0.9954 |
Sparse Nano BEIR
- Dataset:
NanoBEIR_mean
- Evaluated with
SparseNanoBEIREvaluator with these parameters:{
"dataset_names": [
"climatefever",
"dbpedia",
"fever",
"fiqa2018",
"hotpotqa",
"msmarco",
"nfcorpus",
"nq",
"quoraretrieval",
"scidocs",
"arguana",
"scifact",
"touche2020"
]
}
| Metric |
Value |
| dot_accuracy@1 |
0.3608 |
| dot_accuracy@3 |
0.5104 |
| dot_accuracy@5 |
0.5782 |
| dot_accuracy@10 |
0.6491 |
| dot_precision@1 |
0.3608 |
| dot_precision@3 |
0.2253 |
| dot_precision@5 |
0.1804 |
| dot_precision@10 |
0.1244 |
| dot_recall@1 |
0.2056 |
| dot_recall@3 |
0.3046 |
| dot_recall@5 |
0.3591 |
| dot_recall@10 |
0.4214 |
| dot_ndcg@10 |
0.3864 |
| dot_mrr@10 |
0.4491 |
| dot_map@100 |
0.3163 |
| row_non_zero_mean_query |
98.1935 |
| row_sparsity_mean_query |
0.9968 |
| row_non_zero_mean_corpus |
158.7869 |
| row_sparsity_mean_corpus |
0.9948 |
Training Details
Training Dataset
quora-duplicates
- Dataset: quora-duplicates at 451a485
- Size: 99,000 training samples
- Columns:
anchor, positive, and negative
- Approximate statistics based on the first 1000 samples:
|
anchor |
positive |
negative |
| type |
string |
string |
string |
| details |
- min: 6 tokens
- mean: 14.1 tokens
- max: 39 tokens
|
- min: 6 tokens
- mean: 13.83 tokens
- max: 41 tokens
|
- min: 6 tokens
- mean: 15.21 tokens
- max: 75 tokens
|
- Samples:
| anchor |
positive |
negative |
What are the best GMAT coaching institutes in Delhi NCR? |
Which are the best GMAT coaching institutes in Delhi/NCR? |
What are the best GMAT coaching institutes in Delhi-Noida Area? |
Is a third world war coming? |
Is World War 3 more imminent than expected? |
Since the UN is unable to control terrorism and groups like ISIS, al-Qaeda and countries that promote terrorism (even though it consumed those countries), can we assume that the world is heading towards World War III? |
Should I build iOS or Android apps first? |
Should people choose Android or iOS first to build their App? |
How much more effort is it to build your app on both iOS and Android? |
- Loss:
SpladeLoss with these parameters:{'loss': SparseMultipleNegativesRankingLoss(
(model): SparseEncoder(
(0): MLMTransformer({'max_seq_length': 256, 'do_lower_case': False}) with MLMTransformer model: DistilBertForMaskedLM
(1): SpladePooling({'pooling_strategy': 'max', 'activation_function': 'relu', 'word_embedding_dimension': None})
)
(cross_entropy_loss): CrossEntropyLoss()
), 'lambda_corpus': 3e-05, 'lambda_query': 5e-05}
Evaluation Dataset
quora-duplicates
- Dataset: quora-duplicates at 451a485
- Size: 1,000 evaluation samples
- Columns:
anchor, positive, and negative
- Approximate statistics based on the first 1000 samples:
|
anchor |
positive |
negative |
| type |
string |
string |
string |
| details |
- min: 6 tokens
- mean: 14.05 tokens
- max: 40 tokens
|
- min: 6 tokens
- mean: 14.14 tokens
- max: 44 tokens
|
- min: 6 tokens
- mean: 14.56 tokens
- max: 60 tokens
|
- Samples:
| anchor |
positive |
negative |
What happens if we use petrol in diesel vehicles? |
Why can't we use petrol in diesel? |
Why are diesel engines noisier than petrol engines? |
Why is Saltwater taffy candy imported in Switzerland? |
Why is Saltwater taffy candy imported in Laos? |
Is salt a consumer product? |
Which is your favourite film in 2016? |
What movie is the best movie of 2016? |
What will the best movie of 2017 be? |
- Loss:
SpladeLoss with these parameters:{'loss': SparseMultipleNegativesRankingLoss(
(model): SparseEncoder(
(0): MLMTransformer({'max_seq_length': 256, 'do_lower_case': False}) with MLMTransformer model: DistilBertForMaskedLM
(1): SpladePooling({'pooling_strategy': 'max', 'activation_function': 'relu', 'word_embedding_dimension': None})
)
(cross_entropy_loss): CrossEntropyLoss()
), 'lambda_corpus': 3e-05, 'lambda_query': 5e-05}
Training Hyperparameters
Non-Default Hyperparameters
eval_strategy: steps
per_device_train_batch_size: 12
per_device_eval_batch_size: 12
learning_rate: 2e-05
num_train_epochs: 1
bf16: True
load_best_model_at_end: True
All Hyperparameters
Click to expand
overwrite_output_dir: False
do_predict: False
eval_strategy: steps
prediction_loss_only: True
per_device_train_batch_size: 12
per_device_eval_batch_size: 12
per_gpu_train_batch_size: None
per_gpu_eval_batch_size: None
gradient_accumulation_steps: 1
eval_accumulation_steps: None
torch_empty_cache_steps: None
learning_rate: 2e-05
weight_decay: 0.0
adam_beta1: 0.9
adam_beta2: 0.999
adam_epsilon: 1e-08
max_grad_norm: 1.0
num_train_epochs: 1
max_steps: -1
lr_scheduler_type: linear
lr_scheduler_kwargs: {}
warmup_ratio: 0.0
warmup_steps: 0
log_level: passive
log_level_replica: warning
log_on_each_node: True
logging_nan_inf_filter: True
save_safetensors: True
save_on_each_node: False
save_only_model: False
restore_callback_states_from_checkpoint: False
no_cuda: False
use_cpu: False
use_mps_device: False
seed: 42
data_seed: None
jit_mode_eval: False
use_ipex: False
bf16: True
fp16: False
fp16_opt_level: O1
half_precision_backend: auto
bf16_full_eval: False
fp16_full_eval: False
tf32: None
local_rank: 0
ddp_backend: None
tpu_num_cores: None
tpu_metrics_debug: False
debug: []
dataloader_drop_last: False
dataloader_num_workers: 0
dataloader_prefetch_factor: None
past_index: -1
disable_tqdm: False
remove_unused_columns: True
label_names: None
load_best_model_at_end: True
ignore_data_skip: False
fsdp: []
fsdp_min_num_params: 0
fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
fsdp_transformer_layer_cls_to_wrap: None
accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
deepspeed: None
label_smoothing_factor: 0.0
optim: adamw_torch
optim_args: None
adafactor: False
group_by_length: False
length_column_name: length
ddp_find_unused_parameters: None
ddp_bucket_cap_mb: None
ddp_broadcast_buffers: False
dataloader_pin_memory: True
dataloader_persistent_workers: False
skip_memory_metrics: True
use_legacy_prediction_loop: False
push_to_hub: False
resume_from_checkpoint: None
hub_model_id: None
hub_strategy: every_save
hub_private_repo: None
hub_always_push: False
gradient_checkpointing: False
gradient_checkpointing_kwargs: None
include_inputs_for_metrics: False
include_for_metrics: []
eval_do_concat_batches: True
fp16_backend: auto
push_to_hub_model_id: None
push_to_hub_organization: None
mp_parameters:
auto_find_batch_size: False
full_determinism: False
torchdynamo: None
ray_scope: last
ddp_timeout: 1800
torch_compile: False
torch_compile_backend: None
torch_compile_mode: None
include_tokens_per_second: False
include_num_input_tokens_seen: False
neftune_noise_alpha: None
optim_target_modules: None
batch_eval_metrics: False
eval_on_start: False
use_liger_kernel: False
eval_use_gather_object: False
average_tokens_across_devices: False
prompts: None
batch_sampler: batch_sampler
multi_dataset_batch_sampler: proportional
Training Logs
| Epoch |
Step |
Training Loss |
NanoClimateFEVER_dot_ndcg@10 |
NanoDBPedia_dot_ndcg@10 |
NanoFEVER_dot_ndcg@10 |
NanoFiQA2018_dot_ndcg@10 |
NanoHotpotQA_dot_ndcg@10 |
NanoMSMARCO_dot_ndcg@10 |
NanoNFCorpus_dot_ndcg@10 |
NanoNQ_dot_ndcg@10 |
NanoQuoraRetrieval_dot_ndcg@10 |
NanoSCIDOCS_dot_ndcg@10 |
NanoArguAna_dot_ndcg@10 |
NanoSciFact_dot_ndcg@10 |
NanoTouche2020_dot_ndcg@10 |
NanoBEIR_mean_dot_ndcg@10 |
| 0.1938 |
200 |
12.7715 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
| 0.3876 |
400 |
0.2719 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
| 0.5814 |
600 |
0.234 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
| 0.7752 |
800 |
0.2068 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
| 0.9690 |
1000 |
0.2041 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
| -1 |
-1 |
- |
0.1910 |
0.4008 |
0.6697 |
0.1975 |
0.4642 |
0.2890 |
0.1690 |
0.3056 |
0.9457 |
0.2640 |
0.2465 |
0.5013 |
0.3791 |
0.3864 |
Framework Versions
- Python: 3.9.22
- Sentence Transformers: 4.2.0.dev0
- Transformers: 4.52.1
- PyTorch: 2.6.0+cu124
- Accelerate: 1.7.0
- Datasets: 3.6.0
- Tokenizers: 0.21.1
Citation
BibTeX
Sentence Transformers
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}
SpladeLoss
@misc{formal2022distillationhardnegativesampling,
title={From Distillation to Hard Negative Sampling: Making Sparse Neural IR Models More Effective},
author={Thibault Formal and Carlos Lassance and Benjamin Piwowarski and Stéphane Clinchant},
year={2022},
eprint={2205.04733},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2205.04733},
}
SparseMultipleNegativesRankingLoss
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
FlopsLoss
@article{paria2020minimizing,
title={Minimizing flops to learn efficient sparse representations},
author={Paria, Biswajit and Yeh, Chih-Kuan and Yen, Ian EH and Xu, Ning and Ravikumar, Pradeep and P{'o}czos, Barnab{'a}s},
journal={arXiv preprint arXiv:2004.05665},
year={2020}
}