bkai-fine-tuned-legal

This is a sentence-transformers model finetuned from bkai-foundation-models/vietnamese-bi-encoder 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 Type: Sentence Transformer
  • Base model: bkai-foundation-models/vietnamese-bi-encoder
  • Maximum Sequence Length: 256 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity
  • Training Dataset:
    • json
  • Language: vi
  • License: apache-2.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 256, '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("sentence_transformers_model_id")
# Run inference
sentences = [
    'Tôi làm hộ_lý theo hợp_đồng 68 tại khoa kiểm_soát nhiễm_khuẩn ở bệnh_viện huyện . Công_việc hàng ngày là xử_lý đồ vải bệnh_nhân và xử_lý_dụng_cụ y_tế của bệnh_viện . Tôi đang hưởng lương bậc 4 , hệ_số 2,19 . Tôi xin hỏi , theo Nghị_định 111 / 2022 / NĐ - CP , tôi có được tiếp_tục làm_việc và hưởng các chế_độ của hợp_đồng 68 nữa không hay tôi phải chuyển sang ký hợp_đồng khác ? Nếu chuyển sang loại hợp_đồng khác thì lương và các chế_độ sẽ hưởng thế_nào ? Bộ Nội_vụ trả_lời vấn_đề này như sau : Khoản 1 Điều 13 Nghị_định số111 / 2022 / NĐ - CPquy định : " Người đang thực_hiện các công_việc hỗ_trợ , phục_vụ theo quy_định tại khoản 1 Điều 4 Nghị_định này nếu chưa chuyển sang ký hợp_đồng lao_động theo quy_định của Nghị_định số 161 / 2018 / NĐ - CP ngày 29 tháng 11 năm 2018 của Chính_phủ sửa_đổi , bổ_sung một_số quy_định về tuyển_dụng công_chức , viên_chức , nâng ngạch công_chức , thăng_hạng viên_chức và thực_hiện chế_độ hợp_đồng một_số loại công_việc trong cơ_quan hành_chính nhà_nước , đơn_vị sự_nghiệp công_lập ( sau đây viết tắt là Nghị_định số 161 / 2018 / NĐ - CP ) và cơ_quan , tổ_chức , đơn_vị không ký hợp_đồng dịch_vụ thì trong thời_hạn 12 tháng kể từ ngày Nghị_định này có hiệu_lực , cơ_quan , tổ_chức , đơn_vị phải chuyển sang ký hợp_đồng lao_động . Hợp_đồng lao_động ký_kết phải bảo_đảm quyền , lợi_ích hợp_pháp về tiền_lương , chế_độ bảo_hiểm xã_hội và các chế_độ khác theo quy_định của pháp_luật . Trường_hợp một trong các bên không có nhu_cầu thì giải_quyết chế_độ thôi_việc theo quy_định của pháp_luật " . Như_vậy , trường_hợp bà Trần_Thị_Hoa nếu chưa chuyển sang ký hợp_đồng lao_động theo quy_định của Nghị_định số161 / 2018 / NĐ - CPthì trong thời_hạn 12 tháng kể từ ngày Nghị_định số 111 / 2022 / NĐ - CP có hiệu_lực phải chuyển sang ký hợp_đồng lao_động . Tiền_lương và các chế_độ khác của người lao_động thực_hiện theo quy_định tại khoản 2 Điều 8 Nghị_định số 111 / 2022 / NĐ - CP.',
    'Ký hợp_đồng lao_động theo quy_định mới từ 22 / 2 / 2023',
    'Đối_tượng được bổ_nhiệm Phó_Thủ_trưởng cơ_quan quản_lý thi_hành án hình_sự thuộc Bộ Công_an được quy_định như thế_nào ?',
]
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.4945,  0.0426],
#         [ 0.4945,  1.0000, -0.0422],
#         [ 0.0426, -0.0422,  1.0000]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.3765
cosine_accuracy@3 0.496
cosine_accuracy@5 0.5676
cosine_accuracy@10 0.7325
cosine_precision@1 0.3765
cosine_precision@3 0.1653
cosine_precision@5 0.1135
cosine_precision@10 0.0733
cosine_recall@1 0.3765
cosine_recall@3 0.496
cosine_recall@5 0.5676
cosine_recall@10 0.7325
cosine_ndcg@10 0.527
cosine_mrr@10 0.4651
cosine_map@100 0.475

