Matryoshka Representation Learning
Paper • 2205.13147 • Published • 27
How to use sabber/worksphere-regulations-embedding_bge with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sabber/worksphere-regulations-embedding_bge")
sentences = [
"How should we proceed if the installed valve or its appurtenances do not conform to the City's criteria, and what steps are involved in remedying the situation?",
"1.1 SUMMARY:\n2. The valve shall perform as intended with no deformation, leaking or damage of any kind for the pressure ranges indicated.\n3. Before acceptance of the installed valve, provide the City the opportunity to inspect and operate the valve.\na. The City will assess the ease of operating the ball valves and corporation stops, where applicable.\n4. The Combination Air Valve assembly shall be free from any leaks.\nB. Non-Conforming Work\n1. Ifaccess and operation of the valve or its appurtenances does not meet the City's criteria, the Contractor will remedy the situation until it meets the City's criteria, at the Contractor's expense.\n3.8. SYSTEM STARTUP [NOT USED]\n3.9 ADJUSTING [NOT USED]\n3.10 CLEANING [NOT USED]\n3.11 CLOSEOUT ACTIVITIES [NOT USED]\n3.12, PROTECTION [NOT USED]\n3.13 MAINTENANCE [NOT USED]\n3.14 ATTACHMENTS [NOT USED]",
"b. Miscellaneous Areas:\nlayer.. , 1 = . , 2 = 3). , 3 = Take corrective action if an adequate bond does not exist between the. , 1 = . , 2 = . , 3 = current and underlying layer to ensure an adequate bond will be achieved. , 1 = . , 2 = . , 3 = during subsequent placement operations.. , 1 = . , 2 = 4). , 3 = The untrimmed core height must be in accordance with the requirements in. , 1 = . , 2 = . , 3 = Table 17.. , 1 = . , 2 = 5). , 3 = If the cores are an acceptable height, trim the cores immediately after. , 1 = . , 2 = . , 3 = obtaining the cores in accordance with Tex-207-F.. , 1 = . , 2 = . , 3 = Any core that does not meet the requirements in Table 17 will be rejected.. , 1 = . , 2 = 6). , 3 = more. , 1 = . , 2 = . , 3 = The City may request additional cores to be taken within the area. If. , 1 = . , 2 = 7). , 3 = than 2 cores are",
"4. Other Activities:\na. Rental of storage units, rental of storage space for recreational vehicles (RV) and boats, and the sale of moving related items are allowed uses.\nb. No other land use or business activity within storage units is allowed.\nc. The rental of moving trucks and moving related equipment shall constitute an Equipment Sales and Rental use.\nd. The sale and leasing of recreational vehicles (RVs) and boats shall constitute an Automotive Sales and Leasing use."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-base-en-v1.5. 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': True}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 768, '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("sabber/worksphere-regulations-embedding_bge")
# Run inference
sentences = [
"How can I ensure that the curing compound we receive at the job site meets the required specifications with the manufacturer's original containers and labels intact?",
"8. Curing:\n03 00 00\nCONCRETE AND CONCRETE REINFORCING\nPage 10 of 18\n6) Curing compound to be delivered to the job site in the manufacturer's original containers only, with original label containing the following:\na) Manufacturer's name\nb) Trade name of the material\nc) Batch number or symbol with which test samples may be correlated",
'2. For Large Wind Energy Systems:\na. The minimum acreage for a large wind system shall be established based on the setbacks of the turbine(s) and the height of the turbine(s);\nb. All turbines located within the same large wind system property shall be of a similar tower design, including the type, number of blades, and direction of blade rotation;\nc. Large wind systems shall be setback at least one and one-half times the height of the turbine and rotor diameter from the property line. Large wind systems shall also be setback at least one and one-half times the height of the turbine from above ground telephone, electrical lines, and other uninhabitable structures;\nd. Towers shall not be climbable up to 15 feet above ground level.',
]
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_1024, dim_768, dim_512 and dim_256InformationRetrievalEvaluator| Metric | dim_1024 | dim_768 | dim_512 | dim_256 |
|---|---|---|---|---|
| cosine_accuracy@1 | 0.0307 | 0.0307 | 0.03 | 0.0295 |
| cosine_accuracy@3 | 0.3986 | 0.3986 | 0.3907 | 0.3774 |
| cosine_accuracy@5 | 0.5774 | 0.5774 | 0.5644 | 0.5502 |
| cosine_accuracy@10 | 0.7881 | 0.7881 | 0.7819 | 0.7644 |
| cosine_precision@1 | 0.0307 | 0.0307 | 0.03 | 0.0295 |
| cosine_precision@3 | 0.1329 | 0.1329 | 0.1302 | 0.1258 |
| cosine_precision@5 | 0.1155 | 0.1155 | 0.1129 | 0.11 |
| cosine_precision@10 | 0.0788 | 0.0788 | 0.0782 | 0.0764 |
| cosine_recall@1 | 0.0307 | 0.0307 | 0.03 | 0.0295 |
| cosine_recall@3 | 0.3986 | 0.3986 | 0.3907 | 0.3774 |
| cosine_recall@5 | 0.5774 | 0.5774 | 0.5644 | 0.5502 |
| cosine_recall@10 | 0.7881 | 0.7881 | 0.7819 | 0.7644 |
| cosine_ndcg@1 | 0.0307 | 0.0307 | 0.03 | 0.0295 |
| cosine_ndcg@3 | 0.2318 | 0.2318 | 0.2266 | 0.2191 |
| cosine_ndcg@5 | 0.3041 | 0.3041 | 0.2968 | 0.2887 |
| cosine_ndcg@10 | 0.3753 | 0.3753 | 0.3706 | 0.3613 |
| cosine_mrr@1 | 0.0307 | 0.0307 | 0.03 | 0.0295 |
| cosine_mrr@3 | 0.1752 | 0.1752 | 0.171 | 0.1654 |
| cosine_mrr@5 | 0.2144 | 0.2144 | 0.2091 | 0.2031 |
| cosine_mrr@10 | 0.2457 | 0.2457 | 0.2416 | 0.235 |
| cosine_map@100 | 0.2551 | 0.2551 | 0.2512 | 0.2453 |
question and context| question | context | |
|---|---|---|
| type | string | string |
| details |
|
|
| question | context |
|---|---|
Are there any specific guidelines or requirements for the installation of tree supports as outlined in the regulations? |
SECTION 32 93 00: |
What specific information do I need to include in my application to meet the standards for grouted installations? |
1.1 SUMMARY: |
In the event of a quasi judicial hearing, who else besides the site owner(s) should we inform about the decision notification process, and how do we manage their requests for a copy of the decision? |
Notice of Decision: |
MatryoshkaLoss with these parameters:{
"loss": "MultipleNegativesRankingLoss",
"matryoshka_dims": [
768,
512,
256
],
"matryoshka_weights": [
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: 8lr_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: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 8max_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: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | dim_1024_cosine_ndcg@10 | dim_768_cosine_ndcg@10 | dim_512_cosine_ndcg@10 | dim_256_cosine_ndcg@10 |
|---|---|---|---|---|---|---|
| 0.2974 | 10 | 2.3168 | - | - | - | - |
| 0.5948 | 20 | 1.2839 | - | - | - | - |
| 0.8922 | 30 | 0.6758 | - | - | - | - |
| 0.9814 | 33 | - | 0.3592 | 0.3592 | 0.3556 | 0.3496 |
| 1.1896 | 40 | 0.4651 | - | - | - | - |
| 1.4870 | 50 | 0.3707 | - | - | - | - |
| 1.7844 | 60 | 0.2941 | - | - | - | - |
| 1.9926 | 67 | - | 0.3732 | 0.3732 | 0.3699 | 0.3601 |
| 2.0818 | 70 | 0.2651 | - | - | - | - |
| 2.3792 | 80 | 0.2341 | - | - | - | - |
| 2.6766 | 90 | 0.2093 | - | - | - | - |
| 2.9740 | 100 | 0.1812 | 0.3747 | 0.3747 | 0.3718 | 0.3626 |
| 3.2714 | 110 | 0.1717 | - | - | - | - |
| 3.5688 | 120 | 0.1496 | - | - | - | - |
| 3.8662 | 130 | 0.1472 | - | - | - | - |
| 3.9851 | 134 | - | 0.3742 | 0.3742 | 0.3727 | 0.3628 |
| 4.1636 | 140 | 0.1304 | - | - | - | - |
| 4.4610 | 150 | 0.1229 | - | - | - | - |
| 4.7584 | 160 | 0.1085 | - | - | - | - |
| 4.9963 | 168 | - | 0.3745 | 0.3745 | 0.3717 | 0.361 |
| 5.0558 | 170 | 0.1144 | - | - | - | - |
| 5.3532 | 180 | 0.1088 | - | - | - | - |
| 5.6506 | 190 | 0.0937 | - | - | - | - |
| 5.9480 | 200 | 0.1023 | - | - | - | - |
| 5.9777 | 201 | - | 0.3749 | 0.3749 | 0.3704 | 0.3603 |
| 6.2454 | 210 | 0.0942 | - | - | - | - |
| 6.5428 | 220 | 0.0919 | - | - | - | - |
| 6.8401 | 230 | 0.0939 | - | - | - | - |
| 6.9888 | 235 | - | 0.3755 | 0.3755 | 0.3705 | 0.3603 |
| 7.1375 | 240 | 0.0925 | - | - | - | - |
| 7.4349 | 250 | 0.0928 | - | - | - | - |
| 7.7323 | 260 | 0.0869 | - | - | - | - |
| 7.8513 | 264 | - | 0.3753 | 0.3753 | 0.3706 | 0.3613 |
@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
BAAI/bge-base-en-v1.5