ModernBERT Embed base Legal Matryoshka

This is a sentence-transformers model finetuned from somosnlp-hackathon-2022/paraphrase-spanish-distilroberta on the json dataset. 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

Model Description

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 128, 'do_lower_case': False, 'architecture': 'RobertaModel'})
  (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("benja-d/paraphrase-spanish-distilroberta-finetuned-chatbot")
# Run inference
sentences = [
    ' ¿Qué es la transferencia Autofact?\nEs un servicio 100% online que permite el traspaso de dominio de un vehículo usado de forma digital, sin necesidad de acudir a oficinas ni gestionar documentos adicionales.\nTiene la misma validez legal que el Notario o ir al Registro Civil.\nPuedes transferir un vehículo las 24 hrs del día, los 7 días de la semana.\n\n\n',
    '¿Qué información se necesita para realizar una transferencia Autofact?',
    '¿Existen restricciones o requisitos especiales para transferir un auto heredado?',
]
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.7707, 0.0574],
#         [0.7707, 1.0001, 0.0791],
#         [0.0574, 0.0791, 1.0000]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.8667
cosine_accuracy@3 0.9
cosine_accuracy@5 0.9
cosine_accuracy@10 1.0
cosine_precision@1 0.8667
cosine_precision@3 0.8778
cosine_precision@5 0.86
cosine_precision@10 0.56
cosine_recall@1 0.1603
cosine_recall@3 0.4754
cosine_recall@5 0.7516
cosine_recall@10 0.9611
cosine_ndcg@10 0.9287
cosine_mrr@10 0.8976
cosine_map@100 0.9276

Information Retrieval

Metric Value
cosine_accuracy@1 0.8667
cosine_accuracy@3 0.9
cosine_accuracy@5 0.9
cosine_accuracy@10 1.0
cosine_precision@1 0.8667
cosine_precision@3 0.8778
cosine_precision@5 0.86
cosine_precision@10 0.55
cosine_recall@1 0.1603
cosine_recall@3 0.4754
cosine_recall@5 0.7516
cosine_recall@10 0.9486
cosine_ndcg@10 0.9207
cosine_mrr@10 0.8962
cosine_map@100 0.9247

Information Retrieval

Metric Value
cosine_accuracy@1 0.8667
cosine_accuracy@3 0.9
cosine_accuracy@5 0.9
cosine_accuracy@10 1.0
cosine_precision@1 0.8667
cosine_precision@3 0.8778
cosine_precision@5 0.86
cosine_precision@10 0.55
cosine_recall@1 0.1603
cosine_recall@3 0.4754
cosine_recall@5 0.7516
cosine_recall@10 0.9486
cosine_ndcg@10 0.9207
cosine_mrr@10 0.8962
cosine_map@100 0.9247

Information Retrieval

Metric Value
cosine_accuracy@1 0.9
cosine_accuracy@3 0.9333
cosine_accuracy@5 0.9667
cosine_accuracy@10 1.0
cosine_precision@1 0.9
cosine_precision@3 0.9111
cosine_precision@5 0.9067
cosine_precision@10 0.5767
cosine_recall@1 0.1659
cosine_recall@3 0.4921
cosine_recall@5 0.7877
cosine_recall@10 0.9847
cosine_ndcg@10 0.9594
cosine_mrr@10 0.9298
cosine_map@100 0.9545

Information Retrieval

Metric Value
cosine_accuracy@1 0.8667
cosine_accuracy@3 0.9
cosine_accuracy@5 0.9333
cosine_accuracy@10 1.0
cosine_precision@1 0.8667
cosine_precision@3 0.8778
cosine_precision@5 0.8733
cosine_precision@10 0.5667
cosine_recall@1 0.1603
cosine_recall@3 0.4754
cosine_recall@5 0.7627
cosine_recall@10 0.9722
cosine_ndcg@10 0.9376
cosine_mrr@10 0.9012
cosine_map@100 0.9327

Training Details

Training Dataset

