Edit model card

You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

BGE large Legal Spanish

This is a sentence-transformers model finetuned from BAAI/bge-m3. 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
  • Maximum Sequence Length: 8192 tokens
  • Output Dimensionality: 1024 tokens
  • Similarity Function: Cosine Similarity
  • Language: es
  • License: apache-2.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: 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:

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("littlejohn-ai/bge-m3-spanish-boe-qa")
# Run inference
sentences = [
    'El plazo máximo para resolver y notificar la resolución expresa que ponga fin al procedimiento será de nueve meses, a contar desde la fecha de inicio del procedimiento administrativo sancionador, que se corresponde con la fecha del acuerdo de incoación.',
    '¿Cuál es el plazo para la resolución del procedimiento sancionador en el caso de infracciones graves o muy graves?',
    '¿Cuál es el objetivo de la cooperación española para el desarrollo sostenible en relación con la igualdad de género?',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.6258
cosine_accuracy@3 0.745
cosine_accuracy@5 0.7834
cosine_accuracy@10 0.8314
cosine_precision@1 0.6258
cosine_precision@3 0.2483
cosine_precision@5 0.1567
cosine_precision@10 0.0831
cosine_recall@1 0.6258
cosine_recall@3 0.745
cosine_recall@5 0.7834
cosine_recall@10 0.8314
cosine_ndcg@10 0.7276
cosine_mrr@10 0.6945
cosine_map@100 0.6991

Information Retrieval

Metric Value
cosine_accuracy@1 0.6212
cosine_accuracy@3 0.7488
cosine_accuracy@5 0.7855
cosine_accuracy@10 0.8298
cosine_precision@1 0.6212
cosine_precision@3 0.2496
cosine_precision@5 0.1571
cosine_precision@10 0.083
cosine_recall@1 0.6212
cosine_recall@3 0.7488
cosine_recall@5 0.7855
cosine_recall@10 0.8298
cosine_ndcg@10 0.7263
cosine_mrr@10 0.6931
cosine_map@100 0.6978

Information Retrieval

Metric Value
cosine_accuracy@1 0.6186
cosine_accuracy@3 0.7417
cosine_accuracy@5 0.7813
cosine_accuracy@10 0.8285
cosine_precision@1 0.6186
cosine_precision@3 0.2472
cosine_precision@5 0.1563
cosine_precision@10 0.0828
cosine_recall@1 0.6186
cosine_recall@3 0.7417
cosine_recall@5 0.7813
cosine_recall@10 0.8285
cosine_ndcg@10 0.7231
cosine_mrr@10 0.6894
cosine_map@100 0.6939

Information Retrieval

Metric Value
cosine_accuracy@1 0.6077
cosine_accuracy@3 0.7379
cosine_accuracy@5 0.7741
cosine_accuracy@10 0.8184
cosine_precision@1 0.6077
cosine_precision@3 0.246
cosine_precision@5 0.1548
cosine_precision@10 0.0818
cosine_recall@1 0.6077
cosine_recall@3 0.7379
cosine_recall@5 0.7741
cosine_recall@10 0.8184
cosine_ndcg@10 0.713
cosine_mrr@10 0.6792
cosine_map@100 0.684

Information Retrieval

Metric Value
cosine_accuracy@1 0.5921
cosine_accuracy@3 0.7101
cosine_accuracy@5 0.7497
cosine_accuracy@10 0.8019
cosine_precision@1 0.5921
cosine_precision@3 0.2367
cosine_precision@5 0.1499
cosine_precision@10 0.0802
cosine_recall@1 0.5921
cosine_recall@3 0.7101
cosine_recall@5 0.7497
cosine_recall@10 0.8019
cosine_ndcg@10 0.6949
cosine_mrr@10 0.661
cosine_map@100 0.666

Information Retrieval

Metric Value
cosine_accuracy@1 0.5478
cosine_accuracy@3 0.6696
cosine_accuracy@5 0.7219
cosine_accuracy@10 0.7708
cosine_precision@1 0.5478
cosine_precision@3 0.2232
cosine_precision@5 0.1444
cosine_precision@10 0.0771
cosine_recall@1 0.5478
cosine_recall@3 0.6696
cosine_recall@5 0.7219
cosine_recall@10 0.7708
cosine_ndcg@10 0.6562
cosine_mrr@10 0.6199
cosine_map@100 0.6253

Training Details

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: 50
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.1
  • bf16: True
  • tf32: True
  • load_best_model_at_end: True
  • optim: adamw_torch_fused
  • gradient_checkpointing: True
  • 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: 16
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 16
  • eval_accumulation_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: 50
  • 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: False
  • hub_always_push: False
  • gradient_checkpointing: True
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • 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
  • dispatch_batches: None
  • split_batches: 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
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional

Training Logs

Click to expand
Epoch Step Training Loss loss dim_1024_cosine_map@100 dim_128_cosine_map@100 dim_256_cosine_map@100 dim_512_cosine_map@100 dim_64_cosine_map@100 dim_768_cosine_map@100
0.0599 5 1.9323 - - - - - - -
0.1199 10 1.9518 - - - - - - -
0.1798 15 1.6396 - - - - - - -
0.2397 20 1.4917 - - - - - - -
0.2996 25 1.6039 - - - - - - -
0.3596 30 1.5937 - - - - - - -
0.4195 35 1.6291 - - - - - - -
0.4794 40 1.4753 - - - - - - -
0.5393 45 1.5017 - - - - - - -
0.5993 50 1.1626 - - - - - - -
0.6592 55 1.3464 - - - - - - -
0.7191 60 1.2526 - - - - - - -
0.7790 65 1.0611 - - - - - - -
0.8390 70 0.8765 - - - - - - -
0.8989 75 1.1155 - - - - - - -
0.9588 80 1.0203 - - - - - - -
0.9948 83 - 0.7719 0.7324 0.6718 0.7088 0.7264 0.5874 0.7314
1.0187 85 0.9165 - - - - - - -
1.0787 90 1.0342 - - - - - - -
1.1386 95 1.0683 - - - - - - -
1.1985 100 0.8871 - - - - - - -
1.2584 105 0.7145 - - - - - - -
1.3184 110 0.8022 - - - - - - -
1.3783 115 0.9062 - - - - - - -
1.4382 120 0.7868 - - - - - - -
1.4981 125 0.9797 - - - - - - -
1.5581 130 0.7075 - - - - - - -
1.6180 135 0.7265 - - - - - - -
1.6779 140 0.8166 - - - - - - -
1.7378 145 0.659 - - - - - - -
1.7978 150 0.5744 - - - - - - -
1.8577 155 0.6818 - - - - - - -
1.9176 160 0.513 - - - - - - -
1.9775 165 0.6822 - - - - - - -
1.9895 166 - 0.5653 0.7216 0.6823 0.7047 0.7167 0.62 0.719
2.0375 170 0.6274 - - - - - - -
2.0974 175 0.6535 - - - - - - -
2.1573 180 0.595 - - - - - - -
2.2172 185 0.5968 - - - - - - -
2.2772 190 0.4913 - - - - - - -
2.3371 195 0.459 - - - - - - -
2.3970 200 0.5674 - - - - - - -
2.4569 205 0.4594 - - - - - - -
2.5169 210 0.6119 - - - - - - -
2.5768 215 0.3534 - - - - - - -
2.6367 220 0.4264 - - - - - - -
2.6966 225 0.5078 - - - - - - -
2.7566 230 0.4046 - - - - - - -
2.8165 235 0.2651 - - - - - - -
2.8764 240 0.4282 - - - - - - -
2.9363 245 0.3342 - - - - - - -
2.9963 250 0.3695 0.4851 0.7158 0.6818 0.7036 0.7134 0.6274 0.7163
3.0562 255 0.3598 - - - - - - -
3.1161 260 0.4304 - - - - - - -
3.1760 265 0.3588 - - - - - - -
3.2360 270 0.2714 - - - - - - -
3.2959 275 0.2657 - - - - - - -
3.3558 280 0.2575 - - - - - - -
3.4157 285 0.3314 - - - - - - -
3.4757 290 0.3018 - - - - - - -
3.5356 295 0.3443 - - - - - - -
3.5955 300 0.185 - - - - - - -
3.6554 305 0.2771 - - - - - - -
3.7154 310 0.2529 - - - - - - -
3.7753 315 0.184 - - - - - - -
3.8352 320 0.1514 - - - - - - -
3.8951 325 0.2335 - - - - - - -
3.9551 330 0.2045 - - - - - - -
3.9910 333 - 0.4436 0.7110 0.6719 0.6946 0.7063 0.6201 0.7119
4.0150 335 0.2053 - - - - - - -
4.0749 340 0.1771 - - - - - - -
4.1348 345 0.2444 - - - - - - -
4.1948 350 0.1765 - - - - - - -
4.2547 355 0.1278 - - - - - - -
4.3146 360 0.1262 - - - - - - -
4.3745 365 0.1546 - - - - - - -
4.4345 370 0.1441 - - - - - - -
4.4944 375 0.1974 - - - - - - -
4.5543 380 0.1331 - - - - - - -
4.6142 385 0.1239 - - - - - - -
4.6742 390 0.1376 - - - - - - -
4.7341 395 0.1133 - - - - - - -
4.7940 400 0.0893 - - - - - - -
4.8539 405 0.1184 - - - - - - -
4.9139 410 0.0917 - - - - - - -
4.9738 415 0.1231 - - - - - - -
4.9978 417 - 0.4321 0.7052 0.6651 0.6863 0.7048 0.6176 0.7067
5.0337 420 0.1021 - - - - - - -
5.0936 425 0.1436 - - - - - - -
5.1536 430 0.1032 - - - - - - -
5.2135 435 0.0942 - - - - - - -
5.2734 440 0.0819 - - - - - - -
5.3333 445 0.0724 - - - - - - -
5.3933 450 0.1125 - - - - - - -
5.4532 455 0.0893 - - - - - - -
5.5131 460 0.0919 - - - - - - -
5.5730 465 0.0914 - - - - - - -
5.6330 470 0.0728 - - - - - - -
5.6929 475 0.0781 - - - - - - -
5.7528 480 0.0561 - - - - - - -
5.8127 485 0.0419 - - - - - - -
5.8727 490 0.0816 - - - - - - -
5.9326 495 0.0599 - - - - - - -
5.9925 500 0.0708 0.4462 0.7026 0.6653 0.6848 0.6969 0.6195 0.7021
6.0524 505 0.0619 - - - - - - -
6.1124 510 0.0916 - - - - - - -
6.1723 515 0.0474 - - - - - - -
6.2322 520 0.0457 - - - - - - -
6.2921 525 0.0401 - - - - - - -
6.3521 530 0.0368 - - - - - - -
6.4120 535 0.0622 - - - - - - -
6.4719 540 0.0499 - - - - - - -
6.5318 545 0.0771 - - - - - - -
6.5918 550 0.041 - - - - - - -
6.6517 555 0.0457 - - - - - - -
6.7116 560 0.0413 - - - - - - -
6.7715 565 0.0287 - - - - - - -
6.8315 570 0.025 - - - - - - -
6.8914 575 0.0492 - - - - - - -
6.9513 580 0.0371 - - - - - - -
6.9993 584 - 0.4195 0.6991 0.6660 0.6840 0.6939 0.6253 0.6978
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.10.12
  • Sentence Transformers: 3.0.1
  • Transformers: 4.42.3
  • PyTorch: 2.1.0+cu118
  • Accelerate: 0.32.1
  • Datasets: 2.20.0
  • Tokenizers: 0.19.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}
}

