SentenceTransformer based on BAAI/bge-m3

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 dimensions
  • Similarity Function: Cosine Similarity

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:

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("CaesArdi/Indo-Law-v2")
# Run inference
sentences = [
    'query: Apa saja syarat agar perbuatan permusuhan terhadap golongan agama bisa dipidana?',
    'passage: Syaratnya adalah perbuatan permusuhan tersebut dilakukan di muka umum dan ditujukan kepada agama, kepercayaan, atau golongan tertentu atas dasar keyakinan mereka di Indonesia. (Pasal 300 KUHP)',
    'passage: Syaratnya adalah perbuatan permusuhan tersebut dilakukan di muka umum dan ditujukan kepada kelompok tertentu atas dasar ras, kebangsaan, etnis, warna kulit, atau jenis kelamin. (Pasal 242 KUHP)',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.7404, 0.4978],
#         [0.7404, 1.0000, 0.6977],
#         [0.4978, 0.6977, 1.0000]])

Evaluation

Metrics

Triplet

Metric val test
cosine_accuracy 0.9478 0.9143

Training Details

Training Dataset

Unnamed Dataset

  • Size: 380 training samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 380 samples:
    anchor positive negative
    type string string string
    details
    • min: 11 tokens
    • mean: 21.29 tokens
    • max: 36 tokens
    • min: 30 tokens
    • mean: 44.74 tokens
    • max: 73 tokens
    • min: 29 tokens
    • mean: 42.46 tokens
    • max: 70 tokens
  • Samples:
    anchor positive negative
    query: Ada orang yang merekam percakapan rahasia lalu mengunggahnya ke YouTube, kena pasal berapa? passage: Mengunggah hasil perekaman percakapan rahasia ke YouTube termasuk menyiarkan atau menyebarluaskan hasil perekaman transmisi informasi elektronik yang tidak publik, diancam penjara paling lama 10 tahun atau denda kategori M. (Pasal 288 ayat (2) KUHP) passage: Mengunggah konten pornografi ke YouTube termasuk menyiarkan pornografi melalui media, diancam penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP)
    query: Apakah aparat kepolisian yang melakukan penyadapan sesuai prosedur hukum bisa dipidana? passage: Tidak dipidana, karena ketentuan pidana penyadapan informasi elektronik tidak berlaku bagi orang yang melaksanakan ketentuan peraturan perundang-undangan atau melaksanakan perintah jabatan sesuai Pasal 31 dan Pasal 32. (Pasal 288 ayat (3) KUHP) passage: Tidak dipidana, karena orang yang melakukan kajian terhadap ajaran komunisme/marxisme-leninisme untuk kepentingan ilmu pengetahuan juga mendapat pengecualian dari pidana. (Pasal 188 ayat (6) KUHP)
    query: Apa bedanya menyadap percakapan elektronik dengan menyebarkan konten porno lewat internet? passage: Menyadap percakapan elektronik berfokus pada mengakses transmisi yang tidak bersifat publik secara ilegal, diancam penjara paling lama 10 tahun atau denda kategori M, sedangkan menyebarkan pornografi diancam penjara 6 bulan sampai 10 tahun. (Pasal 288 ayat (1) KUHP) passage: Menyebarkan konten porno lewat internet adalah memproduksi, menyebarluaskan, atau menyediakan pornografi melalui media elektronik, diancam penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP)
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false,
        "directions": [
            "query_to_doc"
        ],
        "partition_mode": "joint",
        "hardness_mode": null,
        "hardness_strength": 0.0
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 115 evaluation samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 115 samples:
    anchor positive negative
    type string string string
    details
    • min: 13 tokens
    • mean: 21.23 tokens
    • max: 32 tokens
    • min: 28 tokens
    • mean: 44.68 tokens
    • max: 75 tokens
    • min: 29 tokens
    • mean: 43.23 tokens
    • max: 66 tokens
  • Samples:
    anchor positive negative
    query: Apa hukumannya kalau ada yang mencatat seluruh percakapan di grup chat yang bersifat rahasia? passage: Mencatat transmisi informasi elektronik atau dokumen elektronik yang tidak bersifat publik secara melawan hukum dapat dipidana penjara paling lama 10 tahun atau denda paling banyak kategori M. (Pasal 288 ayat (1) KUHP) passage: Merekam atau memperbanyak konten pornografi yang kemudian disebarluaskan melalui grup chat dapat dipidana penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP)
    query: Apa saja syarat supaya penyadapan komunikasi elektronik bisa dipidana? passage: Syaratnya adalah perbuatan dilakukan secara melawan hukum, berupa mendengarkan, merekam, membelokkan, mengubah, menghambat, dan/atau mencatat transmisi informasi atau dokumen elektronik yang tidak bersifat publik. (Pasal 288 ayat (1) KUHP) passage: Syaratnya adalah melakukan perbuatan memproduksi, memperbanyak, menyebarluaskan, menyiarkan, mengimpor, mengekspor, menawarkan, menjual, menyewakan, atau menyediakan konten pornografi. (Pasal 407 ayat (1) KUHP)
    query: Kalau cuma menawarkan konten porno tanpa menjualnya, apakah tetap bisa dipidana? passage: Ya, menawarkan pornografi sudah cukup untuk dipidana dengan penjara paling singkat 6 bulan dan paling lama 10 tahun atau denda kategori IV sampai VI. (Pasal 407 ayat (1) KUHP) passage: Ya, menghambat atau mencatat transmisi informasi elektronik yang tidak publik tanpa izin sudah cukup untuk dipidana penjara paling lama 10 tahun atau denda kategori M. (Pasal 288 ayat (1) KUHP)
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false,
        "directions": [
            "query_to_doc"
        ],
        "partition_mode": "joint",
        "hardness_mode": null,
        "hardness_strength": 0.0
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 16
  • num_train_epochs: 10
  • learning_rate: 2e-05
  • warmup_steps: 0.1
  • fp16: True
  • eval_strategy: steps
  • per_device_eval_batch_size: 16
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • per_device_train_batch_size: 16
  • num_train_epochs: 10
  • max_steps: -1
  • learning_rate: 2e-05
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_steps: 0.1
  • optim: adamw_torch_fused
  • optim_args: None
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • optim_target_modules: None
  • gradient_accumulation_steps: 1
  • average_tokens_across_devices: True
  • max_grad_norm: 1.0
  • label_smoothing_factor: 0.0
  • bf16: False
  • fp16: True
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • use_liger_kernel: False
  • liger_kernel_config: None
  • use_cache: False
  • neftune_noise_alpha: None
  • torch_empty_cache_steps: None
  • auto_find_batch_size: False
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • include_num_input_tokens_seen: no
  • log_level: passive
  • log_level_replica: warning
  • disable_tqdm: False
  • project: huggingface
  • trackio_space_id: trackio
  • eval_strategy: steps
  • per_device_eval_batch_size: 16
  • prediction_loss_only: True
  • eval_on_start: False
  • eval_do_concat_batches: True
  • eval_use_gather_object: False
  • eval_accumulation_steps: None
  • include_for_metrics: []
  • batch_eval_metrics: False
  • save_only_model: False
  • save_on_each_node: False
  • enable_jit_checkpoint: False
  • push_to_hub: False
  • hub_private_repo: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_always_push: False
  • hub_revision: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • restore_callback_states_from_checkpoint: False
  • full_determinism: False
  • seed: 42
  • data_seed: None
  • use_cpu: 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
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • dataloader_prefetch_factor: None
  • remove_unused_columns: True
  • label_names: None
  • train_sampling_strategy: random
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • ddp_backend: None
  • ddp_timeout: 1800
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • deepspeed: None
  • debug: []
  • skip_memory_metrics: True
  • do_predict: False
  • resume_from_checkpoint: None
  • warmup_ratio: None
  • local_rank: -1
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss Validation Loss val_cosine_accuracy test_cosine_accuracy
-1 -1 - - 0.9304 -
0.4167 10 1.0580 0.4615 0.9304 -
0.8333 20 0.6129 0.2930 0.9478 -
1.25 30 0.4159 0.2436 0.9478 -
1.6667 40 0.2591 0.2074 0.9652 -
2.0833 50 0.2382 0.1992 0.9478 -
2.5 60 0.1013 0.2022 0.9565 -
2.9167 70 0.1238 0.2143 0.9478 -
3.3333 80 0.1051 0.2236 0.9565 -
3.75 90 0.0828 0.2214 0.9478 -
4.1667 100 0.0654 0.2213 0.9565 -
4.5833 110 0.0350 0.2294 0.9565 -
5.0 120 0.0548 0.2424 0.9565 -
5.4167 130 0.0754 0.2319 0.9565 -
5.8333 140 0.0437 0.2283 0.9478 -
6.25 150 0.0578 0.2381 0.9478 -
6.6667 160 0.0217 0.2441 0.9478 -
7.0833 170 0.0516 0.2446 0.9478 -
7.5 180 0.0230 0.2380 0.9478 -
7.9167 190 0.0151 0.2441 0.9478 -
8.3333 200 0.0265 0.2485 0.9478 -
8.75 210 0.0212 0.2509 0.9478 -
9.1667 220 0.0410 0.2492 0.9478 -
9.5833 230 0.0136 0.2476 0.9478 -
10.0 240 0.0104 0.2466 0.9478 -
-1 -1 - - 0.9478 0.9143

Framework Versions

  • Python: 3.14.1
  • Sentence Transformers: 5.3.0
  • Transformers: 5.5.0
  • PyTorch: 2.10.0+cu130
  • Accelerate: 1.13.0
  • Datasets: 4.8.4
  • Tokenizers: 0.22.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",
}

MultipleNegativesRankingLoss

@misc{oord2019representationlearningcontrastivepredictive,
      title={Representation Learning with Contrastive Predictive Coding},
      author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
      year={2019},
      eprint={1807.03748},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/1807.03748},
}
Downloads last month
1
Safetensors
Model size
0.6B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for CaesArdi/Indo-Law-v2

Base model

BAAI/bge-m3
Finetuned
(464)
this model

Papers for CaesArdi/Indo-Law-v2

Evaluation results