SentenceTransformer based on intfloat/multilingual-e5-base

This is a sentence-transformers model finetuned from intfloat/multilingual-e5-base. 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 Type: Sentence Transformer
  • Base model: intfloat/multilingual-e5-base
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'XLMRobertaModel'})
  (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})
  (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("TextModel/E5_Law-v4-Indo")
# Run inference
sentences = [
    'query: Di Bandung, seorang dokter bedah bernama Dr. Lestari melakukan operasi pada pasien bernama Tn. Agus. Karena kurang teliti dalam memeriksa alat operasi, Dr. Lestari menyebabkan komplikasi serius yang mengakibatkan Tn. Agus mengalami cacat permanen dan tidak dapat bekerja lagi sebagai tukang bangunan. Pasal apa yang dapat dikenakan kepada Dr. Lestari?',
    'passage: Pasal 475: (1) Jika Tindak Pidana sebagaimana dimaksud dalam Pasal 474 dilakukan dalam menjalankan jabatan, mata pencaharian, atau profesi, pidananya dapat ditambah 1/3 (satu per tiga). (2) Setiap Orang sebagaimana dimaksud pada ayat (1) dapat juga dijatuhi pidana tambahan berupa pengumuman putusan hakim sebagaimana dimaksud dalam Pasal 66 ayat (1) huruf c dan pencabutan hak sebagaimana dimaksud dalam Pasal 86 huruf f. Pasal ini berlaku karena kasus tersebut melibatkan kelalaian dalam menjalankan profesi medis yang mengakibatkan Luka Berat, sehingga merupakan aggravating circumstance dari Pasal 474 yang diatur dalam Pasal 475.',
    'passage: Pasal 459: Setiap Orang yang dengan rencana terlebih dahulu merampas nyawa orang lain, dipidana karena pembunuhan berencana, dengan pidana mati atau pidana penjara seumur hidup atau pidana penjara paling lama 20 (dua puluh) tahun. Pasal ini mengatur pembunuhan dengan unsur perencanaan atau premeditasi.',
]
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.4145, -0.0171],
#         [ 0.4145,  1.0000,  0.0258],
#         [-0.0171,  0.0258,  1.0000]])

Evaluation

Metrics

Triplet

Metric val test
cosine_accuracy 0.9413 0.9341

Training Details

Training Dataset