Information Retrieval

Metric Value
cosine_accuracy@1 0.3719
cosine_accuracy@3 0.4942
cosine_accuracy@5 0.5782
cosine_accuracy@10 0.7376
cosine_precision@1 0.3719
cosine_precision@3 0.1647
cosine_precision@5 0.1156
cosine_precision@10 0.0738
cosine_recall@1 0.3719
cosine_recall@3 0.4942
cosine_recall@5 0.5782
cosine_recall@10 0.7376
cosine_ndcg@10 0.5277
cosine_mrr@10 0.4641
cosine_map@100 0.4736

Information Retrieval

Metric Value
cosine_accuracy@1 0.3716
cosine_accuracy@3 0.493
cosine_accuracy@5 0.5681
cosine_accuracy@10 0.731
cosine_precision@1 0.3716
cosine_precision@3 0.1643
cosine_precision@5 0.1136
cosine_precision@10 0.0731
cosine_recall@1 0.3716
cosine_recall@3 0.493
cosine_recall@5 0.5681
cosine_recall@10 0.731
cosine_ndcg@10 0.5243
cosine_mrr@10 0.4619
cosine_map@100 0.4719

Information Retrieval

Metric Value
cosine_accuracy@1 0.3642
cosine_accuracy@3 0.4833
cosine_accuracy@5 0.5603
cosine_accuracy@10 0.7292
cosine_precision@1 0.3642
cosine_precision@3 0.1611
cosine_precision@5 0.1121
cosine_precision@10 0.0729
cosine_recall@1 0.3642
cosine_recall@3 0.4833
cosine_recall@5 0.5603
cosine_recall@10 0.7292
cosine_ndcg@10 0.5188
cosine_mrr@10 0.4553
cosine_map@100 0.4651

Information Retrieval

Metric Value
cosine_accuracy@1 0.3585
cosine_accuracy@3 0.4741
cosine_accuracy@5 0.5512
cosine_accuracy@10 0.7168
cosine_precision@1 0.3585
cosine_precision@3 0.158
cosine_precision@5 0.1102
cosine_precision@10 0.0717
cosine_recall@1 0.3585
cosine_recall@3 0.4741
cosine_recall@5 0.5512
cosine_recall@10 0.7168
cosine_ndcg@10 0.51
cosine_mrr@10 0.4477
cosine_map@100 0.458

Training Details

Training Dataset

