Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 19
How to use SCAREDOFTHESIX/user-bge-m3-avito with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("SCAREDOFTHESIX/user-bge-m3-avito")
sentences = [
"знакомства с девушками для секса",
"Разговор по душам. Вид услуги Другое Место оказания услуг ул. Чкалова, 39А Тип стоимости за услугу Начальная цена Выполняю заказы от 700. общение только онлайн)\n\nподдержу любую тему)",
"Прошивка курсовых и дипломных работ. Вид услуги Место оказания услуг ул. Любови Шевцовой Тип стоимости за услугу Начальная цена Берёте ли срочные заказы Гарантия на выполнение работ Как вы работаете У себя Предоплата. Прошивка диплома от 100р. \nВ наличии есть папки разных форматов если у вас вдруг они отсутствуют) \nПриводи друга! От трех человек скидка",
"Ателье по пошиву ремонту одежды, текстиля для дома. Вид услуги Бытовые услуги Тип услуги Пошив и ремонт одежды Место оказания услуг Кемеровская область, Новокузнецк Тип стоимости за услугу Начальная цена Чем вы занимаетесь Ремонт и пошив одежды Работаете с юрлицами и ИП. Принимаю заказы на индивидуальный пошив одежды, штор, постельного белья, детского текстиля"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from deepvk/USER-bge-m3. It maps inputs to a 1024-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'XLMRobertaModel'})
(1): Pooling({'embedding_dimension': 1024, 'pooling_mode': 'cls', 'include_prompt': True})
(2): Normalize({'module_input_name': 'sentence_embedding', 'module_output_name': 'sentence_embedding'})
)
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("SCAREDOFTHESIX/user-bge-m3-avito")
# Run inference
queries = [
'портрет маслом',
]
documents = [
'Портрет на заказ. Вид услуги Искусство Место оказания услуг пл. Ленина Тип стоимости за услугу Начальная цена Начальная цена Тип стоимости за услугу Стоимость 20000. Если вы хотите уникальные истинные портреты на заказ непохожие на других, обращайтесь ко мне я сделаю в новом современном ключе❤️❤️❤️',
'Нужны модели на брови. Вид услуги Красота, здоровье Место оказания услуг Пенза, улица Пушкина, 3 Тип услуги Ресницы, брови Тип стоимости за услугу Где вы оказываете услуги Ваши клиенты Женщины Кто оказывает услуги Женщина Название услуги ПМ Бровей Начальная цена Тип стоимости за услугу Услуга Своя услуга Стоимость 2500 Продолжительность 3 ч 30 мин. Опыт работы 1–3 года Куда выезжаете Не выезжаю. Нужны модели на пм бровей',
'Изготовление. Вид услуги Бытовые услуги Тип услуги Изготовление ключей Место оказания услуг Ростов-на-Дону, Кировский район Тип стоимости за услугу Начальная цена График работы, дни недели пн. График работы, дни недели вт. График работы, дни недели ср. График работы, дни недели чт. График работы, дни недели пт. Начальная цена Тип стоимости за услугу Стоимость 100 Услуга Замена или установка замка Чем вы занимаетесь. изготовление',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 1024] [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[ 0.6232, 0.0646, -0.1885]])
query and doc| query | doc | |
|---|---|---|
| type | string | string |
| modality | text | text |
| details |
|
|
| query | doc |
|---|---|
передержка кошек |
Передержка животных. Вид услуги Уход за животными Место оказания услуг Саратов, 1-й проезд имени С.Т. Разина, 3/7 Тип стоимости за услугу Начальная цена Куда выезжаете По всему городу. В смс при обращении напишите породу питомца, пол, стерелизован ли. |
удаление татуировок |
Удаление татуировок и перманетного макияжа. Вид услуги Красота, здоровье Место оказания услуг Камышинская ул., 15 Тип услуги Перманентный макияж Тип стоимости за услугу Начальная цена Где вы оказываете услуги У себя дома Где вы оказываете услуги В салоне Ваши клиенты Женщины Кто оказывает услуги Женщина Начальная цена Тип стоимости за услугу Стоимость 900 Продолжительность 30 мин. Услуга Удаление с бровей Начальная цена Тип стоимости за услугу Стоимость 1000 Продолжительность 30 мин. Услуга Удаление с губ Начальная цена Тип стоимости за услугу Стоимость 900 Продолжительность 30 мин. Услуга Удаление с век Признак предзаполнения прайс листа 2 Опыт работы 8–10 лет Чем вы занимаетесь Удаление перманентного макияжа, татуажа Чем удаляете Лазер Чем удаляете Ремувер. Лaзеpное удaление тату и татуажа любoй слoжноcти. |
редактор фото |
Фотошоп \ Редактирование \ Нейросеть \ Дизайн. Вид услуги Фото- и видеосъёмка Место оказания услуг Владимир Тип стоимости за услугу Начальная цена Работаете с юрлицами и ИП Как вы работаете Удалённо Чем вы занимаетесь Фото Опыт работы 4–6 лет Берёте ли срочные заказы Предоплата Минимальная сумма заказа 500. ✅ НАПИШИТЕ нам и мы бесплатно проконсультируем‼️ |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false,
"directions": [
"query_to_doc"
],
"partition_mode": "joint",
"hardness_mode": null,
"hardness_strength": 0.0
}
per_device_train_batch_size: 32num_train_epochs: 1learning_rate: 2e-05warmup_steps: 0.1bf16: Truebatch_sampler: no_duplicatesper_device_train_batch_size: 32num_train_epochs: 1max_steps: -1learning_rate: 2e-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: Truefp16: Falsebf16_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: Nonetrackio_bucket_id: Nonetrackio_static_space_id: Noneper_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: Falseignore_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: Nonedataloader_multiprocessing_context: Nonedataloader_in_order: Trueremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_static_graph: Noneddp_backend: Noneddp_timeout: 1800fsdp: Nonefsdp_config: Nonedeepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonelocal_rank: -1prompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}warmup_ratio: None| Epoch | Step | Training Loss |
|---|---|---|
| 0.0436 | 200 | 0.6202 |
| 0.0872 | 400 | 0.4560 |
| 0.1309 | 600 | 0.4138 |
| 0.1745 | 800 | 0.3861 |
| 0.2181 | 1000 | 0.3487 |
| 0.2617 | 1200 | 0.3629 |
| 0.3053 | 1400 | 0.3437 |
| 0.3490 | 1600 | 0.3241 |
| 0.3926 | 1800 | 0.3325 |
| 0.4362 | 2000 | 0.3197 |
| 0.4798 | 2200 | 0.3239 |
| 0.5234 | 2400 | 0.2950 |
| 0.5671 | 2600 | 0.2989 |
| 0.6107 | 2800 | 0.3320 |
| 0.6543 | 3000 | 0.2748 |
| 0.6979 | 3200 | 0.2990 |
| 0.7415 | 3400 | 0.2716 |
| 0.7852 | 3600 | 0.2934 |
| 0.8288 | 3800 | 0.3016 |
| 0.8724 | 4000 | 0.2951 |
| 0.9160 | 4200 | 0.2692 |
| 0.9597 | 4400 | 0.2697 |
@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{oord2019representationlearningcontrastivepredictive,
title={Representation Learning with Contrastive Predictive Coding},
author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
year={2019},
eprint={1807.03748},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/1807.03748},
}
Base model
deepvk/USER-bge-m3