json

  • Dataset: json
  • Size: 168 training samples
  • Columns: positive and anchor
  • Approximate statistics based on the first 168 samples:
    positive anchor
    type string string
    details
    • min: 46 tokens
    • mean: 98.52 tokens
    • max: 128 tokens
    • min: 6 tokens
    • mean: 14.61 tokens
    • max: 32 tokens
  • Samples:
    positive anchor
    ¿Que precio o costo tiene la transferencia de un vehículo en Autofact?
    Al transferir un vehículo con Autofact pagas los mismos costos que un proceso de transferencia habitual.
    El arancel de la institución oficial estatal: $36.030 pesos.
    El valor del servicio de transferencia Autofact es de $59.990 e incluye el certificado de anotaciones (CAV) del vehículo.
    El impuesto a la transferencia: 1,5% del valor de compra del vehículo o 1,5% de la tasación fiscal del vehículo (se cobra el mayor valor). Por ejemplo, si tu auto tiene una tasación fiscal de $5.000.000 y se vende a $6.000.000, tendrás que pagar $90.000 de impuestos (1,5% del precio de venta). En caso que el precio de venta fuese $4.000.000, tendrás que pagar $75.000 de impuestos (1,5% de la tasación fiscal).
    En total, debes sumar los siguientes montos:
    36.030 + 59.990 + 1,5% del valor mayor entre el precio del vehículo o la tasación del mismo.
    Si eres el comprador, puedes agregar el servicio de TAG a domicilio a tu transferencia,...
    ¿Cuál es el costo de transferir un vehículo a través de Autofact?
    ¿Que documentos necesito para transferir de un vehículo en Autofact?
    Al hacer el cambio de propietario de un auto o moto, necesitas algunos documentos para poder llevar a cabo el trámite de la transferencia de dominio vehicular. En el caso de Autofact, se requieren los siguientes:

    Cédulas de identidad al día de comprador/es y vendedor/es.
    Último permiso de circulación pagado. (no importa si esta atrasado)
    Si una o ambas partes es extranjera, debes considerar lo siguiente:

    La cédula de identidad debe estar vigente. Si está vencida, se requiere haber ingresado a trámite una solicitud de cambio o prórroga de visación de residente o permanencia definitiva ante el departamento de Extranjería y Migración del Ministerio del Interior y Seguridad Pública.
    No es posible firmar con pasaporte. Si no se tiene carnet de identidad, es necesario poseer un RUT de inversionista del Servicio de Impuestos Internos (SII).

    Si el cliente es diplomático, puede comprar o vender sin problemas y debe firmar ...
    ¿Que documentos necesito para transferir de un vehículo en Autofact?
    ¿Se puede transferir con poder notarial?
    Autofact puede gestionar sin problemas contratos en los que una persona firme en representación del propietario que vende o del nuevo propietario que compra.
    Ambos casos será requerido un poder notarial donde el comprador o vendedor otorgue la facultad a su representante de realizar el proceso.

    ¿Cuál es el procedimiento para transferir un vehículo?
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "matryoshka_dims": [
            768,
            512,
            256,
            128,
            64
        ],
        "matryoshka_weights": [
            1,
            1,
            1,
            1,
            1
        ],
        "n_dims_per_step": -1
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: epoch
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 2
  • gradient_accumulation_steps: 2
  • learning_rate: 2e-05
  • num_train_epochs: 13
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.1
  • bf16: True
  • tf32: True
  • load_best_model_at_end: True
  • optim: adamw_torch_fused
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 2
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 2
  • 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: 13
  • max_steps: -1
  • lr_scheduler_type: cosine
  • 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
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: True
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: True
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • 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: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • adafactor: False
  • 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_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • 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: False
  • 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: False
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss dim_768_cosine_ndcg@10 dim_512_cosine_ndcg@10 dim_256_cosine_ndcg@10 dim_128_cosine_ndcg@10 dim_64_cosine_ndcg@10
0.4762 10 2.6476 - - - - -
0.9524 20 3.2114 - - - - -
1.0 21 - 0.6559 0.6317 0.5960 0.5775 0.5818
1.4286 30 0.9787 - - - - -
1.9048 40 0.8942 - - - - -
2.0 42 - 0.7643 0.7643 0.7643 0.7643 0.7207
2.3810 50 0.0919 - - - - -
2.8571 60 0.2104 - - - - -
3.0 63 - 0.8242 0.8242 0.7968 0.7760 0.7760
3.3333 70 0.0221 - - - - -
3.8095 80 0.4657 - - - - -
4.0 84 - 0.8641 0.8641 0.8641 0.8641 0.8367
4.2857 90 0.2159 - - - - -
4.7619 100 0.0667 - - - - -
5.0 105 - 0.8367 0.8367 0.8367 0.8367 0.8373
5.2381 110 0.0563 - - - - -
5.7143 120 0.0276 - - - - -
6.0 126 - 0.8492 0.8492 0.8492 0.8725 0.8396
6.1905 130 0.0221 - - - - -
6.6667 140 0.0311 - - - - -
7.0 147 - 0.8870 0.8999 0.8999 0.9496 0.9191
7.1429 150 0.0013 - - - - -
7.6190 160 0.0855 - - - - -
8.0 168 - 0.9079 0.8999 0.8999 0.9415 0.9191
8.0952 170 0.0191 - - - - -
8.5714 180 0.028 - - - - -
9.0 189 - 0.8870 0.8999 0.9207 0.9415 0.9376
9.0476 190 0.0186 - - - - -
9.5238 200 0.0006 - - - - -
10.0 210 0.0038 0.9079 0.9207 0.9207 0.9594 0.9376
10.4762 220 0.0386 - - - - -
10.9524 230 0.0034 - - - - -
11.0 231 - 0.9287 0.9207 0.9207 0.9594 0.9376
11.4286 240 0.0016 - - - - -
11.9048 250 0.0378 - - - - -
12.0 252 - 0.9287 0.9207 0.9207 0.9594 0.9376
12.3810 260 0.0558 - - - - -
12.8571 270 0.0022 - - - - -
13.0 273 - 0.9287 0.9207 0.9207 0.9594 0.9376
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.12.3
  • Sentence Transformers: 5.0.0
  • Transformers: 4.53.2
  • PyTorch: 2.7.1+cu126
  • Accelerate: 1.9.0
  • Datasets: 4.0.0
  • Tokenizers: 0.21.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}
}

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
80
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 benja-d/paraphrase-spanish-distilroberta-finetuned-chatbot

Papers for benja-d/paraphrase-spanish-distilroberta-finetuned-chatbot

Evaluation results