Edit model card

Nomic Embed 1.5 Financial Matryoshka

This is a sentence-transformers model finetuned from nomic-ai/nomic-embed-text-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.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: nomic-ai/nomic-embed-text-v1.5
  • Maximum Sequence Length: 8192 tokens
  • Output Dimensionality: 768 tokens
  • Similarity Function: Cosine Similarity
  • Language: en
  • License: apache-2.0

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 8192, '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})
)

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("venkateshmurugadas/nomic-v1.5-financial-matryoshka")
# Run inference
sentences = [
    'The company may issue debt or equity securities occasionally to provide additional liquidity or pursue opportunities to enhance its long-term competitive position while maintaining a strong balance sheet. ',
    'What might the company do to increase liquidity or pursue long-term competitive advantages while managing a strong balance sheet?',
    'What types of technologies does the Mortgage Technology segment employ to enhance operational efficiency?',
]
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]

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.6929
cosine_accuracy@3 0.8229
cosine_accuracy@5 0.87
cosine_accuracy@10 0.9071
cosine_precision@1 0.6929
cosine_precision@3 0.2743
cosine_precision@5 0.174
cosine_precision@10 0.0907
cosine_recall@1 0.6929
cosine_recall@3 0.8229
cosine_recall@5 0.87
cosine_recall@10 0.9071
cosine_ndcg@10 0.803
cosine_mrr@10 0.7693
cosine_map@100 0.7724

Information Retrieval

Metric Value
cosine_accuracy@1 0.6914
cosine_accuracy@3 0.8271
cosine_accuracy@5 0.87
cosine_accuracy@10 0.9086
cosine_precision@1 0.6914
cosine_precision@3 0.2757
cosine_precision@5 0.174
cosine_precision@10 0.0909
cosine_recall@1 0.6914
cosine_recall@3 0.8271
cosine_recall@5 0.87
cosine_recall@10 0.9086
cosine_ndcg@10 0.803
cosine_mrr@10 0.7688
cosine_map@100 0.7718

Information Retrieval

Metric Value
cosine_accuracy@1 0.6871
cosine_accuracy@3 0.8286
cosine_accuracy@5 0.8729
cosine_accuracy@10 0.8986
cosine_precision@1 0.6871
cosine_precision@3 0.2762
cosine_precision@5 0.1746
cosine_precision@10 0.0899
cosine_recall@1 0.6871
cosine_recall@3 0.8286
cosine_recall@5 0.8729
cosine_recall@10 0.8986
cosine_ndcg@10 0.7984
cosine_mrr@10 0.7656
cosine_map@100 0.7693

Information Retrieval

Metric Value
cosine_accuracy@1 0.6671
cosine_accuracy@3 0.8186
cosine_accuracy@5 0.8557
cosine_accuracy@10 0.8957
cosine_precision@1 0.6671
cosine_precision@3 0.2729
cosine_precision@5 0.1711
cosine_precision@10 0.0896
cosine_recall@1 0.6671
cosine_recall@3 0.8186
cosine_recall@5 0.8557
cosine_recall@10 0.8957
cosine_ndcg@10 0.785
cosine_mrr@10 0.7491
cosine_map@100 0.7525

Information Retrieval

Metric Value
cosine_accuracy@1 0.6529
cosine_accuracy@3 0.7871
cosine_accuracy@5 0.8271
cosine_accuracy@10 0.8771
cosine_precision@1 0.6529
cosine_precision@3 0.2624
cosine_precision@5 0.1654
cosine_precision@10 0.0877
cosine_recall@1 0.6529
cosine_recall@3 0.7871
cosine_recall@5 0.8271
cosine_recall@10 0.8771
cosine_ndcg@10 0.764
cosine_mrr@10 0.728
cosine_map@100 0.7318

Training Details

Training Dataset

Unnamed Dataset

  • Size: 6,300 training samples
  • Columns: positive and anchor
  • Approximate statistics based on the first 1000 samples:
    positive anchor
    type string string
    details
    • min: 8 tokens
    • mean: 46.46 tokens
    • max: 371 tokens
    • min: 2 tokens
    • mean: 20.45 tokens
    • max: 41 tokens
  • Samples:
    positive anchor
    We evaluate uncertain tax positions periodically, considering changes in facts and circumstances, such as new regulations or recent judicial opinions, as well as the status of audit activities by taxing authorities. How are changes to a company's uncertain tax positions evaluated?
    During 2022 and 2023, our operating margin was impacted by increased wage rates. During 2022, our gross margin was impacted by higher air freight costs as a result of global supply chain disruption. What effects did inflation have on the company's operating results during 2022 and 2023?
    To mitigate these developments, we are continually working to evolve our advertising systems to improve the performance of our ad products. We are developing privacy enhancing technologies to deliver relevant ads and measurement capabilities while reducing the amount of personal information we process, including by relying more on anonymized or aggregated third-party data. In addition, we are developing tools that enable marketers to share their data into our systems, as well as ad products that generate more valuable signals within our apps. More broadly, we also continue to innovate our advertising tools to help marketers prepare campaigns and connect with consumers, including developing growing formats such as Reels ads and our business messaging ad products. Across all of these efforts, we are making significant investments in artificial intelligence (AI), including generative AI, to improve our delivery, targeting, and measurement capabilities. Further, we are focused on driving onsite conversions in our business messaging ad products by developing new features and scaling existing features. What technological solutions is the company developing to improve ad delivery?
  • Loss: 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
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: epoch
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 4
  • gradient_accumulation_steps: 64
  • learning_rate: 2e-05
  • num_train_epochs: 4
  • lr_scheduler_type: cosine
  • warmup_ratio: 0.1
  • fp16: True
  • tf32: False
  • 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: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 4
  • per_device_eval_batch_size: 4
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 64
  • 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: 4
  • max_steps: -1
  • lr_scheduler_type: cosine
  • 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: False
  • fp16: True
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: False
  • 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_512_cosine_map@100 dim_64_cosine_map@100 dim_768_cosine_map@100
0.4063 10 0.1329 - - - - -
0.8127 20 0.0567 - - - - -
0.9752 24 - 0.7416 0.7604 0.7678 0.7249 0.7758
1.2190 30 0.0415 - - - - -
1.6254 40 0.0043 - - - - -
1.9911 49 - 0.7491 0.7648 0.7700 0.7315 0.7731
2.0317 50 0.0059 - - - - -
2.4381 60 0.0045 - - - - -
2.8444 70 0.0013 - - - - -
2.9663 73 - 0.7531 0.7703 0.7712 0.7327 0.7738
3.2508 80 0.0031 - - - - -
3.6571 90 0.0009 - - - - -
3.9010 96 - 0.7525 0.7693 0.7718 0.7318 0.7724
  • The bold row denotes the saved checkpoint.

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
24
Safetensors
Model size
137M params
Tensor type
F32
·
Inference API
This model can be loaded on Inference API (serverless).

Finetuned from

Evaluation results