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

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 = [
    'Ik ga scheiden. Ik scheid wegens onherstelbare ontwrichting. In welke gevallen kies ik voor een scheiding wegens onherstelbare ontwrichting?',
    'Art. 1256. Op ieder ogenblik kunnen de partijen de rechter verzoeken hun overeenkomsten te homologeren over de voorlopige maatregelen met betrekking tot de persoon, het levensonderhoud en de goederen van de echtgenoten of van hun kinderen. Hij kan weigeren de overeenkomst te homologeren als deze duidelijk in strijd is met het belang van de kinderen. Bij gebrek aan een overeenkomst of in geval van een gedeeltelijke overeenkomst, verwijst de rechter de zaak op verzoek van één van de partijen naar de eerste nuttige zitting in het kader van de zaken die worden geacht spoedeisend te zijn of van de zaken waarvoor de spoedeisendheid wordt aangevoerd in de zin van artikel 1253ter/4. Artikel 803 is van toepassing',
    'Art. 248. - Beginselen § 1. Indien de huurder, behoudens de zekerheden waarin onder meer voorzien in artikel 1752 van het Burgerlijk Wetboek, om de naleving van zijn verplichtingen te waarborgen, één van de in het volgende lid bepaalde vormen van waarborgen verstrekt, mag die niet meer bedragen dan het bedrag dat gelijk is aan twee of drie maanden huur, naargelang de vorm van de huurwaarborg. § 2. De in paragraaf 1 vermelde waarborgen kunnen naar keuze van de huurder drie vormen aannemen : 1° een geïndividualiseerde rekening op naam van de huurder bij een financiële instelling ; 2° een bankwaarborg die het de huurder mogelijk maakt de waarborg progressief samen te stellen ; 3° een bankwaarborg ten gevolge van een standaardcontract tussen een OCMW en een financiële instelling. § 3. Wanneer de huurder kiest voor een geïndividualiseerde rekening, mag de huurwaarborg niet meer bedragen dan een bedrag gelijk aan twee maanden huur. De opgebrachte rente wordt gekapitaliseerd ten bate van de huurder en de verhuurder verwerft voorrecht op de activa van de rekening voor elke schuldvordering ten gevolge van het volledig of gedeeltelijk niet nakomen van de verplichtingen van de huurder. § 4. Wanneer de huurder kiest voor een bankwaarborg, waarbij hij zich er in voorkomend geval toe verbindt die volledig samen te stellen middels constante maandelijkse afbetalingen gedurende de duur van de huurovereenkomst, met een maximumduur van drie jaar, is deze gelijk aan een bedrag van maximaal drie maanden huur. De financiële instelling moet die zijn waar de huurder in voorkomend geval zijn rekening heeft en waar zijn beroeps- of vervangingsinkomsten op worden gestort. Indien de huurder stopt met het storten van zijn beroeps- of vervangingsinkomens bij de desbetreffende instelling, is die gerechtigd om de integrale en onmiddellijke samenstelling van de waarborg te eisen, onverminderd de mogelijkheid om die over te brengen naar een andere financiële instelling. Niettegenstaande de wet van 25 april 2014 op het statuut van en het toezicht op de kredietinstellingen en beursvennootschappen, kan een financiële instelling deze waarborg niet weigeren om redenen die verband houden met de kredietwaardigheid van de huurder. Hoofdstuk I van titel IV van Boek VII van het Wetboek van Economisch Recht betreffende het consumentenkrediet is niet van toepassing. De Regering kan de nadere regels bepalen inzake de verplichting voor de financiële instelling om een huurwaarborg samen te stellen in het geval dat een kandidaat- huurder ? op het moment van zijn aanvraag, gebonden is door meer dan één andere samenstellingsverplichting voor huurwaarborgen die voorheen toegekend werden. De huurder zal geen enkele debetrente verschuldigd zijn aan de financiële instelling, die hem rente zal uitkeren vanaf de dag dat de waarborg volledig is samengesteld. De financiële instelling beschikt over de voorrechten van het gemeen recht ten overstaande van de huurder in geval hij zijn verplichting om de waarborg progressief samen te stellen, niet naleeft. § 5. Wanneer de huurder kiest voor een bankwaarborg die gelijk is aan een bedrag van maximaal drie maanden huur ten gevolge van een standaardcontract tussen een OCMW en een financiële instelling, is het dat OCMW dat daar om verzoekt bij de financiële instelling, die de waarborg toestaat ten gunste van de verhuurder. § 6. De Regering legt het formulier vast waarmee de financiële instellingen ten aanzien van de verhuurders zullen bevestigen dat de huurwaarborg toegekend is, ongeacht de manier waarop deze waarborg wordt gevormd',
]
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.5528, 0.1048],
#         [0.5528, 1.0000, 0.1227],
#         [0.1048, 0.1227, 1.0000]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.2416
cosine_accuracy@3 0.3652
cosine_accuracy@5 0.427
cosine_accuracy@10 0.5449
cosine_precision@1 0.2416
cosine_precision@3 0.191
cosine_precision@5 0.1697
cosine_precision@10 0.1489
cosine_recall@1 0.1034
cosine_recall@3 0.1819
cosine_recall@5 0.2372
cosine_recall@10 0.3664
cosine_ndcg@10 0.3122
cosine_mrr@10 0.3263
cosine_map@100 0.2787

