Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use anhtuansh/ModernBERT-base-test-v2 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("anhtuansh/ModernBERT-base-test-v2")
sentences = [
"pháp_luật quy_định như thế_nào về lưu_trữ và bảo_đảm tính toàn_vẹn của chứng_từ điện_tử trong thực_hiện các chế_độ bảo_hiểm_thất_nghiệp ?",
"a ) tổ_chức và thực_hiện xử_lý , phân_tích , tổng_hợp và cung_cấp thông_tin khoa_học và công_nghệ , thông_tin thống_kê khoa_học , công_nghệ và đổi_mới sáng_tạo phục_vụ lãnh_đạo , quản_lý , nghiên_cứu , đào_tạo , sản_xuất , kinh_doanh và phát_triển kinh_tế - xã_hội tại địa_phương ; \n b ) tổ_chức hướng_dẫn và triển_khai thực_hiện công_tác thu_thập , đăng_ký , lưu_giữ và công_bố thông_tin về nhiệm_vụ khoa_học và công_nghệ thuộc phạm_vi quản_lý của địa_phương theo quy_định ; \n c ) xây_dựng và phát_triển hạ_tầng thông_tin khoa_học và công_nghệ ; tham_gia xây_dựng , cập_nhật và khai_thác cơ_sở dữ_liệu quốc_gia về khoa_học và công_nghệ ; xây_dựng , quản_lý , kết_nối và chia_sẻ các cơ_sở dữ_liệu về khoa_học và công_nghệ của địa_phương bảo_đảm việc tích_hợp , trao_đổi , chia_sẻ dữ_liệu đồng_bộ , thống_nhất ; tham_gia khai_thác , duy_trì và phát_triển mạng nghiên_cứu và đào_tạo việt_nam ( vinaren ) và các mạng thông_tin khoa_học và công_nghệ khác ; ứng_dụng công_nghệ thông_tin và truyền_thông , phương_tiện kỹ_thuật tiên_tiến trong hoạt_động thông_tin , thống_kê khoa_học và công_nghệ ; \n d ) đầu_mối kết_nối triển_khai các dự_án của hệ tri_thức việt_số hóa tại địa_phương .",
"điều 19 . nghĩa_vụ của trung_tâm dịch_vụ_việc_làm khi tham_gia giao_dịch điện_tử trong lĩnh_vực bảo_hiểm xã_hội \n 1 . thực_hiện giao_dịch điện_tử trong giải_quyết các chế_độ bảo_hiểm_thất_nghiệp . \n 2 . cung_cấp danh_sách các quyết_định bảo_hiểm_thất_nghiệp , đối_tượng không đến khai_báo việc làm_hàng tháng , đối_tượng đăng_ký học nghề và tư_vấn giới_thiệu việc_làm , đối_tượng đến đăng_ký bảo_lưu bảo_hiểm_thất_nghiệp , không nhận quyết_định ( hủy quyết_định hưởng bảo_hiểm_thất_nghiệp ) bằng phương_tiện điện_tử . \n 3 . lưu_trữ và bảo_đảm tính toàn_vẹn của toàn_bộ chứng_từ điện_tử trong thực_hiện các chế_độ bảo_hiểm_thất_nghiệp ; thực_hiện các quy_định pháp_luật về bảo_đảm an_toàn , an_ninh hệ_thống dữ_liệu điện_tử . \n 4 . chấp_hành sự thanh_tra , kiểm_tra của các cơ_quan có thẩm_quyền theo quy_định của pháp_luật .",
"khoản 1 . hàng năm , trước ngày 25 tháng 12 , bộ thông_tin và truyền_thông giao kế_hoạch cung_ứng dịch_vụ bưu_chính công_ích và dịch_vụ công_ích trong hoạt_động phát_hành báo_chí . nội_dung kế_hoạch bao_gồm : \n a ) sản_lượng các dịch_vụ bưu_chính công_ích quy_định tại khoản 1 , điều 2 thông_tư này . đơn_vị tính chỉ_tiêu kế_hoạch là cái ( thư ) ; \n b ) sản_lượng từng loại báo , tạp_chí theo quy_định tại điều 3 thông_tư này . đơn_vị tính chỉ_tiêu kế_hoạch là tờ ( báo ) , cuốn ( tạp_chí ) ; \n c ) chất_lượng dịch_vụ theo quy_chuẩn kỹ_thuật quốc_gia về chất_lượng dịch_vụ bưu_chính công_ích , dịch_vụ công_ích trong hoạt_động phát_hành báo_chí ; giá cước dịch_vụ theo quy_định của bộ thông_tin và truyền_thông ; \n d ) thời_gian thực_hiện kế_hoạch cung_ứng dịch_vụ : từ ngày 01 tháng 01 đến hết ngày 31 tháng 12 của năm kế_hoạch ."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from answerdotai/ModernBERT-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.
SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: ModernBertModel
(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})
)
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("anhtuansh/ModernBERT-base-test-v2")
# Run inference
sentences = [
'bộ tài_chính quy_định thế_nào về người chủ sở_hữu thực hưởng của khoản thu_nhập trong trường_hợp áp_dụng hiệp_định tránh đánh thuế hai lần ?',
'3 . người đề_nghị áp_dụng hiệp_định không phải là người chủ sở_hữu thực hưởng của khoản thu_nhập mà số thuế liên_quan đến khoản thu_nhập đó được đề_nghị miễn , giảm theo hiệp_định . người chủ sở_hữu thực hưởng có_thể là một cá_nhân , một công_ty hoặc một tổ_chức nhưng phải là đối_tượng có quyền sở_hữu và kiểm_soát đối_với thu_nhập , tài_sản , hoặc các quyền tạo ra thu_nhập . khi xem_xét để xác_định một đối_tượng là một người chủ sở_hữu thực hưởng , cơ_quan thuế sẽ xem_xét toàn_bộ các yếu_tố và hoàn_cảnh liên_quan đến đối_tượng đó trên cơ_sở nguyên_tắc “ bản_chất quyết_định hình_thức ” vì mục_tiêu của hiệp_định là tránh đánh thuế hai lần và ngăn_ngừa việc trốn lậu thuế . trong các trường_hợp sau đây , một đối_tượng sẽ không được coi là một người chủ sở_hữu thực hưởng : \n a ) khi người đề_nghị là một đối_tượng không cư_trú có nghĩa_vụ phân_phối hơn 50 % thu_nhập của mình cho một đối_tượng cư_trú của nước thứ ba trong phạm_vi 12 tháng kể từ khi nhận được thu_nhập ;',
'điều 51 . sử_dụng tiền ký_quỹ \n 1 . doanh_nghiệp bảo_hiểm , chi_nhánh nước_ngoài chỉ được sử_dụng tiền ký_quỹ để đáp_ứng các cam_kết đối_với bên mua bảo_hiểm khi khả_năng thanh_toán bị thiếu_hụt và phải được bộ tài_chính chấp_thuận bằng văn_bản . trong thời_hạn 90 ngày , kể từ ngày sử_dụng tiền ký_quỹ , doanh_nghiệp bảo_hiểm , chi_nhánh nước_ngoài có trách_nhiệm bổ_sung tiền ký_quỹ đã sử_dụng . \n 2 . doanh_nghiệp bảo_hiểm , chi_nhánh nước_ngoài được rút toàn_bộ tiền ký_quỹ khi chấm_dứt hoạt_động .',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
public_administrativeTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.981 |
query, positive, and negative| query | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | positive | negative |
|---|---|---|
bộ tài_chính quy_định thế_nào về chi_phí cho cán_bộ , công_chức , viên_chức đi công_tác nước_ngoài để kiểm_tra tình_hình phát_triển của trẻ_em việt_nam được nhận làm con_nuôi ở nước_ngoài ? |
c ) chi công_tác_phí cho cán_bộ , công_chức , viên_chức đi công_tác nước_ngoài để kiểm_tra tình_hình phát_triển của trẻ_em việt_nam được nhận làm con_nuôi ở nước_ngoài ( nếu có ) thực_hiện theo quy_định tại thông_tư số 102 / 2012 / tt - btc ngày 21 / 6 / 2012 của bộ tài_chính quy_định_chế_độ công_tác_phí cho cán_bộ , công_chức nhà_nước đi công_tác ngắn_hạn ở nước_ngoài do ngân_sách nhà_nước bảo_đảm kinh_phí ; |
điều 15 . nhiệm_vụ , quyền_hạn của bộ tài_chính |
khi thuê đất để xây_dựng cơ_sở hạ_tầng , xây_dựng nhà để bán , giá đất được trừ để tính thuế giá_trị gia_tăng bao_gồm những chi_phí nào ? |
a ) giá đất được trừ để tính thuế giá_trị gia_tăng được quy_định cụ_thể như sau : - trường_hợp được nhà_nước giao đất để đầu_tư cơ_sở hạ_tầng xây_dựng nhà để bán , giá đất được trừ để tính thuế giá_trị gia_tăng bao_gồm tiền_sử_dụng đất phải nộp ngân_sách nhà_nước ( không kể tiền_sử_dụng đất được miễn , giảm ) và chi_phí bồi_thường , giải_phóng mặt_bằng theo quy_định của pháp_luật ; - trường_hợp đấu_giá quyền sử_dụng đất thì giá đất được trừ để tính thuế giá_trị gia_tăng là giá đất trúng đấu_giá ; - trường_hợp thuê đất để xây_dựng cơ_sở hạ_tầng , xây_dựng nhà để bán , giá đất được trừ để tính thuế giá_trị gia_tăng là tiền thuê đất phải nộp ngân_sách nhà_nước ( không bao_gồm tiền thuê đất được miễn , giảm ) và chi_phí đền_bù , giải_phóng mặt_bằng theo quy_định của pháp_luật ; - trường_hợp cơ_sở kinh_doanh nhận chuyển_nhượng quyền sử_dụng đất của các tổ_chức , cá_nhân thì giá đất được trừ để tính thuế giá_trị gia_tăng là giá đất tại thời_điểm nhận chuyển_nhượng quyền sử_dụng đất bao_gồm c... |
5 . phối_hợp với cơ_quan bảo_hiểm xã_hội trả sổ bảo_hiểm xã_hội cho người lao_động , xác_nhận thời_gian đóng bảo_hiểm xã_hội khi người lao_động chấm_dứt hợp_đồng lao_động , hợp_đồng làm_việc hoặc thôi_việc theo quy_định của pháp_luật . |
nếu tôi vừa có số tiền thuế đủ điều_kiện hoàn , vừa có số tiền thuế tiền chậm nộp , tiền phạt bị truy_thu thì cơ_quan thuế sẽ xử_lý như thế_nào ? |
trường_hợp tại biên_bản kiểm_tra trước hoàn thuế xác_định người nộp thuế vừa có số tiền thuế đủ điều_kiện hoàn , vừa có số tiền thuế tiền chậm nộp , tiền phạt bị truy_thu thì cơ_quan thuế_ban_hành quyết_định xử_lý vi_phạm_pháp_luật về thuế và bù_trừ số tiền thuế được hoàn của người nộp thuế tại quyết_định hoàn thuế_kiêm bù_trừ thu ngân_sách nhà_nước theo mẫu_số 02 / qđ - ht ban_hành kèm theo phụ_lục i thông_tư này . |
điều 59 . quản_lý nhà_nước về kinh_doanh casino |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
query, positive, and negative| query | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | positive | negative |
|---|---|---|
cục y_tế dự_phòng có vai_trò gì trong việc xây_dựng và phát_triển các kế_hoạch hoạt_động phối_hợp trong phòng , chống bệnh lây_truyền từ động_vật sang người ? |
điều 13 . trách_nhiệm của cục y_tế dự_phòng - bộ y_tế |
khoản 1 . chi thường_xuyên : |
theo quy_định , tay_vịn phải được lắp_đặt như thế_nào ở khu_vực cạnh cửa ra vào trên xe_khách thành_phố để người khuyết_tật tiếp_cận ? |
trong bất_kỳ khu_vực nào không phải lối đi dọc mà hành_khách có_thể đứng : 2.3.4.1.3 . từ khu_vực cạnh cửa ra vào liền kề ngay cửa ra vào ưu_tiên đến ít_nhất một ghế ưu_tiên , tay_vịn có độ cao từ 800 mm đến 900 mm so với sàn xe ; hoặc ở khu_vực không phù_hợp với những yêu_cầu đó , tay_vịn không cần phải bố_trí liên_tục , nhưng khoảng trống giữa các tay_vịn không được lớn hơn 1050 mm , và phải có một tay_vịn thẳng_đứng bố_trí tại ít_nhất một phía của khoảng trống giữa các tay_vịn nói trên với chiều dài nằm trong khoảng từ độ cao 1200 mm đến độ cao không nhỏ hơn 1500 mm so với sàn xe . 2.3.4.1.4 . tay_vịn được bố_trí ở cả hai bên của khu_vực phía trong cửa vào hoặc cửa ra : 2.3.4.2 . |
điều 15 . |
ngày 01 tháng 01 năm 2018 có ý_nghĩa gì đối_với nghị_định về trình_tự , thủ_tục , mức tiền pháp_nhân thương_mại phải nộp để bảo_đảm thi_hành án ? |
chương iv. điều_khoản thi_hành |
viên_chức đăng_ký dự_thi thăng_hạng được miễn thi môn ngoại_ngữ , tin_học theo quy_định tại khoản 6 và khoản 7 điều 39 nghị_định số 115 / 2020 / nđ - cp. viên_chức đăng_ký dự_xét thăng_hạng thuộc đối_tượng được miễn thi môn ngoại_ngữ , tin_học theo quy_định tại khoản 6 và khoản 7 điều 39 nghị_định số 115 / 2020 / nđ - cp được xác_nhận đáp_ứng tiêu_chuẩn về ngoại_ngữ , tin_học khi đăng_ký dự_xét thăng_hạng . trường_hợp không thuộc đối_tượng miễn thi môn ngoại_ngữ , tin_học theo quy_định tại khoản 6 và khoản 7 điều 39 nghị_định số 115 / 2020 / nđ - cp thì trong hồ_sơ dự xét phải có minh chứng đáp_ứng yêu_cầu về tiêu_chuẩn ngoại_ngữ , tin_học của chức_danh nghề_nghiệp đăng_ký dự_xét thăng_hạng . |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
per_device_train_batch_size: 2per_device_eval_batch_size: 2learning_rate: 2e-05num_train_epochs: 2warmup_ratio: 0.05bf16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 2per_device_eval_batch_size: 2per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 2max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.05warmup_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: Nonehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_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: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | public_administrative_cosine_accuracy |
|---|---|---|---|
| 0 | 0 | - | 0.565 |
| 0.0667 | 100 | 1.1879 | - |
| 0.1333 | 200 | 0.6573 | - |
| 0.2 | 300 | 0.5475 | - |
| 0.2667 | 400 | 0.4957 | - |
| 0.3333 | 500 | 0.3567 | - |
| 0.4 | 600 | 0.3928 | - |
| 0.4667 | 700 | 0.36 | - |
| 0.5333 | 800 | 0.3773 | - |
| 0.6 | 900 | 0.2408 | - |
| 0.6667 | 1000 | 0.2237 | - |
| 0.7333 | 1100 | 0.2253 | - |
| 0.8 | 1200 | 0.1844 | - |
| 0.8667 | 1300 | 0.1477 | - |
| 0.9333 | 1400 | 0.1033 | - |
| 1.0 | 1500 | 0.1474 | - |
| 1.0667 | 1600 | 0.1485 | - |
| 1.1333 | 1700 | 0.0516 | - |
| 1.2 | 1800 | 0.1071 | - |
| 1.2667 | 1900 | 0.0663 | - |
| 1.3333 | 2000 | 0.0467 | - |
| 1.4 | 2100 | 0.0596 | - |
| 1.4667 | 2200 | 0.073 | - |
| 1.5333 | 2300 | 0.0452 | - |
| 1.6 | 2400 | 0.022 | - |
| 1.6667 | 2500 | 0.0254 | - |
| 1.7333 | 2600 | 0.0392 | - |
| 1.8 | 2700 | 0.0114 | - |
| 1.8667 | 2800 | 0.0101 | - |
| 1.9333 | 2900 | 0.0072 | - |
| 2.0 | 3000 | 0.0065 | 0.981 |
@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
answerdotai/ModernBERT-base