Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use tellowit/custom-e5-miracl-ru with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("tellowit/custom-e5-miracl-ru")
sentences = [
"query: Были ли братья и сестра у Рюрика?",
"passage: 29 января 1923 года Ататюрк женился на Латифе Ушаклыгиль (Латифе Ушакизаде). Брак Ататюрка и Латифе-ханым, которая вместе с основателем Турецкой республики отправлялась во многие поездки по стране, закончился 5 августа 1925 года. Причиной развода, по неофициальной версии, явилось постоянное вмешательство жены в дела Ататюрка. Родных детей у него не было, зато он взял 8 приёмных дочерей (Афет, Сабиху, , , , , и Афифе) и 2 сыновей (, ). Всем приёмным детям Ататюрк обеспечил хорошее будущее. Одна из приёмных дочерей Ататюрка стала историком, другая — первой турецкой женщиной-лётчиком. Карьера дочерей Ататюрка служила широко пропагандируемым примером для эмансипации турецкой женщины.",
"passage: ABS стала особенно актуальной в связи с массовым распространением вакуумных усилителей в тормозных системах и эффективных, быстродействующих дисковых тормозных механизмов, которые в сочетании друг с другом легко позволяют при нажатии на педаль заблокировать колёсные тормозные механизмы. Колёса при этом прекращают вращаться и, как показали исследования, эффективность торможения автомобиля в таком режиме (движение «юзом», то есть, скольжение неподвижных колёс по асфальту) существенно снижается по сравнению со случаем, когда тормозящие колёса катятся (на грани срыва в «юз»). Кроме того, очень важно то, что при заблокированных передних колёсах машина становится неуправляемой, поскольку направление движения практически не зависит от поворота передних колес, если они не катятся, а скользят. При таком торможении «юзом» шины не оказывают сопротивления боковому уводу, то есть, любая боковая сила (например, возникающая при наезде на неровность дорожного покрытия) может вызвать неконтролируемое водителем отклонение автомобиля от прямолинейного движения. В результате при торможении «юзом» машина с дисковыми тормозами и усилителем нередко испытывала опасную тенденцию к заносу задней оси. Применение автоматических регуляторов тормозных сил на задних тормозных механизмах решало данную проблему лишь отчасти.",
"passage: Князь Григорий Семёнович Друцкий (XVIII колено от Рюрика), в 1422 году подписал договор Великого княжества Литовского с Орденом вместе с братьями. Его сын, князь Василий Григорьевич, от брака с дочерью киевского воеводы Юрши оставил двух сыновей — князя Богдана и князя Романа. Первый из них по завещанию тётки, сестры матери в 1488 году получили имение Любче с приселками в Луцком повете (уезде). После смерти бездетного князя Богдана Васильевича король Александр в 1500 году подтвердил его брату, князю Роману Васильевичу все привилегии на Любче."
]
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-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': 512, 'do_lower_case': False, 'architecture': 'XLMRobertaModel'})
(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})
(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("tellowit/custom-e5-miracl-ru")
# Run inference
sentences = [
'query: Где происходит действие первой игры Warcraft?',
'passage: Warcraft Adventures: Lord of the Clans\xa0— отменённая компьютерная игра в жанре графического квеста, которую совместно разрабатывали американская компания Blizzard Entertainment и американо-российская студия Animation Magic с по . Действие "Warcraft Adventures" происходит в вымышленной вселенной Warcraft вскоре после событий игры ""; главный герой, орк по имени Тралл, пытается объединить племена орков, после проигранной войны живущие в резервациях под властью победителей-людей. Игровой процесс "Warcraft Adventures" должен был быть схож с другими графическими квестами того времени — при помощи интерфейса «укажи и щелкни» игрок мог исследовать мир, решать головоломки и взаимодействовать с другими персонажами.',
'passage: Тем временем с аэродрома Энгельс вылетел вертолёт Ми-4, в задачу экипажа которого входило найти и подобрать Гагарина. Экипаж вертолёта Ми-4 первым обнаружил спускаемый аппарат, но Гагарина рядом не было; ситуацию прояснили местные жители, которые сказали, что Гагарин уехал на грузовике в город Энгельс. Вертолёт взлетел и взял курс на город. С его борта на дороге неподалеку от КПП ракетного дивизиона заметили автомашину, на которой Гагарин после доклада в части направлялся к спускаемому аппарату. Гагарин вышел из машины и махал руками, его подобрали, и вертолёт полетел на аэродром Энгельс, передав радиограмму: «Космонавт взят на борт, следую на аэродром». На месте посадки Гагарину была вручена его первая награда за полёт в космос\xa0— медаль «За освоение целинных земель». Впоследствии такая же медаль вручалась на месте посадки и многим другим космонавтам.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.8099, 0.6821],
# [0.8099, 1.0000, 0.6656],
# [0.6821, 0.6656, 1.0000]])
miracl-devInformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.6605 |
| cosine_accuracy@3 | 0.8722 |
| cosine_accuracy@5 | 0.9241 |
| cosine_precision@1 | 0.6605 |
| cosine_precision@3 | 0.4819 |
| cosine_precision@5 | 0.3819 |
| cosine_recall@1 | 0.3197 |
| cosine_recall@3 | 0.6041 |
| cosine_recall@5 | 0.7388 |
| cosine_ndcg@1 | 0.6605 |
| cosine_ndcg@3 | 0.6674 |
| cosine_ndcg@5 | 0.6997 |
| cosine_mrr@1 | 0.6605 |
| cosine_mrr@3 | 0.7549 |
| cosine_mrr@5 | 0.7672 |
| cosine_map@100 | 0.6726 |
sentence1, sentence2, and label| sentence1 | sentence2 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence1 | sentence2 | label |
|---|---|---|
query: Когда был спущен на воду первый миноносец «Спокойный»? |
passage: Зачислен в списки ВМФ СССР 19 августа 1952 года. Официальная закладка (при 33 % готовности корпуса) была произведена на заводе № 190 им. А. А. Жданова 4 марта 1953 года (строительный № 701), спущен на воду 28 ноября 1953 года. Испытания корабля были начаты 26 апреля 1954 года на Балтике, испытания артиллерии велись с 8 августа по 8 сентября и с 3 по 16 декабря 1955 года. Корабль принят флотом 27 июня 1956 года, 9 октября 1957 года эсминец вступил в состав Советского Военно-Морского Флота. |
1.0 |
query: Когда был спущен на воду первый миноносец «Спокойный»? |
passage: Стерегу́щий — русский миноносец типа «Сокол». Заложен в 1900 году на Невском заводе (Санкт-Петербург), имея тогда название «Кулик». Спущен на воду в июне 1902 году под именем «Стерегущий» в Порт-Артуре, куда по частям был доставлен железнодорожным транспортом. В строй вступил в августе 1903 года. Погиб в неравном бою с превосходящими силами японцев а во время русско-японской войны. Против миноносцев «Стерегущий» и «Решительный» действовало четыре японских миноносца, которые по вооружению, водоизмещению и количеству экипажа существенно превосходили русские миноносцы. |
0.0 |
query: Когда был спущен на воду первый миноносец «Спокойный»? |
passage: Эскадренный миноносец заложен в 1900 году на Невском заводе в Санкт-Петербурге под названием «Перепел». 27 февраля 1902 года начат сборкой, и 4 мая 1903 года спущен на воду в Порт-Артуре. Принят в казну в декабре 1903 года. С 9 марта 1902 года — «Скорый». |
0.0 |
CoSENTLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "pairwise_cos_sim"
}
per_device_train_batch_size: 64num_train_epochs: 2learning_rate: 1e-05warmup_steps: 0.1fp16: Trueeval_strategy: stepsload_best_model_at_end: Truewarmup_ratio: 0.1per_device_train_batch_size: 64num_train_epochs: 2max_steps: -1learning_rate: 1e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0.1optim: adamw_torch_fusedoptim_args: Noneweight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 1average_tokens_across_devices: Truemax_grad_norm: 1.0label_smoothing_factor: 0.0bf16: Falsefp16: Truebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Nonetorch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneuse_liger_kernel: Falseliger_kernel_config: Noneuse_cache: Falseneftune_noise_alpha: Nonetorch_empty_cache_steps: Noneauto_find_batch_size: Falselog_on_each_node: Truelogging_nan_inf_filter: Trueinclude_num_input_tokens_seen: nolog_level: passivelog_level_replica: warningdisable_tqdm: Falseproject: huggingfacetrackio_space_id: trackioeval_strategy: stepsper_device_eval_batch_size: 8prediction_loss_only: Trueeval_on_start: Falseeval_do_concat_batches: Trueeval_use_gather_object: Falseeval_accumulation_steps: Noneinclude_for_metrics: []batch_eval_metrics: Falsesave_only_model: Falsesave_on_each_node: Falseenable_jit_checkpoint: Falsepush_to_hub: Falsehub_private_repo: Nonehub_model_id: Nonehub_strategy: every_savehub_always_push: Falsehub_revision: Noneload_best_model_at_end: Trueignore_data_skip: Falserestore_callback_states_from_checkpoint: Falsefull_determinism: Falseseed: 42data_seed: Noneuse_cpu: Falseaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedataloader_drop_last: Falsedataloader_num_workers: 0dataloader_pin_memory: Truedataloader_persistent_workers: Falsedataloader_prefetch_factor: Noneremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_backend: Noneddp_timeout: 1800fsdp: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}deepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: 0.1local_rank: -1prompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | miracl-dev_cosine_ndcg@5 |
|---|---|---|---|
| 0.0188 | 10 | 6.5815 | - |
| 0.0377 | 20 | 6.5509 | 0.6958 |
| 0.0565 | 30 | 6.4997 | - |
| 0.0753 | 40 | 6.4911 | 0.6962 |
| 0.0942 | 50 | 6.4202 | - |
| 0.1130 | 60 | 6.4611 | 0.6951 |
| 0.1318 | 70 | 6.6049 | - |
| 0.1507 | 80 | 6.3301 | 0.6947 |
| 0.1695 | 90 | 6.4636 | - |
| 0.1883 | 100 | 6.3973 | 0.6959 |
| 0.2072 | 110 | 6.4483 | - |
| 0.2260 | 120 | 6.4115 | 0.6976 |
| 0.2448 | 130 | 6.5310 | - |
| 0.2637 | 140 | 6.5184 | 0.6979 |
| 0.2825 | 150 | 6.3948 | - |
| 0.3013 | 160 | 6.3295 | 0.6967 |
| 0.3202 | 170 | 6.4219 | - |
| 0.3390 | 180 | 6.3656 | 0.6983 |
| 0.3578 | 190 | 6.3893 | - |
| 0.3766 | 200 | 6.2737 | 0.6993 |
| 0.3955 | 210 | 6.4098 | - |
| 0.4143 | 220 | 6.3519 | 0.7020 |
| 0.4331 | 230 | 6.4040 | - |
| 0.4520 | 240 | 6.4088 | 0.7018 |
| 0.4708 | 250 | 6.5007 | - |
| 0.4896 | 260 | 6.3679 | 0.7026 |
| 0.5085 | 270 | 6.3605 | - |
| 0.5273 | 280 | 6.3862 | 0.7027 |
| 0.5461 | 290 | 6.4210 | - |
| 0.5650 | 300 | 6.2719 | 0.7028 |
| 0.5838 | 310 | 6.4073 | - |
| 0.6026 | 320 | 6.5132 | 0.7028 |
| 0.6215 | 330 | 6.4895 | - |
| 0.6403 | 340 | 6.4847 | 0.7023 |
| 0.6591 | 350 | 6.4607 | - |
| 0.678 | 360 | 6.3017 | 0.7033 |
| 0.6968 | 370 | 6.3331 | - |
| 0.7156 | 380 | 6.2592 | 0.7030 |
| 0.7345 | 390 | 6.5381 | - |
| 0.7533 | 400 | 6.3632 | 0.7018 |
| 0.7721 | 410 | 6.3819 | - |
| 0.7910 | 420 | 6.4583 | 0.7019 |
| 0.8098 | 430 | 6.3559 | - |
| 0.8286 | 440 | 6.4377 | 0.7022 |
| 0.8475 | 450 | 6.2426 | - |
| 0.8663 | 460 | 6.4216 | 0.7029 |
| 0.8851 | 470 | 6.3419 | - |
| 0.9040 | 480 | 6.3999 | 0.7015 |
| 0.9228 | 490 | 6.2523 | - |
| 0.9416 | 500 | 6.4349 | 0.7013 |
| 0.9605 | 510 | 6.5806 | - |
| 0.9793 | 520 | 6.2994 | 0.7014 |
| 0.9981 | 530 | 6.5537 | - |
| 1.0169 | 540 | 5.6289 | 0.7005 |
| 1.0358 | 550 | 6.3149 | - |
| 1.0546 | 560 | 6.3903 | 0.6993 |
| 1.0734 | 570 | 6.3323 | - |
| 1.0923 | 580 | 6.4648 | 0.7002 |
| 1.1111 | 590 | 6.3129 | - |
| 1.1299 | 600 | 6.3834 | 0.7003 |
| 1.1488 | 610 | 6.3474 | - |
| 1.1676 | 620 | 6.1932 | 0.6994 |
| 1.1864 | 630 | 6.2955 | - |
| 1.2053 | 640 | 6.3489 | 0.6987 |
| 1.2241 | 650 | 6.4112 | - |
| 1.2429 | 660 | 6.4257 | 0.6996 |
| 1.2618 | 670 | 6.4300 | - |
| 1.2806 | 680 | 6.3101 | 0.6998 |
| 1.2994 | 690 | 6.2131 | - |
| 1.3183 | 700 | 6.3198 | 0.6999 |
| 1.3371 | 710 | 6.3770 | - |
| 1.3559 | 720 | 6.3222 | 0.6994 |
| 1.3748 | 730 | 6.3333 | - |
| 1.3936 | 740 | 6.4028 | 0.6989 |
| 1.4124 | 750 | 6.3535 | - |
| 1.4313 | 760 | 6.2531 | 0.6988 |
| 1.4501 | 770 | 6.1225 | - |
| 1.4689 | 780 | 6.4201 | 0.6985 |
| 1.4878 | 790 | 6.2942 | - |
| 1.5066 | 800 | 6.3772 | 0.6988 |
| 1.5254 | 810 | 6.3184 | - |
| 1.5443 | 820 | 6.3186 | 0.6985 |
| 1.5631 | 830 | 6.3802 | - |
| 1.5819 | 840 | 6.3708 | 0.6985 |
| 1.6008 | 850 | 6.3125 | - |
| 1.6196 | 860 | 6.3675 | 0.6985 |
| 1.6384 | 870 | 6.2405 | - |
| 1.6573 | 880 | 6.3862 | 0.6988 |
| 1.6761 | 890 | 6.3365 | - |
| 1.6949 | 900 | 6.3041 | 0.6994 |
| 1.7137 | 910 | 6.3419 | - |
| 1.7326 | 920 | 6.1718 | 0.6992 |
| 1.7514 | 930 | 6.2510 | - |
| 1.7702 | 940 | 6.3050 | 0.6991 |
| 1.7891 | 950 | 6.4384 | - |
| 1.8079 | 960 | 6.3246 | 0.6994 |
| 1.8267 | 970 | 6.2532 | - |
| 1.8456 | 980 | 6.3469 | 0.6996 |
| 1.8644 | 990 | 6.3095 | - |
| 1.8832 | 1000 | 6.1955 | 0.7000 |
| 1.9021 | 1010 | 6.2463 | - |
| 1.9209 | 1020 | 6.3498 | 0.6998 |
| 1.9397 | 1030 | 6.3084 | - |
| 1.9586 | 1040 | 6.2430 | 0.6996 |
| 1.9774 | 1050 | 6.2689 | - |
| 1.9962 | 1060 | 6.3395 | 0.6997 |
@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",
}
@article{10531646,
author={Huang, Xiang and Peng, Hao and Zou, Dongcheng and Liu, Zhiwei and Li, Jianxin and Liu, Kay and Wu, Jia and Su, Jianlin and Yu, Philip S.},
journal={IEEE/ACM Transactions on Audio, Speech, and Language Processing},
title={CoSENT: Consistent Sentence Embedding via Similarity Ranking},
year={2024},
doi={10.1109/TASLP.2024.3402087}
}
Base model
intfloat/multilingual-e5-base