Matryoshka Representation Learning
Paper • 2205.13147 • Published • 27
How to use DGSMsRzJ6xC2JthtHG9W/nomic-v2-tuned-1.2 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("DGSMsRzJ6xC2JthtHG9W/nomic-v2-tuned-1.2", trust_remote_code=True)
sentences = [
"Кто устанавливает порядок рассмотрения возражений против предоставления правовой охраны географическому указанию?",
"1. Должник, извещенный поручителем о предъявленном к нему кредитором требовании или привлеченный поручителем к участию в деле, обязан сообщить поручителю обо всех имеющихся у него возражениях против этого требования и предоставить имеющиеся у него в подтверждение этих требований доказательства. В противном случае должник лишается права выдвигать возражения, которые могли быть заявлены против требования кредитора, против требования поручителя (пункт 1 статьи 365), если иное не предусмотрено соглашением между поручителем и должником. 2. Должник, исполнивший обязательство, обеспеченное поручительством, обязан известить об этом поручителя немедленно. В противном случае поручитель, в свою очередь исполнивший свое обязательство, вправе взыскать с кредитора неосновательно полученное или предъявить регрессное требование к должнику. В последнем случае должник вправе взыскать с кредитора лишь неосновательно полученное. (Статья в редакции Федерального закона от 08.03.2015 № 42-ФЗ )",
"1. Продавец отвечает за недостатки товара, если покупатель докажет, что недостатки товара возникли до его передачи покупателю или по причинам, возникшим до этого момента. 2. В отношении товара, на который продавцом предоставлена гарантия качества, продавец отвечает за недостатки товара, если не докажет, что недостатки товара возникли после его передачи покупателю вследствие нарушения покупателем правил пользования товаром или его хранения, либо действий третьих лиц, либо непреодолимой силы.",
"2. Принятие решений, предусмотренных пунктом 1 настоящей статьи, влечет за собой отмену решения о государственной регистрации географического указания и (или) о предоставлении исключительного права на географическое указание (статья 1525) либо решения о предоставлении правовой охраны на территории Российской Федерации географическому указанию, зарегистрированному в соответствии с международным договором Российской Федерации, и (или) предоставлении исключительного права на такое географическое указание или решения об отказе в предоставлении правовой охраны на территории Российской Федерации географическому указанию, зарегистрированному в соответствии с международным договором Российской Федерации, и (или) предоставлении исключительного права на такое географическое указание. (В редакции Федерального закона от 05.12.2022 № 503-ФЗ ) 3. Порядок рассмотрения возражений против предоставления правовой охраны географическому указанию и (или) против предоставления исключительного права на географическое указание устанавливается федеральным органом исполнительной власти, осуществляющим нормативно-правовое регулирование в сфере интеллектуальной собственности. (Статья в редакции Федерального закона от 26.07.2019 № 230-ФЗ )"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from nomic-ai/nomic-embed-text-v2-moe on the json dataset. 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}) with Transformer model: NomicBertModel
(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("DGSMsRzJ6xC2JthtHG9W/nomic-v2-tuned-1.2")
# Run inference
sentences = [
'Кто может быть включен в состав ликвидационной комиссии, если участником ликвидируемого общества является государство или муниципальное образование?',
'1. Общество может быть ликвидировано добровольно в порядке, установленном Гражданским кодексом Российской Федерации , с учетом требований настоящего Федерального закона и устава общества. Общество может быть ликвидировано также по решению суда по основаниям, предусмотренным Гражданским кодексом Российской Федерации . Ликвидация общества влечет за собой его прекращение без перехода прав и обязанностей в порядке правопреемства к другим лицам. 2. Решение общего собрания участников общества о добровольной ликвидации общества и назначении ликвидационной комиссии принимается по предложению совета директоров (наблюдательного совета) общества, исполнительного органа или участника общества. Общее собрание участников добровольно ликвидируемого общества принимает решение о ликвидации общества и назначении ликвидационной комиссии. (В редакции Федерального закона от 21.03.2002 № 31-ФЗ ) 3. С момента назначения ликвидационной комиссии к ней переходят все полномочия по управлению делами общества. Ликвидационная комиссия от имени ликвидируемого общества выступает в суде. 4. В случае, если участником ликвидируемого общества является Российская Федерация, субъект Российской Федерации или муниципальное образование, в состав ликвидационной комиссии включается представитель федерального органа по управлению государственным имуществом, специализированного учреждения, осуществляющего продажу федерального имущества, органа по управлению государственным имуществом субъекта Российской Федерации, продавца государственного имущества субъекта Российской Федерации или органа местного самоуправления. (В редакции Федерального закона от 21.03.2002 № 31-ФЗ ) 5. Порядок ликвидации общества определяется Гражданским кодексом Российской Федерации и другими федеральными законами.',
'1. В соответствии с Гражданским кодексом Российской Федерации настоящий Федеральный закон определяет порядок создания, реорганизации, ликвидации, правовое положение акционерных обществ, права и обязанности их акционеров, а также обеспечивает защиту прав и интересов акционеров. (В редакции Федерального закона от 07.08.2001 № 120-ФЗ ) 1.1. (Дополнение пунктом - Федеральный закон от 21.07.2014 № 218-ФЗ ) (Утратил силу - Федеральный закон от 29.06.2015 № 210-ФЗ ) 2. Настоящий Федеральный закон распространяется на все акционерные общества, созданные или создаваемые на территории Российской Федерации, если иное не установлено настоящим Федеральным законом и иными федеральными законами. 3. Особенности создания, реорганизации, ликвидации и правового положения акционерных обществ, являющихся кредитными организациями, страховыми организациями, клиринговыми организациями, специализированными финансовыми обществами, специализированными обществами проектного финансирования, профессиональными участниками рынка ценных бумаг, акционерными инвестиционными фондами, управляющими компаниями инвестиционных фондов, паевых инвестиционных фондов и негосударственных пенсионных фондов, негосударственными пенсионными фондами и иными некредитными финансовыми организациями, акционерными обществами работников (народными предприятиями), а также прав и обязанностей акционеров таких акционерных обществ определяются федеральными законами, регулирующими их деятельность. (В редакции Федерального закона от 29.06.2015 № 210-ФЗ )',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
dim_768, dim_512, dim_256, dim_128 and dim_64InformationRetrievalEvaluator| Metric | dim_768 | dim_512 | dim_256 | dim_128 | dim_64 |
|---|---|---|---|---|---|
| cosine_accuracy@1 | 0.0286 | 0.0274 | 0.0274 | 0.0246 | 0.0258 |
| cosine_accuracy@3 | 0.0841 | 0.0783 | 0.0807 | 0.0759 | 0.0695 |
| cosine_accuracy@5 | 0.1332 | 0.1292 | 0.1251 | 0.1211 | 0.1106 |
| cosine_accuracy@10 | 0.2413 | 0.2389 | 0.2382 | 0.222 | 0.2071 |
| cosine_precision@1 | 0.0286 | 0.0274 | 0.0274 | 0.0246 | 0.0258 |
| cosine_precision@3 | 0.028 | 0.0261 | 0.0269 | 0.0253 | 0.0232 |
| cosine_precision@5 | 0.0266 | 0.0258 | 0.025 | 0.0242 | 0.0221 |
| cosine_precision@10 | 0.0241 | 0.0239 | 0.0238 | 0.0222 | 0.0207 |
| cosine_recall@1 | 0.0286 | 0.0274 | 0.0274 | 0.0246 | 0.0258 |
| cosine_recall@3 | 0.0841 | 0.0783 | 0.0807 | 0.0759 | 0.0695 |
| cosine_recall@5 | 0.1332 | 0.1292 | 0.1251 | 0.1211 | 0.1106 |
| cosine_recall@10 | 0.2413 | 0.2389 | 0.2382 | 0.222 | 0.2071 |
| cosine_ndcg@10 | 0.1148 | 0.1122 | 0.1121 | 0.1044 | 0.0985 |
| cosine_mrr@10 | 0.077 | 0.0745 | 0.0746 | 0.0694 | 0.0661 |
| cosine_map@100 | 0.104 | 0.1014 | 0.1013 | 0.0953 | 0.0904 |
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
В публичном акционерном обществе совет директоров состоит из 5 человек. Три директора не заинтересованы в сделке и соответствуют требованиям пункта 3 статьи 83. Устав общества устанавливает кворум в 4 человека для проведения заседаний совета директоров. Как будет определена цена имущества в данной ситуации? |
Если лицо, заинтересованное в совершении одной или нескольких сделок, при которых цена (денежная оценка) имущества определяется советом директоров (наблюдательным советом) общества, является членом совета директоров (наблюдательного совета) общества, цена (денежная оценка) имущества определяется решением членов совета директоров (наблюдательного совета) общества, не заинтересованных в совершении сделки. В публичном обществе цена (денежная оценка) имущества определяется большинством голосов директоров, не заинтересованных в совершении сделки и соответствующих требованиям, установленным пунктом 3 статьи 83 настоящего Федерального закона, если необходимость большего числа голосов указанных директоров не предусмотрена уставом публичного общества. (В редакции Федерального закона от 03.07.2016 № 343-ФЗ ) В случае, если количество директоров, не заинтересованных в совершении сделки, а в публичном обществе количество директоров, не заинтересованных в совершении сделки и отвечающих требованиям,... |
При уменьшении уставного капитала путем передачи ценных бумаг, каждый акционер получает одинаковое количество ценных бумаг одного типа и эмитента, пропорционально уменьшению номинала его акций. |
номинальная стоимость акции каждой категории (типа) после ее уменьшения; сумма денежных средств, выплачиваемая акционерам общества при уменьшении номинальной стоимости каждой акции, и (или) количество, вид, категория (тип) эмиссионных ценных бумаг, передаваемых акционерам общества при уменьшении номинальной стоимости каждой акции. Решение об уменьшении уставного капитала общества путем уменьшения номинальной стоимости акций общества принимается общим собранием акционеров общества большинством в три четверти голосов акционеров - владельцев голосующих акций, принимающих участие в общем собрании акционеров общества, только по предложению совета директоров (наблюдательного совета) общества. Решение об уменьшении уставного капитала общества путем уменьшения номинальной стоимости акций общества с передачей акционерам эмиссионных ценных бумаг должно предусматривать передачу каждому акционеру общества эмиссионных ценных бумаг одинаковой категории (типа), которые выпущены одним и тем же эмитент... |
В случае, если устав не отнес данное право к компетенции других коллегиальных органов, высший орган формирует и может досрочно прекращать полномочия других органов корпорации. |
1. Высшим органом корпорации является общее собрание ее участников. В некоммерческих корпорациях и производственных кооперативах с числом участников более ста высшим органом может являться съезд, конференция или иной представительный (коллегиальный) орган, определяемый их уставами в соответствии с законом. Компетенция этого органа и порядок принятия им решений определяются настоящим Кодексом, другими законами и уставом корпорации. (В редакции Федерального закона от 23.05.2015 № 133-ФЗ ) 2. Если иное не предусмотрено настоящим Кодексом или другим законом, к исключительной компетенции высшего органа корпорации относятся: определение приоритетных направлений деятельности корпорации, принципов образования и использования ее имущества; утверждение и изменение устава корпорации; определение порядка приема в состав участников корпорации и исключения из числа ее участников, кроме случаев, если такой порядок определен законом; образование других органов корпорации и досрочное прекращение их пол... |
MatryoshkaLoss with these parameters:{
"loss": "MultipleNegativesRankingLoss",
"matryoshka_dims": [
768,
512,
256,
128,
64
],
"matryoshka_weights": [
1,
1,
1,
1,
1
],
"n_dims_per_step": -1
}
eval_strategy: epochper_device_train_batch_size: 32per_device_eval_batch_size: 16gradient_accumulation_steps: 16learning_rate: 2e-05num_train_epochs: 4lr_scheduler_type: cosinewarmup_ratio: 0.1bf16: Truetf32: Trueload_best_model_at_end: Trueoptim: adamw_torch_fusedbatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: epochprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 16eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 4max_steps: -1lr_scheduler_type: cosinelr_scheduler_kwargs: {}warmup_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: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Truelocal_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}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_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: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_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: Falseeval_use_gather_object: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | dim_768_cosine_ndcg@10 | dim_512_cosine_ndcg@10 | dim_256_cosine_ndcg@10 | dim_128_cosine_ndcg@10 | dim_64_cosine_ndcg@10 |
|---|---|---|---|---|---|---|---|
| 0.0694 | 10 | 2.1039 | - | - | - | - | - |
| 0.1387 | 20 | 1.7273 | - | - | - | - | - |
| 0.2081 | 30 | 1.2744 | - | - | - | - | - |
| 0.2774 | 40 | 1.1445 | - | - | - | - | - |
| 0.3468 | 50 | 1.009 | - | - | - | - | - |
| 0.4161 | 60 | 0.8792 | - | - | - | - | - |
| 0.4855 | 70 | 0.7902 | - | - | - | - | - |
| 0.5548 | 80 | 0.6764 | - | - | - | - | - |
| 0.6242 | 90 | 0.7598 | - | - | - | - | - |
| 0.6935 | 100 | 0.6418 | - | - | - | - | - |
| 0.7629 | 110 | 0.6186 | - | - | - | - | - |
| 0.8322 | 120 | 0.6347 | - | - | - | - | - |
| 0.9016 | 130 | 0.5736 | - | - | - | - | - |
| 0.9710 | 140 | 0.6096 | - | - | - | - | - |
| 0.9987 | 144 | - | 0.1060 | 0.1077 | 0.1108 | 0.1032 | 0.0906 |
| 1.0403 | 150 | 0.5199 | - | - | - | - | - |
| 1.1097 | 160 | 0.4648 | - | - | - | - | - |
| 1.1790 | 170 | 0.4245 | - | - | - | - | - |
| 1.2484 | 180 | 0.4072 | - | - | - | - | - |
| 1.3177 | 190 | 0.4131 | - | - | - | - | - |
| 1.3871 | 200 | 0.4521 | - | - | - | - | - |
| 1.4564 | 210 | 0.418 | - | - | - | - | - |
| 1.5258 | 220 | 0.3962 | - | - | - | - | - |
| 1.5951 | 230 | 0.3412 | - | - | - | - | - |
| 1.6645 | 240 | 0.3968 | - | - | - | - | - |
| 1.7339 | 250 | 0.3728 | - | - | - | - | - |
| 1.8032 | 260 | 0.4378 | - | - | - | - | - |
| 1.8726 | 270 | 0.3821 | - | - | - | - | - |
| 1.9419 | 280 | 0.3937 | - | - | - | - | - |
| 1.9974 | 288 | - | 0.1129 | 0.1076 | 0.1092 | 0.1059 | 0.0958 |
| 2.0113 | 290 | 0.3767 | - | - | - | - | - |
| 2.0806 | 300 | 0.2859 | - | - | - | - | - |
| 2.1500 | 310 | 0.2779 | - | - | - | - | - |
| 2.2193 | 320 | 0.2673 | - | - | - | - | - |
| 2.2887 | 330 | 0.316 | - | - | - | - | - |
| 2.3580 | 340 | 0.2528 | - | - | - | - | - |
| 2.4274 | 350 | 0.2837 | - | - | - | - | - |
| 2.4967 | 360 | 0.2601 | - | - | - | - | - |
| 2.5661 | 370 | 0.2976 | - | - | - | - | - |
| 2.6355 | 380 | 0.2585 | - | - | - | - | - |
| 2.7048 | 390 | 0.2575 | - | - | - | - | - |
| 2.7742 | 400 | 0.2766 | - | - | - | - | - |
| 2.8435 | 410 | 0.2958 | - | - | - | - | - |
| 2.9129 | 420 | 0.2871 | - | - | - | - | - |
| 2.9822 | 430 | 0.2974 | - | - | - | - | - |
| 2.9961 | 432 | - | 0.1141 | 0.1130 | 0.1073 | 0.1060 | 0.0965 |
| 3.0516 | 440 | 0.2338 | - | - | - | - | - |
| 3.1209 | 450 | 0.2304 | - | - | - | - | - |
| 3.1903 | 460 | 0.2144 | - | - | - | - | - |
| 3.2596 | 470 | 0.2415 | - | - | - | - | - |
| 3.3290 | 480 | 0.2214 | - | - | - | - | - |
| 3.3984 | 490 | 0.2388 | - | - | - | - | - |
| 3.4677 | 500 | 0.2586 | - | - | - | - | - |
| 3.5371 | 510 | 0.2117 | - | - | - | - | - |
| 3.6064 | 520 | 0.2262 | - | - | - | - | - |
| 3.6758 | 530 | 0.1881 | - | - | - | - | - |
| 3.7451 | 540 | 0.2237 | - | - | - | - | - |
| 3.8145 | 550 | 0.24 | - | - | - | - | - |
| 3.8838 | 560 | 0.2319 | - | - | - | - | - |
| 3.9532 | 570 | 0.226 | - | - | - | - | - |
| 3.9948 | 576 | - | 0.1148 | 0.1122 | 0.1121 | 0.1044 | 0.0985 |
@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{kusupati2024matryoshka,
title={Matryoshka Representation Learning},
author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
year={2024},
eprint={2205.13147},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
@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
FacebookAI/xlm-roberta-base