SentenceTransformer

This is a sentence-transformers model trained. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

This model has been specifically finetuned for contradiction retrieval! It is therefore not suitable for regular similarity-based retrieval!

Model Description

  • Model Type: Sentence Transformer
  • Maximum Sequence Length: 8192 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'ModernBertModel'})
  (1): Pooling({'word_embedding_dimension': 768, '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})
)

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 = [
    '(1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).\n(2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek koga drugega, ki\nima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).',
    'Posameznik lahko isto stvar istočasno poseduje neposredno in posredno.',
    'Sodišče nikoli ne more odločati o poslu, ki presega redno upravljanje, brez soglasja vseh solastnikov.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.5774, 0.4022],
#         [0.5774, 1.0000, 0.2455],
#         [0.4022, 0.2455, 1.0000]])

Evaluation

Metrics

Semantic Similarity

Metric Value
pearson_cosine 0.0719
spearman_cosine 0.0193

Training Details

Training Dataset

Unnamed Dataset

  • Size: 1,174 training samples
  • Columns: anchor, positive, and label
  • Approximate statistics based on the first 1000 samples:
    anchor positive label
    type string string float
    details
    • min: 2 tokens
    • mean: 152.19 tokens
    • max: 1336 tokens
    • min: 13 tokens
    • mean: 63.45 tokens
    • max: 304 tokens
    • min: 1.0
    • mean: 1.0
    • max: 1.0
  • Samples:
    anchor positive label
    (1) Vsaka stranka v dvostranski pogodbi lahko prenese pogodbo nekomu tretjemu,
    ki postane s tem imetnik vseh njenih pravic in obveznosti iz te pogodbe, če v to privoli druga stranka.
    (2) S prenosom pogodbe preide pogodbeno razmerje med prenositeljem in drugo
    stranko na prevzemnika in drugo stranko takrat, ko druga stranka privoli v prenos; če je dala svojo privolitev vnaprej, pa takrat, ko je o prenosu obveščena.
    (3) Privolitev v prenos pogodbe je veljavna samo, če je dana v obliki, ki jo predpisuje
    zakon za sklenitev prenesene pogodbe.
    (4) Določbe o stranskih pravicah v zvezi s pogodbo o prevzemu dolga se smiselno
    uporabljajo tudi za prenos pogodbe.
    S prenosom pogodbe preide pogodbeno razmerje, pri čemer
    prenositelj jamči, da bo druga stranka izpolnila svoje obveznosti.
    1.0
    (1) Vsaka stranka v dvostranski pogodbi lahko prenese pogodbo nekomu tretjemu,
    ki postane s tem imetnik vseh njenih pravic in obveznosti iz te pogodbe, če v to privoli druga stranka.
    (2) S prenosom pogodbe preide pogodbeno razmerje med prenositeljem in drugo
    stranko na prevzemnika in drugo stranko takrat, ko druga stranka privoli v prenos; če je dala svojo privolitev vnaprej, pa takrat, ko je o prenosu obveščena.
    (3) Privolitev v prenos pogodbe je veljavna samo, če je dana v obliki, ki jo predpisuje
    zakon za sklenitev prenesene pogodbe.
    (4) Določbe o stranskih pravicah v zvezi s pogodbo o prevzemu dolga se smiselno
    uporabljajo tudi za prenos pogodbe.
    S prenosom pogodbe preide pogodbeno razmerje, pri čemer
    prenositelj jamči, da bo druga stranka izpolnila svoje obveznosti.
    1.0
    (1) Za škodo, ki jo povzroči delavec pri delu ali v zvezi z delom tretji osebi, odgovarja pravna ali fizična oseba, pri kateri je delavec delal takrat, ko je bila škoda povzročena, razen če dokaže, da je delavec v danih okoliščinah ravnal tako, kot je bilo treba.
    (2) Oškodovanec ima pravico zahtevati povrnitev škode tudi neposredno od delavca, če je ta škodo povzročil namenoma.
    (3) Kdor je oškodovancu povrnil škodo, ki jo je povzročil delavec namenoma ali iz hude malomarnosti, ima pravico zahtevati od delavca povrnitev plačanega zneska.
    (4) Ta pravica zastara v šestih mesecih od dneva, ko je bila odškodnina plačana.
    (5) Določba prvega odstavka tega člena ne posega v pravila o odgovornosti za škodo, ki izvira od nevarne stvari ali nevarne dejavnosti.
    Oškodovanec lahko vedno zahteva odškonino tako od delodajalca kot od delavca, njuna odgovornost je solidarna. 1.0
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "matryoshka_dims": [
            768
        ],
        "matryoshka_weights": [
            1
        ],
        "n_dims_per_step": -1
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 62 evaluation samples
  • Columns: anchor, positive, and label
  • Approximate statistics based on the first 62 samples:
    anchor positive label
    type string string float
    details
    • min: 2 tokens
    • mean: 105.61 tokens
    • max: 313 tokens
    • min: 22 tokens
    • mean: 63.13 tokens
    • max: 187 tokens
    • min: 1.0
    • mean: 1.0
    • max: 1.0
  • Samples:
    anchor positive label
    (1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).
    (2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek koga drugega, ki
    ima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).
    Posameznik lahko isto stvar istočasno poseduje neposredno in posredno. 1.0
    (1) Posest je neposredna dejanska oblast nad stvarjo (neposredna posest).
    (2) Posest ima tudi tisti, ki izvršuje dejansko oblast nad stvarjo prek koga drugega, ki
    ima neposredno posest iz kakršnegakoli pravnega naslova (posredna posest).
    Posameznik lahko isto stvar istočasno poseduje neposredno in posredno. 1.0
    Upravljavec videonadzornega sistema, ki izvaja videonadzor javnih površin, mora v primeru, ko videonadzorni sistem posname dogodek, ki ogroža zdravje ali življenje posameznika, o tem nemudoma obvestiti policijo ali drug pristojni subjekt. Upravljavec videonadzora ni dolžan obvestiti policije, če posnetek pokaže nevaren dogodek.
    1.0
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "matryoshka_dims": [
            768
        ],
        "matryoshka_weights": [
            1
        ],
        "n_dims_per_step": -1
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 16
  • warmup_ratio: 0.1
  • bf16: True
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 16
  • 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.0
  • num_train_epochs: 3
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • 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
  • use_cpu: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: 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
  • 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: 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
  • 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
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • 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: 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
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss Validation Loss validation-dev_spearman_cosine
0.3378 25 - 0.3447 0.0390
0.6757 50 - 0.2570 -0.0466
1.0135 75 - 0.2282 -0.0269
1.3514 100 0.3073 0.1797 0.0677
1.6892 125 - 0.2085 0.0184
2.0270 150 - 0.1725 0.0479
2.3649 175 - 0.1636 0.0183
2.7027 200 0.0371 0.1707 0.0193

Framework Versions

  • Python: 3.10.12
  • Sentence Transformers: 5.1.2
  • Transformers: 4.57.0.dev0
  • PyTorch: 2.9.0+cu128
  • Accelerate: 1.10.1
  • Datasets: 4.1.1
  • Tokenizers: 0.22.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",
}

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

MultipleNegativesRankingLoss

@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}
}
Downloads last month
20
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

Papers for labpt/SLawEmbed

Evaluation results