json

  • Dataset: json
  • Size: 57,371 training samples
  • Columns: positive and anchor
  • Approximate statistics based on the first 1000 samples:
    positive anchor
    type string string
    details
    • min: 16 tokens
    • mean: 180.36 tokens
    • max: 256 tokens
    • min: 5 tokens
    • mean: 16.49 tokens
    • max: 52 tokens
  • Samples:
    positive anchor
    Điều 3 Quyết_định 44 / 2015 / QĐ - UBND thu quản_lý phí tham_gia đấu_giá quyền khai_thác khoáng_sản Bình_Dương có nội_dung như sau :

    Điều 3 . Chánh Văn_phòng Ủy_ban nhân_dân Thủ_trưởng các sở , ban , ngành , Chủ_tịch Ủy_ban nhân_dân các huyện , thị_xã , thành_phố và Thủ_trưởng các đơn_vị , tổ_chức , cá_nhân có liên_quan chịu trách_nhiệm thi_hành Quyết_định này
    Điều 3 Quyết_định 44 / 2015 / QĐ - UBND thu quản_lý phí tham_gia đấu_giá quyền khai_thác khoáng_sản Bình_Dương
    Điều 2 Quyết_định 3592 / QĐ - UBND 2020 phổ_biến pháp_luật hòa giải ở cơ_sở Khánh_Hòa có nội_dung như sau :

    Điều 2 . Quyết_định này có hiệu_lực thi_hành kể từ ngày ký .
    Điều 2 Quyết_định 3592 / QĐ - UBND 2020 phổ_biến pháp_luật hòa giải ở cơ_sở Khánh_Hòa
    Điều 5 . Xác_định chi_phí lập , thẩm_định đồ_án quy_hoạch 1 . Nội_dung , sản_phẩm đồ_án quy_hoạch được quy_định tại Nghị_định quy_định chi_tiết một_số nội_dung về quy_hoạch xây_dựng , Nghị_định về lập , thẩm_định , phê_duyệt và quản_lý quy_hoạch đô_thị , các Nghị_định chuyên_ngành có liên_quan và các văn_bản hướng_dẫn .
    2 . Chi_phí lập đồ_án quy_hoạch bao_gồm các chi_phí sau : chi_phí cho những người tham_gia thực_hiện lập đồ_án , các chi_phí khác ( chi_phí mua tài_liệu , số_liệu , bản_đồ , văn_phòng_phẩm , phần_mềm quy_hoạch ( nếu có ) , chi_phí khấu_hao thiết_bị , chi_phí đi_lại , chi_phí lưu_trú , chi_phí hội_nghị , hội_thảo và các khoản chi_phí khác ( nếu có ) ) .
    3 . Chi_phí lập đồ_án quy_hoạch xác_định theo định_mức được quy_định tại Thông_tư này chưa bao_gồm chi_phí để thực_hiện các công_việc sau :
    a ) Lập nhiệm_vụ quy_hoạch .
    b ) Khảo_sát xây_dựng phục_vụ lập đồ_án quy_hoạch .
    c ) Mua hoặc lập các bản_đồ địa_hình phục_vụ lập đồ_án quy_hoạch ( nếu có ) .
    4 . Chi_phí ...
    Chi_phí điều_chỉnh đồ_án quy_hoạch được xác_định như thế_nào ?
  • 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
    }
    

Evaluation Dataset