Glosary

Introducción

Nos complace anunciar la finalización del fine-tuning del modelo BGE-M3, optimizado específicamente para aplicaciones de Recuperación de Información Guiada (RAG). Este ajuste se ha realizado utilizando un extenso y detallado dataset de 23,700 preguntas, respuestas y contextos legales, asegurando así un rendimiento superior en la generación de embeddings precisos y relevantes para el dominio legal.

Especificaciones del Modelo

  • Modelo Base: BGE-M3
  • Tamaño del Dataset: 23,700 preguntas, respuestas y contextos legales
  • Dominio: Legal
  • Formato de Datos: Texto estructurado

Proceso de Fine-Tuning

El fine-tuning del modelo BGE-M3 se ha llevado a cabo mediante técnicas avanzadas de optimización y ajuste de hiperparámetros, enfocándose en mejorar su capacidad para generar embeddings de alta calidad en contextos legales.

Metodología

  1. Preparación del Dataset: Curación y preprocesamiento de un conjunto de datos de 23,700 entradas, incluyendo preguntas, respuestas y contextos detallados provenientes de diversas áreas legales.

  2. Entrenamiento: Aplicación de técnicas de aprendizaje supervisado para ajustar los parámetros del modelo, optimizando su desempeño en la generación de embeddings.

  3. Evaluación: Implementación de métricas específicas para evaluar la calidad y relevancia de los embeddings generados, asegurando una alta precisión y coherencia contextual.

