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 = [
    '¿Que precio o costo tiene  la transferencia de un vehículo en Autofact?\nAl transferir un vehículo con Autofact pagas los mismos costos que un proceso de transferencia habitual.\nEl arancel de la institución oficial estatal: $36.030 pesos.\nEl valor del servicio de transferencia Autofact es de $59.990 e incluye el certificado de anotaciones (CAV) del vehículo.\nEl 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).\nEn total, debes sumar los siguientes montos:\n36.030 + 59.990 + 1,5% del valor mayor entre el precio del vehículo o la tasación del mismo. \nSi eres el comprador, puedes agregar el servicio de TAG a domicilio a tu transferencia, evitando todos los trámites que conlleva gestionar la obtención de este dispositivo.\nPuedes simular el costo total del traspaso de dominio vehicular directamente en nuestra página de Transferencia Autofact (https://www.autofact.cl/transferencias), ingresando el precio de venta del vehículo.',
    '¿Cuánto tiempo demora el proceso de transferencia de un vehículo con Autofact?',
    '¿Cuál es la importancia de la posesión efectiva en términos legales?',
]
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.7156, 0.1624],
#         [0.7156, 1.0000, 0.1845],
#         [0.1624, 0.1845, 0.9999]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.8387
cosine_accuracy@3 0.8387
cosine_accuracy@5 0.8387
cosine_accuracy@10 0.8387
cosine_precision@1 0.8387
cosine_precision@3 0.8387
cosine_precision@5 0.7935
cosine_precision@10 0.4677
cosine_recall@1 0.1586
cosine_recall@3 0.4758
cosine_recall@5 0.7204
cosine_recall@10 0.8387
cosine_ndcg@10 0.8387
cosine_mrr@10 0.8387
cosine_map@100 0.8717

Information Retrieval

Metric Value
cosine_accuracy@1 0.8387
cosine_accuracy@3 0.8387
cosine_accuracy@5 0.8387
cosine_accuracy@10 0.8387
cosine_precision@1 0.8387
cosine_precision@3 0.8387
cosine_precision@5 0.7935
cosine_precision@10 0.4677
cosine_recall@1 0.1586
cosine_recall@3 0.4758
cosine_recall@5 0.7204
cosine_recall@10 0.8387
cosine_ndcg@10 0.8387
cosine_mrr@10 0.8387
cosine_map@100 0.8739

Information Retrieval

Metric Value
cosine_accuracy@1 0.8387
cosine_accuracy@3 0.8387
cosine_accuracy@5 0.8387
cosine_accuracy@10 0.9032
cosine_precision@1 0.8387
cosine_precision@3 0.8387
cosine_precision@5 0.7935
cosine_precision@10 0.4935
cosine_recall@1 0.1586
cosine_recall@3 0.4758
cosine_recall@5 0.7204
cosine_recall@10 0.871
cosine_ndcg@10 0.8589
cosine_mrr@10 0.8479
cosine_map@100 0.8829

Information Retrieval

Metric Value
cosine_accuracy@1 0.8387
cosine_accuracy@3 0.8387
cosine_accuracy@5 0.8387
cosine_accuracy@10 0.8387
cosine_precision@1 0.8387
cosine_precision@3 0.8387
cosine_precision@5 0.7935
cosine_precision@10 0.4677
cosine_recall@1 0.1586
cosine_recall@3 0.4758
cosine_recall@5 0.7204
cosine_recall@10 0.8387
cosine_ndcg@10 0.8387
cosine_mrr@10 0.8387
cosine_map@100 0.8717

Information Retrieval

Metric Value
cosine_accuracy@1 0.8065
cosine_accuracy@3 0.8065
cosine_accuracy@5 0.8065
cosine_accuracy@10 0.8387
cosine_precision@1 0.8065
cosine_precision@3 0.8065
cosine_precision@5 0.7613
cosine_precision@10 0.4613
cosine_recall@1 0.1532
cosine_recall@3 0.4597
cosine_recall@5 0.6935
cosine_recall@10 0.828
cosine_ndcg@10 0.8185
cosine_mrr@10 0.8111
cosine_map@100 0.8517

Training Details

Training Dataset

json

  • Dataset: json
  • Size: 172 training samples
  • Columns: positive and anchor
  • Approximate statistics based on the first 172 samples:
    positive anchor
    type string string
    details
    • min: 42 tokens
    • mean: 97.27 tokens
    • max: 128 tokens
    • min: 6 tokens
    • mean: 14.63 tokens
    • max: 26 tokens
  • Samples:
    positive anchor
    ¿Por qué es importante conocer la tasación de un auto?
    Vendedor Particular
    Con nuestro informe validado por expertos en el rubro, tendrás la certeza de que estás vendiendo tu vehículo al precio justo del mercado. Optimiza tu venta en tiempo y dinero con la tranquilidad de saber que estás haciendo un trato justo.
    Comprador Particular
    Nuestro informe te ayudará a despejar dudas sobre el precio de tu negociación y a verificar que estás haciendo un trato justo. Evita pagar de más y ten la tranquilidad de saber que estás invirtiendo con un valor acorde al mercado.
    Vehículo con Pérdida Total
    Si has tenido algún siniestro con tu auto y necesitas saber su valor comercial actual, podrás comprobar que esté siendo valorado como corresponde con tu compañía de seguros y recibir una indemnización justa.
    Necesidad de Oferta Inmediata
    Además de ayudarte a conocer el valor de tu vehículo, te entregaremos el valor de toma esperado, lo que te permitirá tener una idea del rango de precios en el cual podrí...
    5. ¿Qué información se puede obtener al conocer la tasación de un auto?
    ¿Cómo puedo comprar un auto si estoy con Acuerdo de Unión Civil?
    Quien compra es una persona con Acuerdo de Unión Civil (AUC), en tal caso se requiere adicionalmente:
    Nombre y RUT de quien tiene AUC con el comprador.
    Cédula de identidad de quien tiene AUC con el comprador.
    ¿Puedo obtener financiamiento para la compra de un auto si estoy con Acuerdo de Unión Civil?
    ¿Qué es el Informe de Precio y Tasación Autofact?
    Es un documento que entrega el valor justo de un auto en el mercado hoy, teniendo en cuenta todas las variables que influyen directamente en su precio. Está diseñado para reducir la fricción entre compradores y vendedores, o mejor conocido como “Regateo”.
    ¿Qué es el Informe de Precio y Tasación Autofact?
  • 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: 16
  • gradient_accumulation_steps: 8
  • learning_rate: 2e-05
  • num_train_epochs: 10
  • 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: 16
  • per_device_eval_batch_size: 8
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 8
  • 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: 10
  • 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
1.0 2 - 0.7742 0.7541 0.7232 0.6889 0.6820
2.0 4 - 0.8186 0.8287 0.8287 0.8185 0.7938
3.0 6 - 0.8387 0.8566 0.8767 0.8387 0.8166
4.0 8 - 0.8767 0.8868 0.8868 0.8287 0.7843
5.0 10 2.5425 0.8647 0.8912 0.8647 0.8022 0.8185
6.0 12 - 0.8690 0.8690 0.8425 0.8488 0.8387
7.0 14 - 0.8690 0.8387 0.8690 0.8387 0.8185
8.0 16 - 0.8387 0.8387 0.8589 0.8387 0.8185
9.0 18 - 0.8387 0.8387 0.8589 0.8387 0.8185
10.0 20 0.6148 0.8387 0.8387 0.8589 0.8387 0.8185
  • 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
54
Safetensors
Model size
125M 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

Evaluation results