Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use noace/bge-m3-banking-v3-final with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("noace/bge-m3-banking-v3-final")
sentences = [
"tại sheraton đà nẵng, ưu đãi ẩm thực được phục vụ tại nhà hàng table 88.",
"thỏa thuận sử dụng dịch vụ được cấu thành bởi bản điều khoản này và đơn đề nghị của khách hàng.",
"khách hàng có thể chấm dứt sử dụng dịch vụ bằng cách gửi yêu cầu cho sacombank.",
"sheraton grand danang resort áp dụng ưu đãi tại nhà hàng table 88."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-m3. 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, 'architecture': '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("sentence_transformers_model_id")
# Run inference
sentences = [
'lãi suất tóm tắt quy định tiền gửi tiết kiệm',
'thẻ phụ chia sẻ hạn mức tín dụng với thẻ chính',
'sản phẩm tiết kiệm phù đổng kỳ hạn 6 tháng được hưởng lãi suất 4,40%.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[ 1.0000, 0.0030, -0.0185],
# [ 0.0030, 1.0000, -0.0120],
# [-0.0185, -0.0120, 1.0000]])
banking-validationEmbeddingSimilarityEvaluator| Metric | Value |
|---|---|
| pearson_cosine | 0.9738 |
| spearman_cosine | 0.7902 |
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
người dùng có quyền hủy dịch vụ bằng văn bản yêu cầu gửi tới ngân hàng. |
khách hàng có thể chấm dứt sử dụng dịch vụ bằng cách gửi yêu cầu cho sacombank. |
1.0 |
quinter central nha trang nằm ở 86/4 trần phú. |
mức lãi suất 4,20% áp dụng cho kỳ hạn 6 tháng gửi tại quầy. |
0.0 |
la vela sài gòn có địa chỉ 280 nam kỳ khởi nghĩa. |
nguồn tiền để thanh toán vé số vietlott sms có thể lấy từ tài khoản hoặc thẻ tín dụng/ghi nợ sacombank. |
0.0 |
CosineSimilarityLoss with these parameters:{
"loss_fct": "torch.nn.modules.loss.MSELoss"
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 4multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_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: 4max_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: 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}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_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: Falsehub_revision: Nonegradient_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: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: noneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Trueprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robinrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | banking-validation_spearman_cosine |
|---|---|---|---|
| 0.2890 | 500 | 0.0641 | 0.7825 |
| 0.5780 | 1000 | 0.0357 | 0.7824 |
| 0.8671 | 1500 | 0.0286 | 0.7850 |
| 1.0 | 1730 | - | 0.7848 |
| 1.1561 | 2000 | 0.0184 | 0.7862 |
| 1.4451 | 2500 | 0.0163 | 0.7876 |
| 1.7341 | 3000 | 0.0135 | 0.7879 |
| 2.0 | 3460 | - | 0.7894 |
| 2.0231 | 3500 | 0.0143 | 0.7890 |
| 2.3121 | 4000 | 0.008 | 0.7888 |
| 2.6012 | 4500 | 0.0082 | 0.7891 |
| 2.8902 | 5000 | 0.0071 | 0.7892 |
| 3.0 | 5190 | - | 0.7898 |
| 3.1792 | 5500 | 0.0057 | 0.7899 |
| 3.4682 | 6000 | 0.0054 | 0.7901 |
| 3.7572 | 6500 | 0.0045 | 0.7901 |
| 4.0 | 6920 | - | 0.7902 |
@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",
}
Base model
BAAI/bge-m3