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:
- 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
model = SentenceTransformer("KhangLeDuc/ProjectEmbedding")
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)
similarities = model.similarity(embeddings, embeddings)
print(similarities)
Evaluation
Metrics
Information Retrieval
| Metric |
Value |
| cosine_accuracy@1 |
0.3697 |
| cosine_accuracy@3 |
0.4858 |
| cosine_accuracy@5 |
0.5618 |
| cosine_accuracy@10 |
0.7314 |
| cosine_precision@1 |
0.3697 |
| cosine_precision@3 |
0.1619 |
| cosine_precision@5 |
0.1124 |
| cosine_precision@10 |
0.0731 |
| cosine_recall@1 |
0.3697 |
| cosine_recall@3 |
0.4858 |
| cosine_recall@5 |
0.5618 |
| cosine_recall@10 |
0.7314 |
| cosine_ndcg@10 |
0.5219 |
| cosine_mrr@10 |
0.4587 |
| cosine_map@100 |
0.4687 |
Information Retrieval
| Metric |
Value |
| cosine_accuracy@1 |
0.367 |
| cosine_accuracy@3 |
0.4864 |
| cosine_accuracy@5 |
0.5669 |
| cosine_accuracy@10 |
0.7332 |
| cosine_precision@1 |
0.367 |
| cosine_precision@3 |
0.1621 |
| cosine_precision@5 |
0.1134 |
| cosine_precision@10 |
0.0733 |
| cosine_recall@1 |
0.367 |
| cosine_recall@3 |
0.4864 |
| cosine_recall@5 |
0.5669 |
| cosine_recall@10 |
0.7332 |
| cosine_ndcg@10 |
0.5215 |
| cosine_mrr@10 |
0.4575 |
| cosine_map@100 |
0.4674 |
Information Retrieval
| Metric |
Value |
| cosine_accuracy@1 |
0.3652 |
| cosine_accuracy@3 |
0.4843 |
| cosine_accuracy@5 |
0.5609 |
| cosine_accuracy@10 |
0.7293 |
| cosine_precision@1 |
0.3652 |
| cosine_precision@3 |
0.1614 |
| cosine_precision@5 |
0.1122 |
| cosine_precision@10 |
0.0729 |
| cosine_recall@1 |
0.3652 |
| cosine_recall@3 |
0.4843 |
| cosine_recall@5 |
0.5609 |
| cosine_recall@10 |
0.7293 |
| cosine_ndcg@10 |
0.5189 |
| cosine_mrr@10 |
0.4554 |
| cosine_map@100 |
0.4655 |
Information Retrieval
| Metric |
Value |
| cosine_accuracy@1 |
0.3673 |
| cosine_accuracy@3 |
0.4856 |
| cosine_accuracy@5 |
0.5607 |
| cosine_accuracy@10 |
0.7256 |
| cosine_precision@1 |
0.3673 |
| cosine_precision@3 |
0.1619 |
| cosine_precision@5 |
0.1121 |
| cosine_precision@10 |
0.0726 |
| cosine_recall@1 |
0.3673 |
| cosine_recall@3 |
0.4856 |
| cosine_recall@5 |
0.5607 |
| cosine_recall@10 |
0.7256 |
| cosine_ndcg@10 |
0.518 |
| cosine_mrr@10 |
0.4554 |
| cosine_map@100 |
0.4655 |
Information Retrieval
| Metric |
Value |
| cosine_accuracy@1 |
0.3582 |
| cosine_accuracy@3 |
0.4751 |
| cosine_accuracy@5 |
0.5531 |
| cosine_accuracy@10 |
0.7208 |
| cosine_precision@1 |
0.3582 |
| cosine_precision@3 |
0.1584 |
| cosine_precision@5 |
0.1106 |
| cosine_precision@10 |
0.0721 |
| cosine_recall@1 |
0.3582 |
| cosine_recall@3 |
0.4751 |
| cosine_recall@5 |
0.5531 |
| cosine_recall@10 |
0.7208 |
| cosine_ndcg@10 |
0.5115 |
| cosine_mrr@10 |
0.4484 |
| cosine_map@100 |
0.4584 |
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
fp16: True
load_best_model_at_end: True
group_by_length: 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: 52
per_device_eval_batch_size: 52
per_gpu_train_batch_size: None
per_gpu_eval_batch_size: None
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: {}
warmup_ratio: 0.15
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
bf16: False
fp16: True
fp16_opt_level: O1
half_precision_backend: auto
bf16_full_eval: False
fp16_full_eval: False
tf32: None
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}
parallelism_config: None
deepspeed: None
label_smoothing_factor: 0.0
optim: adamw_torch_fused
optim_args: None
adafactor: False
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
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: 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
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 |
92 |
0.5777 |
0.1919 |
0.4327 |
0.4327 |
0.4285 |
0.4231 |
0.3973 |
| 2.0 |
184 |
0.1552 |
0.1167 |
0.5138 |
0.5103 |
0.5068 |
0.5022 |
0.4873 |
| 3.0 |
276 |
0.0768 |
0.1053 |
0.5156 |
0.5139 |
0.5093 |
0.5081 |
0.4955 |
| 4.0 |
368 |
0.0571 |
0.0954 |
0.5184 |
0.5184 |
0.5164 |
0.5120 |
0.5010 |
| 5.0 |
460 |
0.0491 |
0.0854 |
0.5191 |
0.5196 |
0.5156 |
0.5168 |
0.5049 |
| 6.0 |
552 |
0.0421 |
0.0839 |
0.5215 |
0.5227 |
0.5187 |
0.5183 |
0.5088 |
| 7.0 |
644 |
0.0352 |
0.0834 |
0.5219 |
0.5215 |
0.5189 |
0.518 |
0.5115 |
- The bold row denotes the saved checkpoint.
Framework Versions
- Python: 3.10.12
- Sentence Transformers: 5.1.2
- Transformers: 4.57.1
- PyTorch: 2.9.0+cu128
- Accelerate: 1.11.0
- Datasets: 4.4.1
- Tokenizers: 0.22.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}
}