The hard-negative bag-of-documents reranker:
all-MiniLM-L6-v2fine-tuned with MultipleNegativesRankingLoss on bag-derived pairs mined with FAISS hard negatives (Amazon ESCI). Part of the bag-of-documents retrieval research; see the live demo.
SentenceTransformer based on sentence-transformers/all-MiniLM-L6-v2
This is a sentence-transformers model finetuned from sentence-transformers/all-MiniLM-L6-v2. It maps sentences & paragraphs to a 384-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
Model Details
Model Description
- Model Type: Sentence Transformer
- Base model: sentence-transformers/all-MiniLM-L6-v2
- Maximum Sequence Length: 256 tokens
- Output Dimensionality: 384 dimensions
- Similarity Function: Cosine Similarity
Model Sources
- Documentation: Sentence Transformers Documentation
- Repository: Sentence Transformers on GitHub
- Hugging Face: Sentence Transformers on Hugging Face
Full Model Architecture
SentenceTransformer(
(0): Transformer({'max_seq_length': 256, 'do_lower_case': False, 'architecture': 'BertModel'})
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Normalize()
)
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 SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("sentence_transformers_model_id")
# Run inference
sentences = [
'course coffee grinder',
'Bodum BISTRO Blade Grinder, Electric Blade Coffee Grinder, Black',
'Hamilton Beach Fresh Grind Electric Coffee Grinder for Beans, Spices and More, Stainless Steel Blades, Removable Chamber, Makes up to 12 Cups, Black',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.6150, 0.5448],
# [0.6150, 1.0000, 0.7990],
# [0.5448, 0.7990, 1.0000]])
Training Details
Training Dataset
Unnamed Dataset
- Size: 337,969 training samples
- Columns: sentence_0, sentence_1, and sentence_2
- Approximate statistics based on the first 1000 samples:
sentence_0 sentence_1 sentence_2 type string string string details min: 3 tokensmean: 6.52 tokensmax: 23 tokens min: 4 tokensmean: 29.41 tokensmax: 86 tokens min: 3 tokensmean: 23.74 tokensmax: 73 tokens - Samples:
sentence_0 sentence_1 sentence_2 mens sweater burgundy medium Shephe 4 Ply Men's V Neck Cashmere Sweater Burgundy XXX-Large Amazon Essentials Men's Standard Crewneck Sweater, Burgundy, XS shoe covers Yueiehe 5 Pairs (10 Pieces) Multi-Function Dust Duster Mop Slippers Shoes Cover, Soft Washable Reusable Microfiber Foot Socks Floor Cleaning Tools Shoe Cover Nirohee Silicone Shoes Covers, Shoe Covers, Rain Boots Reusable Easy to Carry for Women, Men, Kids. (Black, L) wrench organizer drawer ABN Magnetic Wrench Organizer - 4 Piece Tool Box Drawer Organizer Tray Wrench Rack Magnetic Tool Box Accessories Whitmor 6-Section Clear Drawer Organizer - Loss: MultipleNegativesRankingLoss with these parameters:
{ "scale": 20.0, "similarity_fct": "cos_sim", "gather_across_devices": false, "directions": [ "query_to_doc" ], "partition_mode": "joint", "hardness_mode": null, "hardness_strength": 0.0 }
Training Hyperparameters
Non-Default Hyperparameters
per_device_train_batch_size: 64per_device_eval_batch_size: 64multi_dataset_batch_sampler: round_robin
All Hyperparameters
per_device_train_batch_size: 64num_train_epochs: 3max_steps: -1learning_rate: 5e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0optim: adamw_torch_fusedoptim_args: Noneweight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 1average_tokens_across_devices: Truemax_grad_norm: 1label_smoothing_factor: 0.0bf16: Falsefp16: Falsebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Nonetorch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneuse_liger_kernel: Falseliger_kernel_config: Noneuse_cache: Falseneftune_noise_alpha: Nonetorch_empty_cache_steps: Noneauto_find_batch_size: Falselog_on_each_node: Truelogging_nan_inf_filter: Trueinclude_num_input_tokens_seen: nolog_level: passivelog_level_replica: warningdisable_tqdm: Falseproject: huggingfacetrackio_space_id: trackioeval_strategy: noper_device_eval_batch_size: 64prediction_loss_only: Trueeval_on_start: Falseeval_do_concat_batches: Trueeval_use_gather_object: Falseeval_accumulation_steps: Noneinclude_for_metrics: []batch_eval_metrics: Falsesave_only_model: Falsesave_on_each_node: Falseenable_jit_checkpoint: Falsepush_to_hub: Falsehub_private_repo: Nonehub_model_id: Nonehub_strategy: every_savehub_always_push: Falsehub_revision: Noneload_best_model_at_end: Falseignore_data_skip: Falserestore_callback_states_from_checkpoint: Falsefull_determinism: Falseseed: 42data_seed: Noneuse_cpu: Falseaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedataloader_drop_last: Falsedataloader_num_workers: 0dataloader_pin_memory: Truedataloader_persistent_workers: Falsedataloader_prefetch_factor: Noneremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_backend: Noneddp_timeout: 1800fsdp: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}deepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: Nonelocal_rank: -1prompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robinrouter_mapping: {}learning_rate_mapping: {}
Training Logs
| Epoch | Step | Training Loss |
|---|---|---|
| 0.0947 | 500 | 1.9500 |
| 0.1894 | 1000 | 1.5351 |
| 0.2840 | 1500 | 1.4213 |
| 0.3787 | 2000 | 1.3370 |
| 0.4734 | 2500 | 1.2762 |
| 0.5681 | 3000 | 1.2182 |
| 0.6628 | 3500 | 1.1795 |
| 0.7574 | 4000 | 1.1409 |
| 0.8521 | 4500 | 1.1297 |
| 0.9468 | 5000 | 1.0969 |
| 1.0415 | 5500 | 1.0346 |
| 1.1361 | 6000 | 0.9986 |
| 1.2308 | 6500 | 0.9855 |
| 1.3255 | 7000 | 0.9591 |
| 1.4202 | 7500 | 0.9544 |
| 1.5149 | 8000 | 0.9485 |
| 1.6095 | 8500 | 0.9268 |
| 1.7042 | 9000 | 0.9330 |
| 1.7989 | 9500 | 0.9160 |
| 1.8936 | 10000 | 0.9020 |
| 1.9883 | 10500 | 0.8954 |
| 2.0829 | 11000 | 0.8412 |
| 2.1776 | 11500 | 0.8448 |
| 2.2723 | 12000 | 0.8289 |
| 2.3670 | 12500 | 0.8343 |
| 2.4617 | 13000 | 0.8356 |
| 2.5563 | 13500 | 0.8208 |
| 2.6510 | 14000 | 0.8272 |
| 2.7457 | 14500 | 0.8042 |
| 2.8404 | 15000 | 0.8145 |
| 2.9351 | 15500 | 0.8171 |
Framework Versions
- Python: 3.14.4
- Sentence Transformers: 5.3.0
- Transformers: 5.4.0
- PyTorch: 2.11.0
- Accelerate: 1.13.0
- Datasets: 4.8.4
- Tokenizers: 0.22.2
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",
}
MultipleNegativesRankingLoss
@misc{oord2019representationlearningcontrastivepredictive,
title={Representation Learning with Contrastive Predictive Coding},
author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
year={2019},
eprint={1807.03748},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/1807.03748},
}