Training Details

Training Dataset

Unnamed Dataset

  • Size: 4,450 training samples
  • Columns: sentence_0 and sentence_1
  • Approximate statistics based on the first 1000 samples:
    sentence_0 sentence_1
    type string string
    details
    • min: 9 tokens
    • mean: 31.92 tokens
    • max: 98 tokens
    • min: 28 tokens
    • mean: 193.27 tokens
    • max: 256 tokens
  • Samples:
    sentence_0 sentence_1
    Waar kan ik een minnelijke schuldbemiddelaar vinden? Art. 123. Niettegenstaande de naleving van bovenvermelde voorwaarden kan de Minister van Sociale Actie de erkenning weigeren aan instellingen : 1° indien wordt vastgesteld dat zij of één van hun organen, gemachtigden of aangestelden blijk geven van een gebrek aan eerbaarheid of onbaatzuchtigheid; 2° binnen dewelke de functies van voorzitter, bestuurder, directeur of gemachtigde worden toevertrouwd aan een niet gerehabiliteerde persoon die veroordeeld werd tot een gevangenisstraf van minstens één maand, zelfs met uitstel, voor een overtreding bedoeld in het koninklijk besluit nr. 22 waarbij aan bepaalde veroordeelden en aan de gefailleerde verbod wordt opgelegd bepaalde ambten, beroepen of werkzaamheden uit te oefenen en waarbij aan de rechtbanken van koophandel de bevoegdheid wordt toegekend dergelijk verbod uit te spreken; 3° die niet voldoende zelfstandig zijn t.o.v. personen of instellingen die een activiteit van kredietgever of kredietbemiddelaar uitoefenen krachtens de wet van 12 ...
    Moet ik een advocaat nemen om de beslissing van een sociale zekerheidsinstelling in Wallonië aan te vechten? Art. 508/4. Het Rijk kent een subsidie toe aan de commissies voor juridische bijstand op basis van objectieve criteria, vastgesteld bij een in Ministerraad overlegd koninklijk besluit.
    Wat gebeurt er als ik mijn hypothecaire lening niet betaal? Art. 1625. Het hoger beroep wordt betekend aan de partij of aan de gekozen woonplaats. De beslagene kan in hoger beroep geen andere middelen voordragen dan die welke in eerste aanleg zijn aangevoerd. De akte van hoger beroep vermeldt de grieven, alles op straffe van nietigheid. Tegen arresten bij verstek staat geen verzet open.
  • 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 Method

The model was fine-tuned using MultipleNegativesRankingLoss, a contrastive learning objective commonly used for semantic retrieval tasks.

This approach encourages semantically similar query–document pairs to have closer embeddings.

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 22
  • per_device_eval_batch_size: 22
  • num_train_epochs: 10
  • multi_dataset_batch_sampler: round_robin

All Hyperparameters

Click to expand
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 22
  • per_device_eval_batch_size: 22
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 5e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1
  • num_train_epochs: 10
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_ratio: None
  • warmup_steps: 0
  • 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: False
  • 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: False
  • 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: round_robin
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss cosine_ndcg@10
1.0 203 - 0.1589
2.0 406 - 0.1761
2.4631 500 1.6902 -
3.0 609 - 0.2070
4.0 812 - 0.2415
4.9261 1000 0.9967 -
5.0 1015 - 0.2542
6.0 1218 - 0.2822
7.0 1421 - 0.2804
7.3892 1500 0.8399 -
8.0 1624 - 0.3082
9.0 1827 - 0.3105
9.8522 2000 0.7931 -
10.0 2030 - 0.3122

Framework Versions

  • Python: 3.12.13
  • Sentence Transformers: 5.3.0
  • 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
160
Safetensors
Model size
22.7M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Arash-Alborz/minilm-dutch-legal-retrieval

Finetuned
(823)
this model

Space using Arash-Alborz/minilm-dutch-legal-retrieval 1

Papers for Arash-Alborz/minilm-dutch-legal-retrieval

Evaluation results