json

  • Dataset: json
  • Size: 7,172 evaluation samples
  • Columns: positive and anchor
  • Approximate statistics based on the first 1000 samples:
    positive anchor
    type string string
    details
    • min: 13 tokens
    • mean: 181.46 tokens
    • max: 256 tokens
    • min: 6 tokens
    • mean: 16.05 tokens
    • max: 38 tokens
  • Samples:
    positive anchor
    Cơ_quan tôi tổ_chức đấu_thầu rộng_rãi trong nước gói_thầu tư_vấn thiết_kế và thi_công ( hình_thức một giai_đoạn hai túi hồ_sơ ) . Có 3 nhà_thầu A , B , C tham_gia và đều là nhà_thầu liên_danh . Tổ chuyên_gia đánh_giá xong phần hồ_sơ đề_xuất kỹ_thuật và đã trình chủ đầu_tư phê_duyệt danh_sách nhà_thầu đáp_ứng yêu_cầu kỹ_thuật . Ngoài_ra , tổ chuyên_gia còn có thông_báo gửi các nhà_thầu liên_danh về danh_sách nhà_thầu đáp_ứng yêu_cầu kỹ_thuật và nhà_thầu không đáp_ứng yêu_cầu kỹ_thuật . Sau đó có nhà_thầu liên_danh C không đáp_ứng yêu_cầu kỹ_thuật đã kiến_nghị gửi chủ đầu_tư về kết_quả đánh_giá hồ_sơ đề_xuất kỹ_thuật . Tuy_nhiên đơn_vị gửi kiến_nghị đến chủ đầu_tư lại là một thành_viên của liên_danh nhà_thầu C , không phải là nhà_thầu đứng đầu liên_danh . Tôi xin hỏi , trường_hợp này , thành_viên của nhà_thầu liên_danh có được quyền kiến_nghị không ? Chủ đầu_tư phải giải_quyết như thế_nào hay_là đánh_giá tiếp phần đề_xuất tài_chính ? Bộ Kế_hoạch và Đầu_tư trả_lời vấn_đề này như sau : Kho... Thành_viên liên_danh nhà_thầu có quyền gửi đơn kiến_nghị ?
    Tôi xin hỏi , người làm công_chức cấp xã như địa_chính , xây_dựng , giao_thông thủy_lợi , tài_chính , ... có được hiểu là làm công_tác quản_lý nhà_nước thuộc phạm_vi quản_lý của huyện không ? Bộ Nội_vụ trả_lời vấn_đề này như sau : Chức_danh công_chức cấp xã được quy_định tại Khoản 3 Điều 61Luật Cán_bộ , công chứcnăm 2008 ( sửa_đổi , bổ_sung năm 2019 ) . Nhiệm_vụ của từng chức_danh công_chức cấp xã được quy_định tại Điều 11 Nghị_định số33 / 2023 / NĐ - CPngày 10 / 6 / 2023 của Chính_phủ quy_định về cán_bộ , công_chức cấp xã và người hoạt_động không chuyên_trách ở cấp xã , ở thôn , tổ dân_phố . Theo đó , công_chức cấp xã làm nhiệm_vụ tham_mưu giúp UBND cấp xã về công_tác lý nhà_nước theo lĩnh_vực chuyên_môn , nghiệp_vụ giao trên phạm_vi địa_bàn cấp xã . Căn_cứ các quy_định nêu trên , công_chức cấp xã là người tham_mưu giúp UBND cấp xã về công_tác quản_lý nhà_nước theo lĩnh_vực chuyên_môn được giao trên địa_bàn cấp xã , không phải làm công_tác quản_lý nhà_nước thuộc phạm_vi cấp huyện . Công_chức cấp xã làm nhiệm_vụ gì ?
    Điều 11 . Chế_phẩm sinh_học phải đăng_ký lưu_hành 1 . Chế_phẩm sinh_học sản_xuất trong nước hoặc nhập_khẩu chưa có tên trong Danh_mục chế_phẩm sinh_học trong xử_lý chất_thải tại Việt_Nam .
    2 . Chế_phẩm sinh_học có tên trong Danh_mục chế_phẩm sinh_học trong xử_lý chất_thải tại Việt_Nam nhưng có thay_đổi về thành_phần hoặc hàm_lượng các hoạt_chất trong chế_phẩm sinh_học làm ảnh_hưởng đến hiệu_quả xử_lý và tính an_toàn đối_với sức_khỏe con_người và sinh_vật .
    Chế_phẩm sinh_học phải đăng_ký lưu_hành bao_gồm những chế_phẩm sinh_học nào ?
  • 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: 52
  • per_device_eval_batch_size: 52
  • gradient_accumulation_steps: 12
  • learning_rate: 3e-05
  • weight_decay: 0.2
  • max_grad_norm: 0.65
  • num_train_epochs: 8
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.15
  • warmup_steps: 0.15
  • fp16: True
  • load_best_model_at_end: True
  • group_by_length: 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: 52
  • per_device_eval_batch_size: 52
  • gradient_accumulation_steps: 12
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 3e-05
  • weight_decay: 0.2
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 0.65
  • num_train_epochs: 8
  • max_steps: -1
  • lr_scheduler_type: cosine
  • lr_scheduler_kwargs: None
  • warmup_ratio: 0.15
  • warmup_steps: 0.15
  • 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: True
  • 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: True
  • 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: False
  • 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 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 46 1.0163 0.3857 0.4328 0.4286 0.4233 0.4187 0.3972
2.0 92 0.2933 0.1917 0.5137 0.5136 0.5116 0.5032 0.4928
3.0 138 0.1528 0.1524 0.5216 0.5240 0.5188 0.5185 0.5042
4.0 184 0.1110 0.1392 0.5250 0.5201 0.5190 0.5184 0.5050
5.0 230 0.0876 0.1290 0.5229 0.5279 0.5203 0.5208 0.5083
6.0 276 0.0778 0.1271 0.5270 0.5277 0.5243 0.5188 0.5100

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",
}

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
45
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for bhuy71/embedding_finetuned

Finetuned
(55)
this model

Papers for bhuy71/embedding_finetuned

Evaluation results