Matryoshka Representation Learning
Paper • 2205.13147 • Published • 30
How to use MistyDragon/bge-base-financial-matryoshka with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("MistyDragon/bge-base-financial-matryoshka")
sentences = [
"Page S-1 of IBM's Form 10-K contains the Financial Statement Schedule.",
"What was the free cash flow less equipment finance leases and principal repayments of all other finance leases and financing obligations for the year 2022?",
"What does the reference to page S-1 in IBM’s Form 10-K pertain to?",
"What triggers the reassessment of probabilities for uncertain tax positions?"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-small-en-v1.5 on the json dataset. It maps sentences & paragraphs to a 384-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': 384, '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("MistyDragon/bge-base-financial-matryoshka")
# Run inference
sentences = [
'On June 7, 2023, the Company and Epic filed petitions with the Circuit Court requesting further review of the decision. On June 30, 2023, the Circuit Court denied both petitions.',
'When did the Circuit Court deny the petitions filed by Apple and Epic for further review of the decision?',
'What was the adjusted debt to EBITDAR ratio for the fiscal year ended August 26, 2023?',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
dim_256InformationRetrievalEvaluator with these parameters:{
"truncate_dim": 256
}
| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.6886 |
| cosine_accuracy@3 | 0.8143 |
| cosine_accuracy@5 | 0.8557 |
| cosine_accuracy@10 | 0.8971 |
| cosine_precision@1 | 0.6886 |
| cosine_precision@3 | 0.2714 |
| cosine_precision@5 | 0.1711 |
| cosine_precision@10 | 0.0897 |
| cosine_recall@1 | 0.6886 |
| cosine_recall@3 | 0.8143 |
| cosine_recall@5 | 0.8557 |
| cosine_recall@10 | 0.8971 |
| cosine_ndcg@10 | 0.7952 |
| cosine_mrr@10 | 0.7624 |
| cosine_map@100 | 0.7662 |
dim_128InformationRetrievalEvaluator with these parameters:{
"truncate_dim": 128
}
| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.6886 |
| cosine_accuracy@3 | 0.7971 |
| cosine_accuracy@5 | 0.8443 |
| cosine_accuracy@10 | 0.8914 |
| cosine_precision@1 | 0.6886 |
| cosine_precision@3 | 0.2657 |
| cosine_precision@5 | 0.1689 |
| cosine_precision@10 | 0.0891 |
| cosine_recall@1 | 0.6886 |
| cosine_recall@3 | 0.7971 |
| cosine_recall@5 | 0.8443 |
| cosine_recall@10 | 0.8914 |
| cosine_ndcg@10 | 0.7889 |
| cosine_mrr@10 | 0.7563 |
| cosine_map@100 | 0.76 |
dim_64InformationRetrievalEvaluator with these parameters:{
"truncate_dim": 64
}
| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.6571 |
| cosine_accuracy@3 | 0.7786 |
| cosine_accuracy@5 | 0.8229 |
| cosine_accuracy@10 | 0.8629 |
| cosine_precision@1 | 0.6571 |
| cosine_precision@3 | 0.2595 |
| cosine_precision@5 | 0.1646 |
| cosine_precision@10 | 0.0863 |
| cosine_recall@1 | 0.6571 |
| cosine_recall@3 | 0.7786 |
| cosine_recall@5 | 0.8229 |
| cosine_recall@10 | 0.8629 |
| cosine_ndcg@10 | 0.7609 |
| cosine_mrr@10 | 0.7282 |
| cosine_map@100 | 0.733 |
positive and anchor| positive | anchor | |
|---|---|---|
| type | string | string |
| details |
|
|
| positive | anchor |
|---|---|
In a competitive home improvement market, the company focuses on factors such as customer experience, price, quality, product availability, and delivery options to attract and retain customers. |
How does the company compete with other businesses in the home improvement market? |
Historically, the majority of revenue from North American and European regions, which experience higher sales of solar products in the second, third, and fourth quarters, have been affected by seasonal customer demand trends. |
What seasonal sales trend does the solar sector typically exhibit? |
We expect to have adequate supplies or sources of availability of raw materials necessary to meet our needs; however, there always are risks and uncertainties with respect to the supply of raw materials that could impact availability in sufficient quantities and at cost effective prices to meet our needs. |
What are some of the risk factors associated with raw material supplies for a vehicle manufacturer? |
MatryoshkaLoss with these parameters:{
"loss": "MultipleNegativesRankingLoss",
"matryoshka_dims": [
256,
128,
64
],
"matryoshka_weights": [
1,
1,
1
],
"n_dims_per_step": -1
}
eval_strategy: epochper_device_eval_batch_size: 16gradient_accumulation_steps: 8learning_rate: 2e-05num_train_epochs: 4lr_scheduler_type: cosinewarmup_ratio: 0.1bf16: Truetf32: Falseload_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: 8per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 8eval_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: Falselocal_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: Nonehub_always_push: Falsegradient_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: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | dim_256_cosine_ndcg@10 | dim_128_cosine_ndcg@10 | dim_64_cosine_ndcg@10 |
|---|---|---|---|---|---|
| 0.1015 | 10 | 4.6757 | - | - | - |
| 0.2030 | 20 | 3.7954 | - | - | - |
| 0.3046 | 30 | 2.8699 | - | - | - |
| 0.4061 | 40 | 1.9741 | - | - | - |
| 0.5076 | 50 | 1.3134 | - | - | - |
| 0.6091 | 60 | 1.3616 | - | - | - |
| 0.7107 | 70 | 1.4887 | - | - | - |
| 0.8122 | 80 | 1.6192 | - | - | - |
| 0.9137 | 90 | 1.1806 | - | - | - |
| 1.0 | 99 | - | 0.7859 | 0.7743 | 0.7488 |
| 1.0102 | 100 | 1.2233 | - | - | - |
| 1.1117 | 110 | 0.8571 | - | - | - |
| 1.2132 | 120 | 0.9667 | - | - | - |
| 1.3147 | 130 | 0.9762 | - | - | - |
| 1.4162 | 140 | 0.8002 | - | - | - |
| 1.5178 | 150 | 0.7964 | - | - | - |
| 1.6193 | 160 | 0.9702 | - | - | - |
| 1.7208 | 170 | 0.653 | - | - | - |
| 1.8223 | 180 | 0.8967 | - | - | - |
| 1.9239 | 190 | 0.3674 | - | - | - |
| 2.0 | 198 | - | 0.7922 | 0.7882 | 0.7593 |
| 2.0203 | 200 | 0.5451 | - | - | - |
| 2.1218 | 210 | 0.8927 | - | - | - |
| 2.2234 | 220 | 0.603 | - | - | - |
| 2.3249 | 230 | 0.5169 | - | - | - |
| 2.4264 | 240 | 0.7078 | - | - | - |
| 2.5279 | 250 | 0.67 | - | - | - |
| 2.6294 | 260 | 0.8605 | - | - | - |
| 2.7310 | 270 | 0.9597 | - | - | - |
| 2.8325 | 280 | 0.503 | - | - | - |
| 2.9340 | 290 | 0.5416 | - | - | - |
| 3.0 | 297 | - | 0.7936 | 0.7898 | 0.7625 |
| 3.0305 | 300 | 0.5506 | - | - | - |
| 3.1320 | 310 | 0.7123 | - | - | - |
| 3.2335 | 320 | 0.5213 | - | - | - |
| 3.3350 | 330 | 0.8629 | - | - | - |
| 3.4365 | 340 | 0.683 | - | - | - |
| 3.5381 | 350 | 0.4859 | - | - | - |
| 3.6396 | 360 | 0.5015 | - | - | - |
| 3.7411 | 370 | 0.5414 | - | - | - |
| 3.8426 | 380 | 0.6515 | - | - | - |
| 3.9442 | 390 | 0.6247 | - | - | - |
| 4.0 | 396 | - | 0.7952 | 0.7889 | 0.7609 |
@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-small-en-v1.5