Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use Maksim-KOS/multilingual-e5-large-instruct-saturn-planet with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Maksim-KOS/multilingual-e5-large-instruct-saturn-planet")
sentences = [
"Валик войлочный 5мм 100мм 2шт",
"Труба водосточная, металл, d=90 мм, белый, 3 м",
"Мини-валик Варяг 31877 войлочный, ворс 5 мм, 100 мм (уп. 2 шт.)",
"Валик Варяг 31862, велюр ворс 5 мм, 250 мм"
]
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, 'architecture': '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): 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("Maksim-KOS/multilingual-e5-large-instruct-saturn-planet")
# Run inference
sentences = [
'Порог дверной ламинированный 74x968 мм серый Olovi',
'Порог дверной Olovi, 74х968 мм, ламинированный, серый',
'Порог дверной Olovi, 70х937 мм, ламинированный, дуб классик',
]
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.9814, 0.5158],
# [0.9814, 1.0000, 0.5642],
# [0.5158, 0.5642, 1.0000]])
hard-neg-evalTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.9962 |
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Заклёпка Matrix 4.8x16 мм 50 шт. |
Заклепка вытяжная комбинированная SWFS 4,8х16 (100 шт) |
Анкер забивной SWFS ZY М16 (25 шт) |
Ручка дверная на розетке Фабрика замков 016 алюминий гальваническое покрытие цвет матовый хром |
Ручка для финских дверей SCHLOSS 01001 006 хром (10/50) |
Защелка дверная SCHLOSS 42031 KL-01 с ручкой шар хром (30) |
решетка вентиляционная 220х220 пластик |
Решетка вентиляционная 220х220 мм, МД2222, пластик |
Решетка вентиляционная вытяжная 1825П, 183х253мм, пластик |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Линолеум полукоммерческий таркетт Santiago 3м |
Линолеум полукоммерческий Polystyl Space F Santiago 1 (3 м), пр-во ТАРКЕТТ |
Линолеум полукоммерческий Juteks Master Ester 3 (4 м) |
Штуцер 5-ти выводной 1"x1/4" ВР-НР латунь |
Штуцер 5-ти выводной для насосов 1"ВР х 1"ВР х 1"НР х 1/4"ВР х 1/4"НР |
Эксцентрик для смесителя 3/4"x1/2" НР |
Вагонка евро хвоя 12.5х88х2500 мм |
Вагонка Евро 12,5х88(96)x2500 мм сорт С хвоя (10 шт) |
Вагонка Евро 12,5х88(96)x2700 мм сорт С хвоя (10 шт) |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: stepsper_device_train_batch_size: 32per_device_eval_batch_size: 32gradient_accumulation_steps: 8learning_rate: 1e-05weight_decay: 0.01num_train_epochs: 10lr_scheduler_type: cosinewarmup_ratio: 0.1load_best_model_at_end: Trueoptim: adamw_torchbatch_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: 8eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 1e-05weight_decay: 0.01adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 10max_steps: -1lr_scheduler_type: cosinelr_scheduler_kwargs: Nonewarmup_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: 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: Trueignore_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_torchoptim_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: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | hard-neg-eval_cosine_accuracy |
|---|---|---|---|---|
| 0.1036 | 50 | 2.2199 | - | - |
| 0.2071 | 100 | 0.4732 | 0.0789 | 0.9821 |
| 0.3107 | 150 | 0.0994 | - | - |
| 0.4143 | 200 | 0.0739 | 0.0485 | 0.9886 |
| 0.5179 | 250 | 0.0664 | - | - |
| 0.6214 | 300 | 0.0567 | 0.0397 | 0.9893 |
| 0.7250 | 350 | 0.0517 | - | - |
| 0.8286 | 400 | 0.0439 | 0.0315 | 0.9913 |
| 0.9322 | 450 | 0.0445 | - | - |
| 1.0352 | 500 | 0.0399 | 0.0278 | 0.9926 |
| 1.1388 | 550 | 0.0346 | - | - |
| 1.2424 | 600 | 0.0343 | 0.0245 | 0.9937 |
| 1.3459 | 650 | 0.0309 | - | - |
| 1.4495 | 700 | 0.0304 | 0.0223 | 0.9942 |
| 1.5531 | 750 | 0.0287 | - | - |
| 1.6567 | 800 | 0.0293 | 0.0203 | 0.9949 |
| 1.7602 | 850 | 0.0283 | - | - |
| 1.8638 | 900 | 0.0269 | 0.0195 | 0.9948 |
| 1.9674 | 950 | 0.0265 | - | - |
| 2.0704 | 1000 | 0.0235 | 0.0182 | 0.9953 |
| 2.1740 | 1050 | 0.0238 | - | - |
| 2.2776 | 1100 | 0.0222 | 0.0170 | 0.9958 |
| 2.3811 | 1150 | 0.0189 | - | - |
| 2.4847 | 1200 | 0.021 | 0.0168 | 0.9955 |
| 2.5883 | 1250 | 0.0215 | - | - |
| 2.6919 | 1300 | 0.0217 | 0.0162 | 0.9954 |
| 2.7954 | 1350 | 0.021 | - | - |
| 2.8990 | 1400 | 0.0197 | 0.0157 | 0.9963 |
| 3.0021 | 1450 | 0.0199 | - | - |
| 3.1056 | 1500 | 0.0165 | 0.0153 | 0.9960 |
| 3.2092 | 1550 | 0.0158 | - | - |
| 3.3128 | 1600 | 0.0165 | 0.0148 | 0.9962 |
@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