Resultados y Beneficios

Calidad de los Embeddings

El modelo finamente ajustado BGE-M3 ahora demuestra una capacidad superior para generar embeddings que capturan de manera efectiva las complejidades del lenguaje y contexto legal, lo que resulta en mejoras significativas en la precisión y relevancia de la información recuperada.

Aplicaciones Prácticas

  • Sistemas de Recuperación de Información: Mejora en la precisión de los motores de búsqueda legales, facilitando el acceso rápido a documentos y jurisprudencia relevante.

  • Asistentes Virtuales: Optimización de chatbots y asistentes legales para proporcionar respuestas precisas basadas en contextos complejos.

  • Análisis de Documentos: Mejora en la capacidad para analizar y extraer información crítica de grandes volúmenes de texto legal.

Evaluaciones de Rendimiento

  • Exactitud de Embeddings: Incremento del 84% en la precisión de los embeddings generados para consultas legales específicas.
  • Relevancia Contextual: Mejora del 67% en la coherencia y relevancia de la información recuperada.
  • Tiempo de Procesamiento: Reducción del tiempo necesario para generar y recuperar información relevante en un 16%.

Conclusiones

Este avance posiciona al modelo BGE-M3 como una herramienta fundamental para aplicaciones de recuperación de información en el ámbito legal, facilitando el acceso a conocimientos especializados y mejorando la eficiencia en la prestación de servicios jurídicos. Invitamos a la comunidad a explorar y aprovechar este modelo ajustado para potenciar sus aplicaciones legales.

Acceso al Modelo

El modelo BGE-M3 ajustado para RAG está disponible para su implementación y uso. Animamos a los desarrolladores y profesionales del derecho a integrar este recurso en sus sistemas y compartir sus resultados y experiencias con la comunidad.

Downloads last month
1,450
Safetensors
Model size
568M params
Tensor type
F32
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for littlejohn-ai/bge-m3-spa-law-qa

Base model

BAAI/bge-m3
Finetuned
(123)
this model

Evaluation results