CoolFace
Modelpublic

wilfoderek/bge-m3-es-legal-tmp-1

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes36downloads
Model Card

BGE large Legal Spanish

This is a sentence-transformers model finetuned from BAAI/bge-m3 on the justicio-rag-embedding-qa-tmp-2 dataset. It maps sentences & paragraphs to a 1024-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: BAAI/bge-m3 <!-- at revision 5617a9f61b028005a4858fdac845db406aefb181 -->
  • —Maximum Sequence Length: 8192 tokens
  • —Output Dimensionality: 1024 dimensions
  • —Similarity Function: Cosine Similarity
  • —Training Dataset:
  • —justicio-rag-embedding-qa-tmp-2
  • —Language: es
  • —License: apache-2.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'XLMRobertaModel'})
  (1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, '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:

bash
pip install -U sentence-transformers

Then you can load this model and run inference.

python
from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("wilfoderek/bge-m3-es-legal-tmp-1")
# Run inference
queries = [
    "Art\u00edculo 6. Definiciones. 1. Discriminaci\u00f3n directa e indirecta. b) La discriminaci\u00f3n indirecta se produce cuando una disposici\u00f3n, criterio o pr\u00e1ctica aparentemente neutros ocasiona o puede ocasionar a una o varias personas una desventaja particular con respecto a otras por raz\u00f3n de las causas previstas en el apartado 1 del art\u00edculo 2.",
]
documents = [
    '¿Qué se considera discriminación indirecta?',
    '¿Qué tipo de información se considera veraz?',
    '¿Cuál es el papel del Consejo de Salud de Área?',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 1024] [3, 1024]

# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.7562, 0.1522, 0.0675]])

<!--

Direct Usage (Transformers)

<details><summary>Click to see the direct usage in Transformers</summary>

</details> -->

<!--

Downstream Usage (Sentence Transformers)

You can finetune this model on your own dataset.

<details><summary>Click to expand</summary>

</details> -->

<!--

Out-of-Scope Use

List how the model may foreseeably be misused and address what users ought not to do with the model. -->

Evaluation

Metrics

Information Retrieval
json
  {
      "truncate_dim": 1024
  }
MetricValue
cosine_accuracy@10.5396
cosine_accuracy@30.8049
cosine_accuracy@50.8598
cosine_accuracy@100.9085
cosine_precision@10.5396
cosine_precision@30.2683
cosine_precision@50.172
cosine_precision@100.0909
cosine_recall@10.5396
cosine_recall@30.8049
cosine_recall@50.8598
cosine_recall@100.9085
cosine_ndcg@100.7335
cosine_mrr@100.6763
cosine_map@1000.6798
Information Retrieval
json
  {
      "truncate_dim": 768
  }
MetricValue
cosine_accuracy@10.5152
cosine_accuracy@30.8049
cosine_accuracy@50.8567
cosine_accuracy@100.9085
cosine_precision@10.5152
cosine_precision@30.2683
cosine_precision@50.1713
cosine_precision@100.0909
cosine_recall@10.5152
cosine_recall@30.8049
cosine_recall@50.8567
cosine_recall@100.9085
cosine_ndcg@100.7234
cosine_mrr@100.6628
cosine_map@1000.6662
Information Retrieval
json
  {
      "truncate_dim": 512
  }
MetricValue
cosine_accuracy@10.5427
cosine_accuracy@30.811
cosine_accuracy@50.8628
cosine_accuracy@100.9024
cosine_precision@10.5427
cosine_precision@30.2703
cosine_precision@50.1726
cosine_precision@100.0902
cosine_recall@10.5427
cosine_recall@30.811
cosine_recall@50.8628
cosine_recall@100.9024
cosine_ndcg@100.7337
cosine_mrr@100.6783
cosine_map@1000.6821
Information Retrieval
json
  {
      "truncate_dim": 256
  }
MetricValue
cosine_accuracy@10.5366
cosine_accuracy@30.7957
cosine_accuracy@50.8567
cosine_accuracy@100.8872
cosine_precision@10.5366
cosine_precision@30.2652
cosine_precision@50.1713
cosine_precision@100.0887
cosine_recall@10.5366
cosine_recall@30.7957
cosine_recall@50.8567
cosine_recall@100.8872
cosine_ndcg@100.7246
cosine_mrr@100.6708
cosine_map@1000.6753
Information Retrieval
json
  {
      "truncate_dim": 128
  }
MetricValue
cosine_accuracy@10.5305
cosine_accuracy@30.7713
cosine_accuracy@50.8232
cosine_accuracy@100.872
cosine_precision@10.5305
cosine_precision@30.2571
cosine_precision@50.1646
cosine_precision@100.0872
cosine_recall@10.5305
cosine_recall@30.7713
cosine_recall@50.8232
cosine_recall@100.872
cosine_ndcg@100.7121
cosine_mrr@100.6597
cosine_map@1000.6643
Information Retrieval
json
  {
      "truncate_dim": 64
  }
MetricValue
cosine_accuracy@10.503
cosine_accuracy@30.7317
cosine_accuracy@50.7835
cosine_accuracy@100.8689
cosine_precision@10.503
cosine_precision@30.2439
cosine_precision@50.1567
cosine_precision@100.0869
cosine_recall@10.503
cosine_recall@30.7317
cosine_recall@50.7835
cosine_recall@100.8689
cosine_ndcg@100.6887
cosine_mrr@100.631
cosine_map@1000.6349

<!--

Bias, Risks and Limitations

What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model. -->

<!--

Recommendations

What are recommendations with respect to the foreseeable issues? For example, filtering explicit content. -->

Training Details

Training Dataset

justicio-rag-embedding-qa-tmp-2
  • —Dataset: justicio-rag-embedding-qa-tmp-2 at 72c1e63
  • —Size: 2,947 training samples
  • —Columns: <code>context</code> and <code>question</code>
  • —Approximate statistics based on the first 1000 samples: | | context | question | |:--------|:------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------| | type | string | string | | details | <ul><li>min: 22 tokens</li><li>mean: 63.25 tokens</li><li>max: 222 tokens</li></ul> | <ul><li>min: 8 tokens</li><li>mean: 20.31 tokens</li><li>max: 53 tokens</li></ul> |
  • —Samples: | context | question | |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------| | <code>La ley debe entenderse, por tanto, en el contexto del cumplimiento por parte del Estado de la obligación que, en el marco de sus competencias constitucionales, le incumbe en la protección del derecho a acceder a una vivienda digna y adecuada y a su disfrute.</code> | <code>¿Cuál es el objetivo de la ley en cuanto a la vivienda?</code> | | <code>JUAN CARLOS I REY DE ESPAÑA A todos los que la presente vieren y entendieren. Sabed: Que las Cortes Generales han aprobado y Yo vengo en sancionar la siguiente Ley Orgánica.</code> | <code>¿Quién sanciona la Ley Orgánica?</code> | | <code>A esta finalidad responde la modificación del artículo 37 de la Ley 8/2018, de 8 de octubre, de medidas frente al cambio climático y para la transición hacia un modelo energético en Andalucía, con el objetivo de incluir la posibilidad de que se puedan articular la ejecución de proyectos de absorción de emisiones a través de la suscripción por la Consejería competente en materia de medio ambiente de convenios de colaboración público-privada, los cuales podrán tener una duración acorde a la vida útil de dichos proyectos, en función de sus distintas tipologías, atendiendo así la demanda de organizaciones y empresas que, de manera voluntaria, dentro de sus programas de responsabilidad corporativa, quieren reducir sus emisiones de gases de efecto invernadero y están interesadas en la ejecución de estos proyectos bajo esta fórmula para la compensación que ha crecido exponencialmente en los últimos años.</code> | <code>¿Cuál es el objetivo de la modificación del artículo 37 de la Ley 8/2018?</code> |
  • —Loss: <code>MatryoshkaLoss</code> with these parameters:
json
  {
      "loss": "MultipleNegativesRankingLoss",
      "matryoshka_dims": [
          1024,
          768,
          512,
          256,
          128,
          64
      ],
      "matryoshka_weights": [
          1,
          1,
          1,
          1,
          1,
          1
      ],
      "n_dims_per_step": -1
  }

Evaluation Dataset

justicio-rag-embedding-qa-tmp-2
  • —Dataset: justicio-rag-embedding-qa-tmp-2 at 72c1e63
  • —Size: 328 evaluation samples
  • —Columns: <code>context</code> and <code>question</code>
  • —Approximate statistics based on the first 328 samples: | | context | question | |:--------|:------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------| | type | string | string | | details | <ul><li>min: 20 tokens</li><li>mean: 64.15 tokens</li><li>max: 187 tokens</li></ul> | <ul><li>min: 9 tokens</li><li>mean: 19.64 tokens</li><li>max: 50 tokens</li></ul> |
  • —Samples: | context | question | |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------| | <code>Con el fin de lograr un mejor aprovechamiento de los recursos humanos, que garantice la eficacia del servicio que se preste a los ciudadanos, la Administración General del Estado y las comunidades autónomas y las entidades locales establecerán medidas de movilidad interadministrativa, preferentemente mediante convenio de Conferencia Sectorial u otros instrumentos de colaboración.</code> | <code>¿Cuál es el objetivo de la movilidad interadministrativa?</code> | | <code>Las Administraciones públicas, en el ámbito de sus competencias, continuarán impartiendo formación inicial y continuada al personal a su servicio sobre diversidad en materia de orientación sexual, identidad sexual, expresión de género y características sexuales, sobre diversidad familiar y sobre igualdad y no discriminación de las personas LGTBI.</code> | <code>¿Qué tipo de formación se impartirá al personal al servicio de las Administraciones públicas?</code> | | <code>En los contratos de carácter temporal cuya duración efectiva sea inferior a siete días, la cuota empresarial a la Seguridad Social por contingencias comunes se incrementará en un 36 por ciento.</code> | <code>¿Qué sucede con la cotización en contratos de carácter temporal cuya duración efectiva sea inferior a siete días?</code> |
  • —Loss: <code>MatryoshkaLoss</code> with these parameters:
json
  {
      "loss": "MultipleNegativesRankingLoss",
      "matryoshka_dims": [
          1024,
          768,
          512,
          256,
          128,
          64
      ],
      "matryoshka_weights": [
          1,
          1,
          1,
          1,
          1,
          1
      ],
      "n_dims_per_step": -1
  }

Training Hyperparameters

Non-Default Hyperparameters
  • —eval_strategy: epoch
  • —per_device_train_batch_size: 16
  • —per_device_eval_batch_size: 16
  • —gradient_accumulation_steps: 16
  • —learning_rate: 2e-05
  • —num_train_epochs: 6
  • —lr_scheduler_type: cosine
  • —warmup_ratio: 0.1
  • —bf16: True
  • —tf32: True
  • —load_best_model_at_end: True
  • —optim: adamwtorchfused
  • —batch_sampler: no_duplicates
All Hyperparameters

<details><summary>Click to expand</summary>

  • —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: 16
  • —per_gpu_train_batch_size: None
  • —per_gpu_eval_batch_size: None
  • —gradient_accumulation_steps: 16
  • —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: 6
  • —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: {'minnumparams': 0, 'xla': False, 'xlafsdpv2': False, 'xlafsdpgrad_ckpt': False}
  • —fsdp_transformer_layer_cls_to_wrap: None
  • —accelerator_config: {'splitbatches': False, 'dispatchbatches': None, 'evenbatches': True, 'useseedablesampler': True, 'nonblocking': False, 'gradientaccumulationkwargs': None}
  • —deepspeed: None
  • —label_smoothing_factor: 0.0
  • —optim: adamwtorchfused
  • —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: {}

</details>

Training Logs

EpochStepTraining LossValidation Lossdim_1024_cosine_ndcg@10dim_768_cosine_ndcg@10dim_512_cosine_ndcg@10dim_256_cosine_ndcg@10dim_128_cosine_ndcg@10dim_64_cosine_ndcg@10
0.432451.6474-------
0.8649101.1634-------
1.012-0.77310.72390.71340.72260.72590.69980.6529
1.2595150.8271-------
1.6919200.5396-------
2.024-0.6490.72740.72210.73190.73220.71390.669
2.0865250.5425-------
2.5189300.3327-------
2.9514350.2893-------
3.036-0.60380.72660.72410.73230.72660.70940.6762
3.3459400.214-------
3.7784450.2363-------
4.048-0.58490.72470.72460.73070.72300.71170.6859
4.1730500.2066-------
4.6054550.1616-------
5.0600.20140.56320.73220.72370.73310.72400.71330.6889
5.4324650.1772-------
5.8649700.1806-------
6.072-0.55780.73350.72340.73370.72460.71210.6887
  • —The bold row denotes the saved checkpoint.

Framework Versions

  • —Python: 3.11.13
  • —Sentence Transformers: 5.1.0
  • —Transformers: 4.55.0
  • —PyTorch: 2.6.0+cu124
  • —Accelerate: 1.10.0
  • —Datasets: 4.0.0
  • —Tokenizers: 0.21.4

Citation

BibTeX

Sentence Transformers
bibtex
@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
bibtex
@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
bibtex
@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}
}

<!--

Glossary

Clearly define terms in order to be accessible across audiences. -->

<!--

Model Card Authors

Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction. -->

<!--

Model Card Contact

Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors. -->