Matryoshka Representation Learning
Paper • 2205.13147 • Published • 27
How to use cferreiragonz/bge-base-fastdds-questions with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("cferreiragonz/bge-base-fastdds-questions")
sentences = [
"The environment variable accepts several types of units to specify the\nvalues of the parameters. Also, both lowercase and uppercase letters\nare valid. The following list shows the available units and their\ncorresponding symbols:",
"What is the primary purpose of using eProsima DDS Record and Replay in ROS 2, as described in the provided text?",
"What is the purpose of installing SWIG when setting up Fast DDS Python bindings?",
"What is the primary purpose of setting the \"FASTDDS_ BUILTIN_TRANSPORTS\" environment variable in Fast DDS?"
]
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("cferreiragonz/bge-base-fastdds-questions")
# Run inference
sentences = [
' For further information about Fast DDS build system dependencies\n regarding QNX 7.1, please refer to the Fast DDS Build system\n dependencies section.',
'What is required for installing eProsima Fast DDS on a QNX 7.1 target from sources?',
'What is the primary purpose of the SubscriberListener class in terms of handling state changes on a Subscriber?',
]
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_768InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.3054 |
| cosine_accuracy@3 | 0.4988 |
| cosine_accuracy@5 | 0.5548 |
| cosine_accuracy@10 | 0.627 |
| cosine_precision@1 | 0.3054 |
| cosine_precision@3 | 0.1663 |
| cosine_precision@5 | 0.111 |
| cosine_precision@10 | 0.0627 |
| cosine_recall@1 | 0.3054 |
| cosine_recall@3 | 0.4988 |
| cosine_recall@5 | 0.5548 |
| cosine_recall@10 | 0.627 |
| cosine_ndcg@10 | 0.4668 |
| cosine_mrr@10 | 0.4156 |
| cosine_map@100 | 0.4222 |
dim_512InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.2984 |
| cosine_accuracy@3 | 0.4848 |
| cosine_accuracy@5 | 0.5431 |
| cosine_accuracy@10 | 0.627 |
| cosine_precision@1 | 0.2984 |
| cosine_precision@3 | 0.1616 |
| cosine_precision@5 | 0.1086 |
| cosine_precision@10 | 0.0627 |
| cosine_recall@1 | 0.2984 |
| cosine_recall@3 | 0.4848 |
| cosine_recall@5 | 0.5431 |
| cosine_recall@10 | 0.627 |
| cosine_ndcg@10 | 0.461 |
| cosine_mrr@10 | 0.4083 |
| cosine_map@100 | 0.4149 |
dim_256InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.3007 |
| cosine_accuracy@3 | 0.4802 |
| cosine_accuracy@5 | 0.5221 |
| cosine_accuracy@10 | 0.6061 |
| cosine_precision@1 | 0.3007 |
| cosine_precision@3 | 0.1601 |
| cosine_precision@5 | 0.1044 |
| cosine_precision@10 | 0.0606 |
| cosine_recall@1 | 0.3007 |
| cosine_recall@3 | 0.4802 |
| cosine_recall@5 | 0.5221 |
| cosine_recall@10 | 0.6061 |
| cosine_ndcg@10 | 0.4522 |
| cosine_mrr@10 | 0.4033 |
| cosine_map@100 | 0.4114 |
dim_128InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.289 |
| cosine_accuracy@3 | 0.4615 |
| cosine_accuracy@5 | 0.5175 |
| cosine_accuracy@10 | 0.5944 |
| cosine_precision@1 | 0.289 |
| cosine_precision@3 | 0.1538 |
| cosine_precision@5 | 0.1035 |
| cosine_precision@10 | 0.0594 |
| cosine_recall@1 | 0.289 |
| cosine_recall@3 | 0.4615 |
| cosine_recall@5 | 0.5175 |
| cosine_recall@10 | 0.5944 |
| cosine_ndcg@10 | 0.4393 |
| cosine_mrr@10 | 0.39 |
| cosine_map@100 | 0.3981 |
dim_64InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.2564 |
| cosine_accuracy@3 | 0.4149 |
| cosine_accuracy@5 | 0.4779 |
| cosine_accuracy@10 | 0.5548 |
| cosine_precision@1 | 0.2564 |
| cosine_precision@3 | 0.1383 |
| cosine_precision@5 | 0.0956 |
| cosine_precision@10 | 0.0555 |
| cosine_recall@1 | 0.2564 |
| cosine_recall@3 | 0.4149 |
| cosine_recall@5 | 0.4779 |
| cosine_recall@10 | 0.5548 |
| cosine_ndcg@10 | 0.4019 |
| cosine_mrr@10 | 0.3535 |
| cosine_map@100 | 0.3622 |
eval_strategy: epochper_device_train_batch_size: 16per_device_eval_batch_size: 16gradient_accumulation_steps: 16learning_rate: 2e-05num_train_epochs: 4lr_scheduler_type: cosinewarmup_ratio: 0.1fp16: 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: 16per_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: 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: Falsefp16: Truefp16_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: 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: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | dim_128_cosine_map@100 | dim_256_cosine_map@100 | dim_512_cosine_map@100 | dim_64_cosine_map@100 | dim_768_cosine_map@100 |
|---|---|---|---|---|---|---|---|
| 0.6639 | 10 | 5.0047 | - | - | - | - | - |
| 0.9959 | 15 | - | 0.3624 | 0.3806 | 0.3842 | 0.3318 | 0.3864 |
| 1.3278 | 20 | 3.3543 | - | - | - | - | - |
| 1.9917 | 30 | 2.5931 | 0.3886 | 0.4016 | 0.4103 | 0.3603 | 0.4153 |
| 2.6556 | 40 | 2.1763 | - | - | - | - | - |
| 2.9876 | 45 | - | 0.3966 | 0.4126 | 0.4156 | 0.3623 | 0.4205 |
| 3.3195 | 50 | 2.0242 | - | - | - | - | - |
| 3.9834 | 60 | 1.9003 | 0.3981 | 0.4114 | 0.4149 | 0.3622 | 0.4222 |
@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