Edit model card

SentenceTransformer

This is a sentence-transformers model trained. 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.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 384 tokens
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

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()
)

Usage

Direct Usage (Sentence Transformers)

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("Adi-0-0-Gupta/Embedding-v2")
# Run inference
sentences = [
    'Tag: vegan pad thai\n\nCook time of vegan pad thai based on different serving sizes: Serving 1 - 20 mins, Serving 2 - 25 mins, Serving 3 - 30 mins, Serving 4 - 35 mins',
    'Tag: vegan pad thai\n\nWhat’s the expected cook time for vegan pad thai?',
    'Tag: scrambled eggs with veggies\n\nWhat dietary classifications suit scrambled eggs with veggies?',
]
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]

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.9688
cosine_accuracy@3 0.9701
cosine_accuracy@5 0.9748
cosine_accuracy@10 0.9947
cosine_precision@1 0.9688
cosine_precision@3 0.847
cosine_precision@5 0.8015
cosine_precision@10 0.4412
cosine_recall@1 0.3286
cosine_recall@3 0.6209
cosine_recall@5 0.8939
cosine_recall@10 0.9605
cosine_ndcg@10 0.9593
cosine_mrr@10 0.9734
cosine_map@100 0.954

Information Retrieval

Metric Value
cosine_accuracy@1 0.968
cosine_accuracy@3 0.9693
cosine_accuracy@5 0.9752
cosine_accuracy@10 0.9949
cosine_precision@1 0.968
cosine_precision@3 0.8459
cosine_precision@5 0.7993
cosine_precision@10 0.4392
cosine_recall@1 0.3284
cosine_recall@3 0.6204
cosine_recall@5 0.8919
cosine_recall@10 0.9569
cosine_ndcg@10 0.9567
cosine_mrr@10 0.9727
cosine_map@100 0.9512

Information Retrieval

Metric Value
cosine_accuracy@1 0.9695
cosine_accuracy@3 0.9705
cosine_accuracy@5 0.9761
cosine_accuracy@10 0.9949
cosine_precision@1 0.9695
cosine_precision@3 0.8471
cosine_precision@5 0.7985
cosine_precision@10 0.438
cosine_recall@1 0.3287
cosine_recall@3 0.6211
cosine_recall@5 0.8913
cosine_recall@10 0.955
cosine_ndcg@10 0.9559
cosine_mrr@10 0.9739
cosine_map@100 0.95

Information Retrieval

Metric Value
cosine_accuracy@1 0.9699
cosine_accuracy@3 0.972
cosine_accuracy@5 0.9772
cosine_accuracy@10 0.9938
cosine_precision@1 0.9699
cosine_precision@3 0.8473
cosine_precision@5 0.7966
cosine_precision@10 0.434
cosine_recall@1 0.3288
cosine_recall@3 0.6213
cosine_recall@5 0.8895
cosine_recall@10 0.9478
cosine_ndcg@10 0.9517
cosine_mrr@10 0.9744
cosine_map@100 0.946

Information Retrieval

Metric Value
cosine_accuracy@1 0.969
cosine_accuracy@3 0.9708
cosine_accuracy@5 0.9769
cosine_accuracy@10 0.993
cosine_precision@1 0.969
cosine_precision@3 0.8465
cosine_precision@5 0.794
cosine_precision@10 0.4319
cosine_recall@1 0.3286
cosine_recall@3 0.6208
cosine_recall@5 0.8871
cosine_recall@10 0.9441
cosine_ndcg@10 0.949
cosine_mrr@10 0.9735
cosine_map@100 0.9417

Training Details

Training Dataset

