SentenceTransformer based on sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

This is a sentence-transformers model finetuned from sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2. It maps sentences & paragraphs to a 384-dimensional dense vector space and can be used for retrieval.

Model Details

Model Description

Model Sources

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})
)

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 = [
    "Quelles sont les types de mises à jour régies par l'article L224-25-24 du Code de la Consommation ?",
    "Les mises à jour d'un contenu numérique ou d'un service numérique sont régies par la présente sous-section. Pour l'application de la présente sous-section, on entend par mises à jour, les mises à jour ou les modifications visant à maintenir, adapter ou faire évoluer les fonctionnalités du contenu numérique ou du service numérique, y compris les mises à jour de sécurité, que ces mises à jour soient nécessaires ou non au maintien de la conformité du contenu ou service numérique.",
    "Lorsque le corps d'une personne décédée est retrouvé et peut être identifié, un acte de décès doit être dressé par l'officier de l'état civil du lieu présumé du décès, quel que soit le temps écoulé entre le décès et la découverte du corps. Si le défunt ne peut être identifié, l'acte de décès doit comporter son signalement le plus complet ; en cas d'identification ultérieure, l'acte est rectifié dans les conditions prévues à l'article 99-1 du présent code. L'officier d'état civil informe sans délai le procureur de la République du décès, afin qu'il puisse prendre les réquisitions nécessaires aux fins d'établir l'identité du défunt.",
]
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.7270, -0.0635],
#         [ 0.7270,  1.0000,  0.0301],
#         [-0.0635,  0.0301,  1.0000]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.73
cosine_accuracy@3 0.9036
cosine_accuracy@5 0.9504
cosine_accuracy@10 0.978
cosine_precision@1 0.73
cosine_precision@3 0.3012
cosine_precision@5 0.1901
cosine_precision@10 0.0978
cosine_recall@1 0.73
cosine_recall@3 0.9036
cosine_recall@5 0.9504
cosine_recall@10 0.978
cosine_ndcg@10 0.8633
cosine_mrr@10 0.8255
cosine_map@100 0.8263

Training Details

Training Dataset

Unnamed Dataset

  • Size: 6,531 training samples
  • Columns: anchor and positive
  • Approximate statistics based on the first 1000 samples:
    anchor positive
    type string string
    details
    • min: 14 tokens
    • mean: 29.29 tokens
    • max: 50 tokens
    • min: 11 tokens
    • mean: 88.05 tokens
    • max: 128 tokens
  • Samples:
    anchor positive
    Quelles sont les raisons pour lesquelles une partie peut être déclarée irrecevable dans une procédure civile ? Constitue une fin de non-recevoir tout moyen qui tend à faire déclarer l'adversaire irrecevable en sa demande, sans examen au fond, pour défaut de droit d'agir, tel le défaut de qualité, le défaut d'intérêt, la prescription, le délai préfix, la chose jugée.
    Quelles sont les obligations des parties en matière de mesures d'instruction selon l'article 11 du Code de Procédure Civile ? Les parties sont tenues d'apporter leur concours aux mesures d'instruction sauf au juge à tirer toute conséquence d'une abstention ou d'un refus. Si une partie détient un élément de preuve, le juge peut, à la requête de l'autre partie, lui enjoindre de le produire, au besoin à peine d'astreinte. Il peut, à la requête de l'une des parties, demander ou ordonner, au besoin sous la même peine, la production de tous documents détenus par des tiers s'il n'existe pas d'empêchement légitime.
    Quelles sont les causes de récusation d'un juge selon l'article 341 du Code de Procédure Civile ? Sauf disposition particulière, la récusation d'un juge est admise pour les causes prévues par l'article L. 111-6 du code de l'organisation judiciaire.
  • 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: 128
  • learning_rate: 2e-05
  • num_train_epochs: 25
  • warmup_steps: 127
  • fp16: True
  • load_best_model_at_end: True

All Hyperparameters

Click to expand
  • do_predict: False
  • prediction_loss_only: True
  • per_device_train_batch_size: 128
  • per_device_eval_batch_size: 8
  • 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: 25
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_ratio: None
  • warmup_steps: 127
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • enable_jit_checkpoint: False
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • use_cpu: False
  • seed: 42
  • data_seed: None
  • bf16: False
  • fp16: True
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: -1
  • ddp_backend: None
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • group_by_length: False
  • length_column_name: length
  • project: huggingface
  • trackio_space_id: trackio
  • 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
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • auto_find_batch_size: False
  • full_determinism: False
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_num_input_tokens_seen: no
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: True
  • use_cache: False
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss lexai-juridique_cosine_ndcg@10
-1 -1 - 0.6606
0.9615 50 1.0566 -
1.0 52 - 0.7910
1.9231 100 0.5243 -
2.0 104 - 0.8299
2.8846 150 0.3634 -
3.0 156 - 0.8432
3.8462 200 0.2632 -
4.0 208 - 0.8424
4.8077 250 0.2096 -
5.0 260 - 0.8541
5.7692 300 0.1761 -
6.0 312 - 0.8542
6.7308 350 0.1477 -
7.0 364 - 0.8600
7.6923 400 0.1433 -
8.0 416 - 0.8596
8.6538 450 0.1146 -
9.0 468 - 0.8631
9.6154 500 0.1088 -
10.0 520 - 0.8632
10.5769 550 0.1055 -
11.0 572 - 0.8627
11.5385 600 0.0909 -
12.0 624 - 0.8620
12.5 650 0.0924 -
13.0 676 - 0.8605
13.4615 700 0.0922 -
14.0 728 - 0.8593
14.4231 750 0.0808 -
15.0 780 - 0.8633
15.3846 800 0.0810 -
16.0 832 - 0.8604
16.3462 850 0.0762 -
17.0 884 - 0.8608
17.3077 900 0.0738 -
18.0 936 - 0.8593
18.2692 950 0.0772 -
19.0 988 - 0.8604
19.2308 1000 0.0793 -
20.0 1040 - 0.8610
20.1923 1050 0.0676 -
21.0 1092 - 0.8582
21.1538 1100 0.0685 -
22.0 1144 - 0.8560
22.1154 1150 0.0771 -
23.0 1196 - 0.8589
23.0769 1200 0.0723 -
24.0 1248 - 0.8582
24.0385 1250 0.0727 -
25.0 1300 0.0682 0.8570
-1 -1 - 0.8633
  • The bold row denotes the saved checkpoint.

Training Time

  • Training: 4.3 minutes

Framework Versions

  • Python: 3.12.13
  • Sentence Transformers: 5.4.1
  • Transformers: 5.0.0
  • PyTorch: 2.10.0+cu128
  • Accelerate: 1.13.0
  • Datasets: 4.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",
}

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},
}
Downloads last month
19
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for DrProfessor/lexai-embeddings

Papers for DrProfessor/lexai-embeddings

Evaluation results