SentenceTransformer based on intfloat/multilingual-e5-small
This is a sentence-transformers model finetuned from intfloat/multilingual-e5-small. It maps sentences & paragraphs to a 384-dimensional dense vector space and can be used for retrieval.
Model Details
Model Description
- Model Type: Sentence Transformer
- Base model: intfloat/multilingual-e5-small
- Maximum Sequence Length: 512 tokens
- Output Dimensionality: 384 dimensions
- Similarity Function: Cosine Similarity
- Supported Modality: Text
Model Sources
- Documentation: Sentence Transformers Documentation
- Repository: Sentence Transformers on GitHub
- Hugging Face: Sentence Transformers on Hugging Face
Full Model Architecture
SentenceTransformer(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'BertModel'})
(1): Pooling({'embedding_dimension': 384, 'pooling_mode': 'mean', '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
queries = [
'2.21 de la Ley 8/2021, de 2 de junio.',
]
documents = [
'No podrán ser tutores:\n\n1.º Los que por resolución judicial estuvieran privados o suspendidos en el ejercicio de la patria potestad o, total o parcialmente, de los derechos de guarda y protección.\n\n2.º Los que hubieren sido legalmente removidos de una tutela, curatela o guarda anterior.\n\n> <small>Se modifica, con efectos de 3 de septiembre de 2021, por el art. 2.21 de la Ley 8/2021, de 2 de junio. [Ref. BOE-A-2021-9233#as](https://www.boe.es/buscar/doc.php?id=BOE-A-2021-9233)</small>\n\n> <small>Se añade un párrafo por el art. 2.25 de la Ley 26/2015, de 28 de julio. [Ref. BOE-A-2015-8470#asegundo](https://www.boe.es/buscar/doc.php?id=BOE-A-2015-8470).</small>\n\n> <small>Se añade el segundo párrafo por la disposición final 13 de la Ley Orgánica 1/1996, de 15 de enero. [Ref. BOE-A-1996-1069](https://www.boe.es/buscar/doc.php?id=BOE-A-1996-1069).</small>\n\n> <small>Se modifica por el art. 1 de la Ley 13/1983, de 24 de octubre. [Ref. BOE-A-1983-28123](https://www.boe.es/buscar/doc.php?id=BOE-A-1983-28123).</small>',
'1. La Entidad Pública podrá delegar la guarda de un menor declarado en situación de desamparo en las personas que, reuniendo los requisitos de capacidad para adoptar previstos en el artículo 175 y habiendo prestado su consentimiento, hayan sido preparadas, declaradas idóneas y asignadas para su adopción. A tal efecto, la Entidad Pública, con anterioridad a la presentación de la propuesta de adopción, delegará la guarda con fines de adopción hasta que se dicte la resolución judicial de adopción, mediante resolución administrativa debidamente motivada, previa audiencia de los afectados y del menor si tuviere suficiente madurez y, en todo caso, si fuere mayor de doce años, que se notificará a los progenitores o tutores no privados de la patria potestad o tutela.\n\nLos guardadores con fines de adopción tendrán los mismos derechos y obligaciones que los acogedores familiares.\n\n2. Salvo que convenga otra cosa al interés del menor, la Entidad Pública procederá a suspender el régimen de visitas y relaciones con la familia de origen cuando se inicie el período de convivencia preadoptiva a que se refiere el apartado anterior, excepto en los casos previstos en el artículo 178.4.\n\n3. La propuesta de adopción al Juez tendrá que realizarse en el plazo más breve posible y, en todo caso, antes de transcurridos tres meses desde el día en el que se hubiera acordado la delegación de guarda con fines de adopción. No obstante, cuando la Entidad Pública considere necesario, en función de la edad y circunstancias del menor, establecer un período de adaptación del menor a la familia, dicho plazo de tres meses podrá prorrogarse hasta un máximo de un año.\n\nEn el supuesto de que el Juez no considerase procedente esa adopción, la Entidad Pública deberá determinar la medida protectora más adecuada para el menor.\n\n> <small>Se añade por el art. 2.21 de la Ley 26/2015, de 28 de julio. [Ref. BOE-A-2015-8470#asegundo](https://www.boe.es/buscar/doc.php?id=BOE-A-2015-8470).</small>',
'**(Derogado)**\n\n> <small>Se deroga, con efectos de 3 de septiembre de 2021, por la disposición derogatoria única.3 de la Ley 8/2021, de 2 de junio. [Ref. BOE-A-2021-9233#dd](https://www.boe.es/buscar/doc.php?id=BOE-A-2021-9233)</small>\n\n> <small>Se modifica por el art. 4 de la Ley 11/1981, de 13 de mayo. [Ref. BOE-A-1981-11198](https://www.boe.es/buscar/doc.php?id=BOE-A-1981-11198).</small>\n\n> <small>Se modifica por el art. 2 del Real Decreto-ley 33/1978, de 16 de noviembre. [Ref. BOE-A-1978-28627](https://www.boe.es/buscar/doc.php?id=BOE-A-1978-28627).</small>',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 384] [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.4079, 0.1891, 0.1669]])
Evaluation
Metrics
Information Retrieval
- Dataset:
val - Evaluated with InformationRetrievalEvaluator
| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.4174 |
| cosine_accuracy@5 | 0.6776 |
| cosine_accuracy@20 | 0.8256 |
| cosine_precision@1 | 0.4174 |
| cosine_precision@3 | 0.202 |
| cosine_precision@5 | 0.1355 |
| cosine_precision@10 | 0.0759 |
| cosine_recall@1 | 0.4174 |
| cosine_recall@3 | 0.606 |
| cosine_recall@5 | 0.6776 |
| cosine_recall@10 | 0.7586 |
| cosine_ndcg@10 | 0.584 |
| cosine_mrr@10 | 0.5285 |
| cosine_map@100 | 0.5358 |
Training Details
Training Dataset
Unnamed Dataset
- Size: 425,952 training samples
- Columns: anchor and positive
- Approximate statistics based on the first 100 samples:
anchor positive type string string modality text text details min: 13 tokensmean: 45.0 tokensmax: 106 tokens min: 35 tokensmean: 277.77 tokensmax: 512 tokens - Samples:
anchor positive Cárlos III como Rey de Nápoles, se reputarán siempre como extrangeros; su uso no atribuye ninguno de los derechos y prerogativas concedidos á los de Castilla; la sucesión se gobernará por las leyes particulares de la concesión ó por las generales del país en que esta se hizo. Todos los títulos concedidos por Monarcas y Gobiernos extrangeros, inclusos los otorgados por mi augusto Abuelo el Sr. D. Cárlos III como Rey de Nápoles, se reputarán siempre como extrangeros; su uso no atribuye ninguno de los derechos y prerogativas concedidos á los de Castilla; la sucesión se gobernará por las leyes particulares de la concesión ó por las generales del país en que esta se hizo. Todos los títulos concedidos por Monarcas y Gobiernos extrangeros, inclusos los otorgados por mi augusto Abuelo el Sr. Todos los títulos concedidos por Monarcas y Gobiernos extrangeros, inclusos los otorgados por mi augusto Abuelo el Sr. D. Cárlos III como Rey de Nápoles, se reputarán siempre como extrangeros; su uso no atribuye ninguno de los derechos y prerogativas concedidos á los de Castilla; la sucesión se gobernará por las leyes particulares de la concesión ó por las generales del país en que esta se hizo. No podrá usarse en España título alguno extrangero sin la competente autorización; y están obligados á obtenerla todos y cada uno de los sucesores en dichos títulos. No podrá usarse en España título alguno extrangero sin la competente autorización; y están obligados á obtenerla todos y cada uno de los sucesores en dichos títulos. Se exceptúan de las disposiciones de este artículo los Embajadores y Ministros y representantes de otras Córtes y los extrangeros transeúntes. - Loss: MatryoshkaLoss with these parameters:
{ "loss": "CachedMultipleNegativesRankingLoss", "matryoshka_dims": [ 384, 256, 128, 64 ], "matryoshka_weights": [ 1, 1, 1, 1 ], "n_dims_per_step": -1 }
Training Hyperparameters
Non-Default Hyperparameters
per_device_train_batch_size: 128num_train_epochs: 1learning_rate: 2e-05warmup_steps: 0.1weight_decay: 0.01bf16: Trueload_best_model_at_end: Truebatch_sampler: no_duplicates
All Hyperparameters
per_device_train_batch_size: 128num_train_epochs: 1max_steps: -1learning_rate: 2e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0.1optim: adamw_torch_fusedoptim_args: Noneweight_decay: 0.01adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 1average_tokens_across_devices: Truemax_grad_norm: 1.0label_smoothing_factor: 0.0bf16: Truefp16: 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: Nonetrackio_bucket_id: Nonetrackio_static_space_id: Noneper_device_eval_batch_size: 8prediction_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: Trueignore_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_static_graph: Noneddp_backend: Noneddp_timeout: 1800fsdp: Nonefsdp_config: Nonedeepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: Nonelocal_rank: -1prompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}
Training Logs
| Epoch | Step | Training Loss | val_cosine_ndcg@10 |
|---|---|---|---|
| 0.0300 | 100 | 9.2942 | - |
| 0.0601 | 200 | 2.3167 | - |
| 0.0901 | 300 | 1.7705 | - |
| 0.1202 | 400 | 1.5870 | - |
| 0.1502 | 500 | 1.4216 | - |
| 0.1803 | 600 | 1.3677 | - |
| 0.2103 | 700 | 1.2523 | - |
| 0.2404 | 800 | 1.1705 | - |
| 0.2704 | 900 | 1.1656 | - |
| 0.3005 | 1000 | 1.1691 | - |
| 0.3305 | 1100 | 1.1411 | - |
| 0.3606 | 1200 | 1.1165 | - |
| 0.3906 | 1300 | 1.0873 | - |
| 0.4207 | 1400 | 1.0562 | - |
| 0.4507 | 1500 | 1.0351 | - |
| 0.4808 | 1600 | 1.0777 | - |
| 0.5108 | 1700 | 1.0003 | - |
| 0.5409 | 1800 | 1.0850 | - |
| 0.5709 | 1900 | 0.9633 | - |
| 0.601 | 2000 | 1.042 | 0.5917 |
| 0.6310 | 2100 | 0.9698 | - |
| 0.6611 | 2200 | 0.9985 | - |
| 0.6911 | 2300 | 0.9828 | - |
| 0.7212 | 2400 | 0.9673 | - |
| 0.7512 | 2500 | 0.9472 | - |
| 0.7812 | 2600 | 0.9963 | - |
| 0.8113 | 2700 | 0.9312 | - |
| 0.8413 | 2800 | 0.9180 | - |
| 0.8714 | 2900 | 0.9174 | - |
| 0.9014 | 3000 | 0.9176 | - |
| 0.9315 | 3100 | 0.9384 | - |
| 0.9615 | 3200 | 0.8927 | - |
| 0.9916 | 3300 | 0.9708 | - |
| 1.0 | 3328 | - | 0.5840 |
- The bold row denotes the saved checkpoint.
Training Time
- Training: 1.1 hours
- Evaluation: 9.0 minutes
- Total: 1.3 hours
Framework Versions
- Python: 3.12.10
- Sentence Transformers: 5.6.0
- Transformers: 5.12.1
- PyTorch: 2.12.1+cu130
- Accelerate: 1.14.0
- Datasets: 5.0.0
- 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",
}
MatryoshkaLoss
@misc{kusupati2024matryoshka,
title={Matryoshka Representation Learning},
author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
year={2024},
eprint={2205.13147},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
CachedMultipleNegativesRankingLoss
@misc{gao2021scaling,
title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
year={2021},
eprint={2101.06983},
archivePrefix={arXiv},
primaryClass={cs.LG}
}