Unnamed Dataset

  • Size: 42,333 training samples
  • Columns: positive and anchor
  • Approximate statistics based on the first 1000 samples:
    positive anchor
    type string string
    details
    • min: 17 tokens
    • mean: 71.13 tokens
    • max: 433 tokens
    • min: 14 tokens
    • mean: 22.97 tokens
    • max: 41 tokens
  • Samples:
    positive anchor
    Tag: beef and broccoli

    A small description of beef and broccoli: Stir fried broccoli and tender beef strips stir-fried in a rich savory sauce.
    Tag: beef and broccoli

    How do you describe beef and broccoli?
    Tag: beef and broccoli

    Garnishing tips for beef and broccoli: Best served on it's own or on top of hot rice with chopped scallions!
    Tag: beef and broccoli

    What are some classic garnishes for beef and broccoli?
    Tag: beef and broccoli

    For beef and broccoli, these dietary tags go well with it: dinner, contains soy, meat recipes, asian american cuisine, lunch, american cuisine, beef recipes, asian cuisine, chinese cuisine, hearty recipes, rice recipes, protein rich recipes, non vegetarian, saucy recipes, stir fry recipes, healthy recipes
    Tag: beef and broccoli

    What dietary labels suit beef and broccoli?
  • Loss: MatryoshkaLoss with these parameters:
    {
        "loss": "MultipleNegativesRankingLoss",
        "matryoshka_dims": [
            384,
            256,
            128,
            64,
            32
        ],
        "matryoshka_weights": [
            1,
            1,
            1,
            1,
            1
        ],
        "n_dims_per_step": -1
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 32
  • per_device_eval_batch_size: 32
  • gradient_accumulation_steps: 16
  • learning_rate: 2e-05
  • num_train_epochs: 100
  • lr_scheduler_type: constant
  • warmup_ratio: 0.1
  • bf16: True
  • tf32: True
  • load_best_model_at_end: True
  • optim: adamw_torch_fused
  • batch_sampler: no_duplicates

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 32
  • per_device_eval_batch_size: 32
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 16
  • eval_accumulation_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 100
  • max_steps: -1
  • lr_scheduler_type: constant
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: True
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: True
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: False
  • hub_always_push: False
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • dispatch_batches: None
  • split_batches: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional

Training Logs

Epoch Step Training Loss dim_128_cosine_map@100 dim_256_cosine_map@100 dim_32_cosine_map@100 dim_384_cosine_map@100 dim_64_cosine_map@100
0.3023 25 2.7893 0.9106 0.9169 0.8833 0.9193 0.9013
0.6047 50 1.6554 0.9061 0.9153 0.8858 0.9199 0.8970
0.9070 75 0.7514 0.9361 0.9382 0.9216 0.9423 0.9292
1.2079 100 1.2044 0.9334 0.9370 0.9186 0.9413 0.9263
1.5102 125 1.4103 0.9312 0.9342 0.9146 0.9382 0.9222
1.8125 150 0.6925 0.9444 0.9463 0.9326 0.9502 0.9385
2.1134 175 0.7937 0.9333 0.9376 0.9196 0.9410 0.9256
2.4157 200 1.3185 0.9321 0.9355 0.9191 0.9399 0.9245
2.7181 225 1.0296 0.9400 0.9426 0.9293 0.9466 0.9345
3.0189 250 0.3606 0.9342 0.9373 0.9231 0.9417 0.9282
3.3212 275 1.2364 0.9381 0.9410 0.9273 0.9444 0.9312
3.6236 300 1.2507 0.9305 0.9340 0.9193 0.9385 0.9233
3.9259 325 0.3211 0.9500 0.9512 0.9417 0.9540 0.9460

Framework Versions

  • Python: 3.10.12
  • Sentence Transformers: 3.0.1
  • Transformers: 4.41.2
  • PyTorch: 2.1.2+cu121
  • Accelerate: 0.31.0
  • Datasets: 2.19.1
  • Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers

@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",
}

MatryoshkaLoss

@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}
}

MultipleNegativesRankingLoss

@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}
}
Downloads last month
8
Safetensors
Model size
33.4M params
Tensor type
F32
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Evaluation results