Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use hotamago/baai-general-embedding-finetune with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("hotamago/baai-general-embedding-finetune")
sentences = [
"Đối tượng hưởng chính sách ưu đãi đối với công nghiệp hỗ trợ được quy định như thế nào?",
"1. Hoạt động thương mại là hoạt động nhằm mục đích sinh lợi, bao gồm mua bán hàng hoá, cung ứng dịch vụ, đầu tư, xúc tiến thương mại và các hoạt động nhằm mục đích sinh lợi khác.",
"\"Điều 11. Đối tượng và thủ tục xác nhận ưu đãi\n1. Đối tượng ưu đãi:\nDự án sản xuất sản phẩm công nghiệp hỗ trợ thuộc Danh mục sản phẩm công nghiệp hỗ trợ ưu tiên phát triển: Bao gồm dự án đầu tư mới, dự án mở rộng và đổi mới công nghệ có ứng dụng thiết bị mới, quy trình sản xuất mới, sản xuất sản phẩm với năng lực sản xuất tăng ít nhất 20%.\"",
"Nghị định này áp dụng đối với tổ chức, cá nhân sử dụng năng lượng tại Việt Nam."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from intfloat/multilingual-e5-large-instruct. 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.
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 1024, '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): Dense({'in_features': 1024, 'out_features': 1024, 'bias': True, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dropout(
(dropout_layer): Dropout(p=0.1, inplace=False)
)
(4): Dense({'in_features': 1024, 'out_features': 1024, 'bias': True, 'activation_function': 'torch.nn.modules.activation.Tanh'})
(5): Normalize()
)
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 = [
'Thời điểm xem xét bổ nhiệm lại công chức lãnh đạo cấp Vụ theo quy định là bao lâu?',
'Thời điểm xem xét bổ nhiệm lại, thời hạn giữ chức vụ\n1. Thời điểm xem xét bổ nhiệm lại \na) Chậm nhất là 90 ngày trước ngày hết thời hạn bổ nhiệm công chức, viên chức cấp vụ và cấp phòng, đơn vị thuộc Bộ phải tiến hành quy trình bổ nhiệm lại để quyết định hoặc trình cấp có thẩm quyền xem xét, quyết định bổ nhiệm lại hoặc không bổ nhiệm lại công chức lãnh đạo, quản lý;\nb) Quyết định bổ nhiệm lại công chức giữ chức vụ lãnh đạo, quản lý phải được ban hành trước ít nhất 01 ngày làm việc, tính đến ngày hết thời hạn bổ nhiệm.\n...',
'Khoản 5. Cấp có thẩm quyền bổ nhiệm quyết định tiêu chuẩn, điều kiện về thành tích, kết quả và sản phẩm cụ thể phù hợp để thực hiện việc bổ nhiệm trong thời gian chưa có văn bản hướng dẫn nội dung quy định tại điểm b khoản 2 Điều 33 Nghị định này.',
]
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]
TripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.9885 |
| dot_accuracy | 0.0097 |
| manhattan_accuracy | 0.9884 |
| euclidean_accuracy | 0.9885 |
| max_accuracy | 0.9885 |
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Người phát ngôn của Bộ Công thương được quyền phát ngôn trong trường hợp đột xuất nào? |
Phát ngôn và cung cấp thông tin trong trường hợp đột xuất, bất thường |
Người phát ngôn được quyền từ chối trả lời những vấn đề về hoạt động của Chính phủ, Thủ tướng Chính phủ không thuộc thẩm quyền phát ngôn; được quyền cải chính những thông tin không đúng sự thật liên quan đến quan điểm và hoạt động của Chính phủ, Thủ tướng Chính phủ |
Lệ phí thực hiện thủ tục công nhận doanh nghiệp ưu tiên trong lĩnh vực hải quan là bao nhiêu? |
NỘI DỤNG CỤ THỂ CỦA TỪNG THỦ TỤC HÀNH CHÍNH THUỘC PHẠM VI CHỨC NĂNG QUẢN LÝ CỦA BỘ TÀI CHÍNH |
Quyết định này áp dụng đối với cơ quan nhà nước, doanh nghiệp và tổ chức, cá nhân tham gia hoạt động nhập khẩu, sản xuất và kinh doanh hàng hóa quy định tại khoản 1 và khoản 2 Điều 3 Quyết định này. |
Chuẩn bị phiên họp giải quyết tranh chấp |
Điều 54. Chuẩn bị phiên họp giải quyết tranh chấp |
Điều 3. Giải thích từ ngữ |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Địa điểm, cơ sở hạ tầng, trang thiết bị khảo nghiệm tính đồng nhất giống ngô được quy định như thế nào? |
Yêu cầu về khảo nghiệm |
Khoản 1.12. Phụ lục 12: Yêu cầu kỹ thuật và phương pháp thử đối với trinatri citrat |
Hoạt động thương mại có những đặc điểm nào? |
1. Hoạt động thương mại là hoạt động nhằm mục đích sinh lợi, bao gồm mua bán hàng hoá, cung ứng dịch vụ, đầu tư, xúc tiến thương mại và các hoạt động nhằm mục đích sinh lợi khác. |
Điều 2. Sửa đổi, bổ sung một số điều Nghị định số 20/2006/NĐ-CP ngày 20 tháng 02 năm 2006 của Chính phủ quy định chi tiết Luật Thương mại về kinh doanh dịch vụ giám định thương mại |
Cơ cấu tổ chức của Hội đồng phối hợp phổ biến giáo dục pháp luật Bộ Công an bao gồm những thành phần nào? |
Cơ cấu tổ chức của Hội đồng, chế độ làm việc và con dấu của Hội đồng |
Thông tư này hướng dẫn về nghiệp vụ để thực hiện chức năng, nhiệm vụ, quyền hạn của các tổ chức pháp chế. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 32per_device_eval_batch_size: 32warmup_ratio: 0.1bf16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 32per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 3max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | Validation Loss | max_accuracy |
|---|---|---|---|---|
| 0.0280 | 100 | 2.4949 | - | - |
| 0.0559 | 200 | 0.6501 | - | - |
| 0.0839 | 300 | 0.3105 | - | - |
| 0.1118 | 400 | 0.2505 | - | - |
| 0.1398 | 500 | 0.2088 | - | - |
| 0.1677 | 600 | 0.1804 | - | - |
| 0.1957 | 700 | 0.1977 | - | - |
| 0.2237 | 800 | 0.1602 | - | - |
| 0.2516 | 900 | 0.1663 | - | - |
| 0.2796 | 1000 | 0.1513 | - | - |
| 0.3075 | 1100 | 0.1522 | - | - |
| 0.3355 | 1200 | 0.1562 | - | - |
| 0.3634 | 1300 | 0.155 | - | - |
| 0.3914 | 1400 | 0.1542 | - | - |
| 0.4193 | 1500 | 0.1326 | - | - |
| 0.4473 | 1600 | 0.1572 | - | - |
| 0.4753 | 1700 | 0.1307 | - | - |
| 0.5032 | 1800 | 0.1428 | - | - |
| 0.5312 | 1900 | 0.1446 | - | - |
| 0.5591 | 2000 | 0.1275 | 0.0946 | 0.9849 |
| 0.5871 | 2100 | 0.1328 | - | - |
| 0.6150 | 2200 | 0.1235 | - | - |
| 0.6430 | 2300 | 0.1245 | - | - |
| 0.6710 | 2400 | 0.1354 | - | - |
| 0.6989 | 2500 | 0.1217 | - | - |
| 0.7269 | 2600 | 0.1282 | - | - |
| 0.7548 | 2700 | 0.1326 | - | - |
| 0.7828 | 2800 | 0.1109 | - | - |
| 0.8107 | 2900 | 0.1165 | - | - |
| 0.8387 | 3000 | 0.1368 | - | - |
| 0.8666 | 3100 | 0.1174 | - | - |
| 0.8946 | 3200 | 0.1102 | - | - |
| 0.9226 | 3300 | 0.1151 | - | - |
| 0.9505 | 3400 | 0.1218 | - | - |
| 0.9785 | 3500 | 0.1109 | - | - |
| 1.0064 | 3600 | 0.1144 | - | - |
| 1.0344 | 3700 | 0.1148 | - | - |
| 1.0623 | 3800 | 0.1187 | - | - |
| 1.0903 | 3900 | 0.1126 | - | - |
| 1.1183 | 4000 | 0.1102 | 0.0833 | 0.9862 |
| 1.1462 | 4100 | 0.101 | - | - |
| 1.1742 | 4200 | 0.1137 | - | - |
| 1.2021 | 4300 | 0.0936 | - | - |
| 1.2301 | 4400 | 0.0889 | - | - |
| 1.2580 | 4500 | 0.0966 | - | - |
| 1.2860 | 4600 | 0.0803 | - | - |
| 1.3140 | 4700 | 0.0896 | - | - |
| 1.3419 | 4800 | 0.095 | - | - |
| 1.3699 | 4900 | 0.0979 | - | - |
| 1.3978 | 5000 | 0.0973 | - | - |
| 1.4258 | 5100 | 0.0911 | - | - |
| 1.4537 | 5200 | 0.1029 | - | - |
| 1.4817 | 5300 | 0.0914 | - | - |
| 1.5096 | 5400 | 0.0909 | - | - |
| 1.5376 | 5500 | 0.0923 | - | - |
| 1.5656 | 5600 | 0.0856 | - | - |
| 1.5935 | 5700 | 0.0849 | - | - |
| 1.6215 | 5800 | 0.0835 | - | - |
| 1.6494 | 5900 | 0.0957 | - | - |
| 1.6774 | 6000 | 0.0951 | 0.0768 | 0.9887 |
| 1.7053 | 6100 | 0.0818 | - | - |
| 1.7333 | 6200 | 0.099 | - | - |
| 1.7613 | 6300 | 0.0893 | - | - |
| 1.7892 | 6400 | 0.0897 | - | - |
| 1.8172 | 6500 | 0.0837 | - | - |
| 1.8451 | 6600 | 0.0993 | - | - |
| 1.8731 | 6700 | 0.0855 | - | - |
| 1.9010 | 6800 | 0.0852 | - | - |
| 1.9290 | 6900 | 0.0823 | - | - |
| 1.9569 | 7000 | 0.0869 | - | - |
| 1.9849 | 7100 | 0.0823 | - | - |
| 2.0129 | 7200 | 0.0851 | - | - |
| 2.0408 | 7300 | 0.0833 | - | - |
| 2.0688 | 7400 | 0.0873 | - | - |
| 2.0967 | 7500 | 0.0857 | - | - |
| 2.1247 | 7600 | 0.0828 | - | - |
| 2.1526 | 7700 | 0.0717 | - | - |
| 2.1806 | 7800 | 0.0967 | - | - |
| 2.2086 | 7900 | 0.0713 | - | - |
| 2.2365 | 8000 | 0.0782 | 0.0742 | 0.9882 |
| 2.2645 | 8100 | 0.0681 | - | - |
| 2.2924 | 8200 | 0.0689 | - | - |
| 2.3204 | 8300 | 0.0689 | - | - |
| 2.3483 | 8400 | 0.0753 | - | - |
| 2.3763 | 8500 | 0.0777 | - | - |
| 2.4042 | 8600 | 0.0805 | - | - |
| 2.4322 | 8700 | 0.0787 | - | - |
| 2.4602 | 8800 | 0.0731 | - | - |
| 2.4881 | 8900 | 0.0743 | - | - |
| 2.5161 | 9000 | 0.0735 | - | - |
| 2.5440 | 9100 | 0.074 | - | - |
| 2.5720 | 9200 | 0.0663 | - | - |
| 2.5999 | 9300 | 0.0706 | - | - |
| 2.6279 | 9400 | 0.0675 | - | - |
| 2.6559 | 9500 | 0.0796 | - | - |
| 2.6838 | 9600 | 0.074 | - | - |
| 2.7118 | 9700 | 0.0703 | - | - |
| 2.7397 | 9800 | 0.0746 | - | - |
| 2.7677 | 9900 | 0.0738 | - | - |
| 2.7956 | 10000 | 0.076 | 0.0714 | 0.9885 |
| 2.8236 | 10100 | 0.0681 | - | - |
| 2.8516 | 10200 | 0.0797 | - | - |
| 2.8795 | 10300 | 0.0678 | - | - |
| 2.9075 | 10400 | 0.0715 | - | - |
| 2.9354 | 10500 | 0.0733 | - | - |
| 2.9634 | 10600 | 0.0659 | - | - |
| 2.9913 | 10700 | 0.0687 | - | - |
@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",
}
@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}
}
Base model
intfloat/multilingual-e5-large-instruct