Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
9
This is a sentence-transformers model trained. 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': 8192, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, '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()
)
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("binh230/bge-m3-finetuned-2")
# Run inference
sentences = [
'Người thực hiện việc uỷ thác toàn bộ hoặc một phần việc vận chuyển hàng hoá bằng đường biển được gọi là ai?',
'Điều 72. Các bên liên quan đến hợp đồng vận chuyển hàng hoá bằng đường biển\n1. Người thuê vận chuyển là người tự mình hoặc uỷ quyền cho người khác giao kết hợp đồng vận chuyển hàng hoá bằng đường biển với người vận chuyển. Trong trường hợp hợp đồng vận chuyển theo chứng từ vận chuyển, người thuê vận chuyển được gọi là người gửi hàng.\n2. Người vận chuyển là người tự mình hoặc uỷ quyền cho người khác giao kết hợp đồng vận chuyển hàng hoá bằng đường biển với người thuê vận chuyển.\n3. Người vận chuyển thực tế là người được người vận chuyển uỷ thác thực hiện toàn bộ hoặc một phần việc vận chuyển hàng hoá bằng đường biển.\n4. Người giao hàng là người tự mình hoặc được người khác uỷ thác giao hàng cho người vận chuyển theo hợp đồng vận chuyển hàng hoá bằng đường biển.\n5. Người nhận hàng là người có quyền nhận hàng theo quy định tại Điều 89 và Điều 110 của Bộ luật này.',
'Điều 49. Địa vị pháp lý của thuyền trưởng\n1. Thuyền trưởng là người có quyền chỉ huy cao nhất ở trên tàu biển, chỉ huy tàu theo chế độ thủ trưởng. Mọi người có mặt trên tàu biển phải chấp hành mệnh lệnh của thuyền trưởng.\n2. Thuyền trưởng chịu sự chỉ đạo của chủ tàu hoặc người thuê tàu, người khai thác tàu.',
]
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]
InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.2468 |
| cosine_accuracy@3 | 0.7418 |
| cosine_accuracy@5 | 0.8261 |
| cosine_accuracy@10 | 0.9197 |
| cosine_precision@1 | 0.2468 |
| cosine_precision@3 | 0.2473 |
| cosine_precision@5 | 0.1652 |
| cosine_precision@10 | 0.092 |
| cosine_recall@1 | 0.2468 |
| cosine_recall@3 | 0.7418 |
| cosine_recall@5 | 0.8261 |
| cosine_recall@10 | 0.9197 |
| cosine_ndcg@10 | 0.5917 |
| cosine_mrr@10 | 0.4847 |
| cosine_map@100 | 0.4893 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
Tổ chức phát hành có trách nhiệm gì khi quản lý tài khoản vốn phát hành chứng khoán bằng ngoại tệ? |
Điều 8. Trách nhiệm của tổ chức phát hành |
Đơn vị nào có quyền yêu cầu cung cấp chứng từ liên quan đến việc sử dụng tài khoản vốn phát hành chứng khoán bằng ngoại tệ và tổ chức phát hành phải tuân thủ như thế nào? |
Điều 8. Trách nhiệm của tổ chức phát hành |
Tổ chức tín dụng có trách nhiệm gì khi liên quan đến tài khoản vốn phát hành chứng khoán bằng ngoại tệ? |
Điều 9. Trách nhiệm của tổ chức tín dụng được phép |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 10per_device_eval_batch_size: 10num_train_epochs: 1multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 10per_device_eval_batch_size: 10per_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: 1num_train_epochs: 1max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.0warmup_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: Falsefp16: 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: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | Training Loss | cosine_ndcg@10 |
|---|---|---|---|
| 0.0735 | 500 | 0.0157 | - |
| 0.1470 | 1000 | 0.0231 | - |
| 0.2204 | 1500 | 0.0191 | - |
| 0.2939 | 2000 | 0.0179 | - |
| 0.3674 | 2500 | 0.0153 | - |
| 0.4409 | 3000 | 0.017 | - |
| 0.4702 | 3200 | - | 0.5705 |
| 0.5143 | 3500 | 0.0181 | - |
| 0.5878 | 4000 | 0.0131 | - |
| 0.6613 | 4500 | 0.0129 | - |
| 0.7348 | 5000 | 0.012 | - |
| 0.8082 | 5500 | 0.0117 | - |
| 0.8817 | 6000 | 0.0096 | - |
| 0.9405 | 6400 | - | 0.5906 |
| 0.9552 | 6500 | 0.0111 | - |
| 1.0 | 6805 | - | 0.5917 |
@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}
}