Unnamed Dataset

  • Size: 2,004 training samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 1000 samples:
    anchor positive negative
    type string string string
    details
    • min: 16 tokens
    • mean: 27.05 tokens
    • max: 57 tokens
    • min: 19 tokens
    • mean: 51.74 tokens
    • max: 103 tokens
    • min: 16 tokens
    • mean: 42.66 tokens
    • max: 83 tokens
  • Samples:
    anchor positive negative
    query: Kalo mau lapor ke polisi soal pencemaran nama baik, apa emang harus nunggu korban datang lapor sendiri atau polisi bisa langsung tangkap pelakunya? passage: Pasal 24: Dalam hal tertentu, pelaku Tindak Pidana hanya dapat dituntut atas dasar pengaduan. Tindak Pidana aduan harus ditentukan secara tegas dalam Undang-Undang. passage: Pasal 28: Pengaduan dilakukan dengan cara menyampaikan pemberitahuan dan permohonan untuk dituntut. Pengaduan sebagaimana dimaksud diajukan secara lisan atau tertulis kepada Pejabat yang berwenang.
    query: Anak saya yang masih 14 tahun kena aniaya sama tetangga, saya sebagai bapaknya yang lapor polisi. Tapi ternyata Anak saya yang masih 14 tahun kena aniaya, saya sebagai bapaknya yang mau lapor polisi. Apakah saya berhak melapor mewakili anak saya?? passage: Pasal 25: Dalam hal Korban Tindak Pidana aduan belum berumur 16 tahun, yang berhak mengadu merupakan Orang Tua atau walinya. Dalam hal Orang Tua atau wali tidak ada atau Orang Tua/wali itu sendiri yang harus diadukan, pengaduan dilakukan oleh keluarga sedarah dalam garis lurus. passage: Pasal 26: Dalam hal Korban Tindak Pidana aduan berada di bawah pengampuan, yang berhak mengadu merupakan pengampunya, kecuali bagi Korban yang berada dalam pengampuan karena boros. Jika pengampu tidak ada atau pengampu itu sendiri yang harus diadukan, pengaduan dilakukan oleh suami/istri atau keluarga sedarah.
    query: Saya kemarin udah lapor polisi soal kejadian yang menimpa saya, tapi sekarang saya udah maafin pelakunya dan mau cabut laporan. Apa yang bakal terjadi sama perkara ini? passage: Pasal 30: Pengaduan dapat ditarik kembali oleh pengadu dalam waktu 3 Bulan terhitung sejak tanggal pengaduan diajukan. Pengaduan yang ditarik kembali tidak dapat diajukan lagi. passage: Pasal 29: Pengaduan harus diajukan dalam tenggang waktu 6 Bulan terhitung sejak tanggal orang yang berhak mengadu mengetahui adanya Tindak Pidana jika bertempat tinggal di wilayah NKRI. Jika yang berhak mengadu lebih dari 1 orang, tenggang waktu dihitung sejak tanggal masing-masing pengadu mengetahui adanya Tindak Pidana.
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 409 evaluation samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 409 samples:
    anchor positive negative
    type string string string
    details
    • min: 13 tokens
    • mean: 48.55 tokens
    • max: 124 tokens
    • min: 22 tokens
    • mean: 92.34 tokens
    • max: 512 tokens
    • min: 19 tokens
    • mean: 73.33 tokens
    • max: 508 tokens
  • Samples:
    anchor positive negative
    query: Berapa hukuman untuk menyatakan kebencian terhadap suku tertentu di depan orang banyak? passage: Orang yang menyatakan kebencian terhadap suatu suku atau golongan penduduk di depan umum dapat dihukum penjara paling lama 3 tahun atau denda paling banyak kategori IV. (Pasal 242 KUHP) passage: Orang yang menyatakan kebencian terhadap suatu golongan agama atau kepercayaan tertentu di depan umum dapat dihukum penjara paling lama 3 tahun atau denda paling banyak kategori IV. (Pasal 300 KUHP)
    query: Arief Budiman, warga Kota Semarang, pada bulan Maret 2024 secara lisan menyampaikan tuduhan kepada sejumlah tetangganya bahwa DR. Santi Rahayu, seorang dokter terhormat di lingkungan mereka, terlibat dalam praktik penipuan pasien. Pernyataan tersebut diucapkan di depan warga dalam rapat RT dengan tujuan agar tuduhan tersebut diketahui umum. Pernyataan Arief tidak disertai bukti apapun dan terbukti tidak benar. DR. Santi merasa nama baiknya sangat dirugikan. Pasal apa yang dapat dikenakan kepada Arief Budiman? passage: Pasal 433: (1) Setiap Orang yang dengan lisan menyerang kehormatan atau nama baik orang lain dengan cara menuduhkan suatu hal, dengan maksud supaya hal tersebut diketahui umum, dipidana karena pencemaran, dengan pidana penjara paling lama 9 (sembilan) Bulan atau pidana denda paling banyak kategori II. (2) Jika perbuatan sebagaimana dimaksud pada ayat (1) dilakukan dengan tulisan atau gambar yang disiarkan, dipertunjukkan, atau ditempelkan di tempat umum, dipidana karena pencemaran tertulis, dengan pidana penjara paling lama 1 (satu) tahun 6 (enam) Bulan atau pidana denda paling banyak kategori III.. Pasal ini berlaku karena Arief Budiman secara lisan menyerang kehormatan dan nama baik DR. Santi Rahayu dengan cara menuduhkan suatu hal (keterlibatan dalam penipuan pasien) dengan maksud agar hal tersebut diketahui umum, yang tepat masuk dalam kualifikasi pencemaran sebagaimana diatur dalam Pasal 433 ayat (1) KUHP 2023.. passage: Pasal 434: (1) Jika Setiap Orang sebagaimana dimaksud dalam Pasal 433 diberi kesempatan membuktikan kebenaran hal yang dituduhkan tetapi tidak dapat membuktikannya, dan tuduhan tersebut bertentangan dengan yang diketahuinya, dipidana karena fitnah, dengan pidana penjara paling lama 3 (tiga) tahun atau pidana denda paling banyak kategori IV. (2) Pembuktian kebenaran tuduhan sebagaimana dimaksud pada ayat (1), hanya dapat dilakukan dalam hal: a. hakim memandang perlu untuk memeriksa kebenaran tuduhan tersebut guna mempertimbangkan keterangan terdakwa bahwa terdakwa melakukan perbuatan tersebut untuk kepentingan umum atau karena terpaksa untuk membela diri; atau b. Pejabat dituduh melakukan suatu hal dalam menjalankan tugas jabatannya.. Pasal ini mengatur fitnah, yaitu pencemaran di mana pelaku diberikan kesempatan membuktikan kebenaran tuduhan tetapi tidak dapat membuktikannya dan tuduhan bertentangan dengan yang diketahuinya, merupakan kualifikasi lebih berat dari pencemaran bi...
    query: Kalau orang yang saya tuduh dibebaskan pengadilan, apakah itu otomatis jadi bukti kalau tuduhan saya salah? passage: Ya, jika putusan pengadilan yang telah berkekuatan hukum tetap menyatakan orang yang dihina dibebaskan dari hal yang dituduhkan, putusan tersebut dianggap sebagai bukti sempurna bahwa hal yang dituduhkan tidak benar. (Pasal 435 ayat (2) KUHP) passage: Jika tuduhan tersebut hanya dapat dituntut atas pengaduan dan pengaduan tidak diajukan, maka pembuktian kebenaran tuduhan tidak dapat dilakukan meskipun ada bukti lain. (Pasal 434 ayat (3) KUHP)
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: epoch
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 4
  • gradient_accumulation_steps: 4
  • learning_rate: 1e-05
  • weight_decay: 0.01
  • num_train_epochs: 5
  • warmup_ratio: 0.3
  • warmup_steps: 0.3
  • fp16: True
  • load_best_model_at_end: True
  • dataloader_pin_memory: False
  • gradient_checkpointing: True
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • do_predict: False
  • eval_strategy: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 4
  • gradient_accumulation_steps: 4
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 1e-05
  • weight_decay: 0.01
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 5
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_ratio: 0.3
  • warmup_steps: 0.3
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • enable_jit_checkpoint: False
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • use_cpu: False
  • seed: 42
  • data_seed: None
  • bf16: False
  • fp16: True
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: -1
  • ddp_backend: None
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': 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
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • group_by_length: False
  • length_column_name: length
  • project: huggingface
  • trackio_space_id: trackio
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: False
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • 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: True
  • gradient_checkpointing_kwargs: None
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • auto_find_batch_size: False
  • full_determinism: False
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_num_input_tokens_seen: no
  • 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: True
  • use_cache: False
  • 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.8949 0.8732
1.0 63 1.5265 0.4622 0.9315 -
2.0 126 0.4451 0.2844 0.9389 -
3.0 189 0.2151 0.2508 0.9315 -
4.0 252 0.1429 0.242 0.9413 -
5.0 315 0.1171 0.2386 0.9413 -
-1 -1 - - 0.9413 0.9341
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.12.12
  • Sentence Transformers: 5.2.3
  • Transformers: 5.0.0
  • PyTorch: 2.10.0+cu128
  • Accelerate: 1.12.0
  • Datasets: 4.8.3
  • 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{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
48
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for TextModel/E5_Law-v4-Indo

Finetuned
(132)
this model

Papers for TextModel/E5_Law-v4-Indo

Evaluation results