Edit model card

BGE base Financial Matryoshka

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.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: BAAI/bge-base-en-v1.5
  • Maximum Sequence Length: 512 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': 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()
)

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("felipehsilveira/bge-base-financial-matryoshka")
# Run inference
sentences = [
    'Our products compete with other commercially available products based primarily on efficacy, safety, tolerability, acceptance by doctors, ease of patient compliance, ease of use, price, insurance and other reimbursement coverage, distribution and marketing.',
    "What are the main factors influencing competition for the company's products?",
    'What was the impact of restructuring charges in 2022 on the company and what changes occurred in 2023?',
]
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.6986
cosine_accuracy@3 0.83
cosine_accuracy@5 0.88
cosine_accuracy@10 0.9257
cosine_precision@1 0.6986
cosine_precision@3 0.2767
cosine_precision@5 0.176
cosine_precision@10 0.0926
cosine_recall@1 0.6986
cosine_recall@3 0.83
cosine_recall@5 0.88
cosine_recall@10 0.9257
cosine_ndcg@10 0.8142
cosine_mrr@10 0.7782
cosine_map@100 0.7808

Information Retrieval

Metric Value
cosine_accuracy@1 0.7014
cosine_accuracy@3 0.8329
cosine_accuracy@5 0.8857
cosine_accuracy@10 0.9229
cosine_precision@1 0.7014
cosine_precision@3 0.2776
cosine_precision@5 0.1771
cosine_precision@10 0.0923
cosine_recall@1 0.7014
cosine_recall@3 0.8329
cosine_recall@5 0.8857
cosine_recall@10 0.9229
cosine_ndcg@10 0.8134
cosine_mrr@10 0.7781
cosine_map@100 0.7809

Information Retrieval

Metric Value
cosine_accuracy@1 0.7
cosine_accuracy@3 0.84
cosine_accuracy@5 0.8714
cosine_accuracy@10 0.9086
cosine_precision@1 0.7
cosine_precision@3 0.28
cosine_precision@5 0.1743
cosine_precision@10 0.0909
cosine_recall@1 0.7
cosine_recall@3 0.84
cosine_recall@5 0.8714
cosine_recall@10 0.9086
cosine_ndcg@10 0.8077
cosine_mrr@10 0.775
cosine_map@100 0.7785

Information Retrieval

Metric Value
cosine_accuracy@1 0.6943
cosine_accuracy@3 0.82
cosine_accuracy@5 0.8557
cosine_accuracy@10 0.9029
cosine_precision@1 0.6943
cosine_precision@3 0.2733
cosine_precision@5 0.1711
cosine_precision@10 0.0903
cosine_recall@1 0.6943
cosine_recall@3 0.82
cosine_recall@5 0.8557
cosine_recall@10 0.9029
cosine_ndcg@10 0.7991
cosine_mrr@10 0.7659
cosine_map@100 0.7697

Information Retrieval

Metric Value
cosine_accuracy@1 0.6614
cosine_accuracy@3 0.7843
cosine_accuracy@5 0.8271
cosine_accuracy@10 0.8886
cosine_precision@1 0.6614
cosine_precision@3 0.2614
cosine_precision@5 0.1654
cosine_precision@10 0.0889
cosine_recall@1 0.6614
cosine_recall@3 0.7843
cosine_recall@5 0.8271
cosine_recall@10 0.8886
cosine_ndcg@10 0.7731
cosine_mrr@10 0.7366
cosine_map@100 0.7404

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: 6 tokens
    • mean: 45.44 tokens
    • max: 301 tokens
    • min: 7 tokens
    • mean: 20.3 tokens
    • max: 51 tokens
  • Samples:
    positive anchor
    The Centers for Medicare & Medicaid Services issued a final rule in October 2023 for the calendar year 2024, estimating a productivity-adjusted market basket increase of 2.1% in average reimbursement to ESRD facilities. What is the projected impact on average reimbursement to ESRD facilities in 2024 due to the final rule issued by CMS?
    Company Adjusted EBIT Margin is derived by dividing the Company adjusted EBIT by Company revenue, which is a non-GAAP measure useful for evaluating the company's operating results. How is the Company Adjusted EBIT Margin calculated?
    The provision for credit losses was $4 million for the year ended December 31, 202 serviLists of account holders responsible for and the state of the economy, our credit standards, our risk assessments, and the judgment of our employees responsible for granting credit. What factors influence the provision for credit losses at Las Vegas Sands Corp.?
  • 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: 32
  • per_device_eval_batch_size: 16
  • gradient_accumulation_steps: 16
  • learning_rate: 2e-05
  • num_train_epochs: 4
  • lr_scheduler_type: cosine
  • 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: epoch
  • prediction_loss_only: True
  • per_device_train_batch_size: 32
  • per_device_eval_batch_size: 16
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 16
  • eval_accumulation_steps: None
  • torch_empty_cache_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: 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
  • eval_on_start: False
  • eval_use_gather_object: 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.8122 10 1.5176 - - - - -
0.9746 12 - 0.7500 0.7642 0.7680 0.7079 0.7708
1.6244 20 0.6868 - - - - -
1.9492 24 - 0.7657 0.7746 0.7784 0.7323 0.7816
2.4365 30 0.4738 - - - - -
2.9239 36 - 0.7691 0.7780 0.7790 0.7402 0.7796
3.2487 40 0.3934 - - - - -
3.8985 48 - 0.7697 0.7785 0.7809 0.7404 0.7808
  • The bold row denotes the saved checkpoint.

Framework Versions

  • Python: 3.11.9
  • Sentence Transformers: 3.0.1
  • Transformers: 4.44.2
  • PyTorch: 2.4.0+cu121
  • Accelerate: 0.33.0
  • Datasets: 2.21.0
  • 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
109M 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.

Model tree for felipehsilveira/bge-base-financial-matryoshka

Finetuned
(287)
this model

Evaluation results