CoolFace
Modelpublic

Yuki20/bge-base-financial-matryoshka

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes108downloads
Model Card

BGE base Financial Matryoshka

This is a sentence-transformers model finetuned from BAAI/bge-base-en-v1.5 on the json dataset. 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 <!-- at revision a5beb1e3e68b9ab74eb54cfd186867f64f240e1a -->
  • —Maximum Sequence Length: 512 tokens
  • —Output Dimensionality: 768 tokens
  • —Similarity Function: Cosine Similarity
  • —Training Dataset:
  • —json
  • —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:

bash
pip install -U sentence-transformers

Then you can load this model and run inference.

python
from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("Yuki20/bge-base-financial-matryoshka")
# Run inference
sentences = [
    "As of December 31, 2023, the fair value and amortized cost, net of valuation allowance, for the Republic of Korea's government securities were $1,784 million and $1,723 million respectively.",
    "What was the fair value and amortized cost, net of valuation allowance, for the Republic of Korea's government securities as of December 31, 2023?",
    'How does the company advance autonomous vehicle technology?',
]
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]

<!--

Direct Usage (Transformers)

<details><summary>Click to see the direct usage in Transformers</summary>

</details> -->

<!--

Downstream Usage (Sentence Transformers)

You can finetune this model on your own dataset.

<details><summary>Click to expand</summary>

</details> -->

<!--

Out-of-Scope Use

List how the model may foreseeably be misused and address what users ought not to do with the model. -->

Evaluation

Metrics

Information Retrieval
MetricValue
cosine_accuracy@10.6871
cosine_accuracy@30.8286
cosine_accuracy@50.8571
cosine_accuracy@100.9071
cosine_precision@10.6871
cosine_precision@30.2762
cosine_precision@50.1714
cosine_precision@100.0907
cosine_recall@10.6871
cosine_recall@30.8286
cosine_recall@50.8571
cosine_recall@100.9071
cosine_ndcg@100.7982
cosine_mrr@100.7633
cosine_map@1000.767
Information Retrieval
MetricValue
cosine_accuracy@10.69
cosine_accuracy@30.8171
cosine_accuracy@50.8543
cosine_accuracy@100.9043
cosine_precision@10.69
cosine_precision@30.2724
cosine_precision@50.1709
cosine_precision@100.0904
cosine_recall@10.69
cosine_recall@30.8171
cosine_recall@50.8543
cosine_recall@100.9043
cosine_ndcg@100.7977
cosine_mrr@100.7636
cosine_map@1000.7675
Information Retrieval
MetricValue
cosine_accuracy@10.6857
cosine_accuracy@30.8143
cosine_accuracy@50.8514
cosine_accuracy@100.8957
cosine_precision@10.6857
cosine_precision@30.2714
cosine_precision@50.1703
cosine_precision@100.0896
cosine_recall@10.6857
cosine_recall@30.8143
cosine_recall@50.8514
cosine_recall@100.8957
cosine_ndcg@100.7916
cosine_mrr@100.7582
cosine_map@1000.7624
Information Retrieval
MetricValue
cosine_accuracy@10.6757
cosine_accuracy@30.8
cosine_accuracy@50.8414
cosine_accuracy@100.8886
cosine_precision@10.6757
cosine_precision@30.2667
cosine_precision@50.1683
cosine_precision@100.0889
cosine_recall@10.6757
cosine_recall@30.8
cosine_recall@50.8414
cosine_recall@100.8886
cosine_ndcg@100.782
cosine_mrr@100.7478
cosine_map@1000.7524
Information Retrieval
MetricValue
cosine_accuracy@10.6414
cosine_accuracy@30.7657
cosine_accuracy@50.7957
cosine_accuracy@100.8586
cosine_precision@10.6414
cosine_precision@30.2552
cosine_precision@50.1591
cosine_precision@100.0859
cosine_recall@10.6414
cosine_recall@30.7657
cosine_recall@50.7957
cosine_recall@100.8586
cosine_ndcg@100.748
cosine_mrr@100.7129
cosine_map@1000.7185

<!--

Bias, Risks and Limitations

What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model. -->

<!--

Recommendations

What are recommendations with respect to the foreseeable issues? For example, filtering explicit content. -->

Training Details

Training Dataset

json
  • —Dataset: json
  • —Size: 6,300 training samples
  • —Columns: <code>positive</code> and <code>anchor</code>
  • —Approximate statistics based on the first 1000 samples: | | positive | anchor | |:--------|:-----------------------------------------------------------------------------------|:----------------------------------------------------------------------------------| | type | string | string | | details | <ul><li>min: 6 tokens</li><li>mean: 45.58 tokens</li><li>max: 289 tokens</li></ul> | <ul><li>min: 9 tokens</li><li>mean: 20.34 tokens</li><li>max: 41 tokens</li></ul> |
  • —Samples: | positive | anchor | |:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------| | <code>Billed business grew significantly over the past two years, increasing from $228.2 billion in 2021 to $281.6 billion in 2022, and reaching $329.5 billion in 2023.</code> | <code>How did billed business figures change from 2021 to 2023 as stated in the text?</code> | | <code>The Federal Reserve may limit an FHC’s ability to conduct permissible activities if it or any of its depository institution subsidiaries fails to maintain a well-capitalized and well-managed status. If non-compliant after 180 days, the Federal Reserve may require the FHC to divest its depository institution subsidiaries or cease all FHC Activities.</code> | <code>What happens if an FHC does not meet the Federal Reserve's eligibility requirements?</code> | | <code>For the fiscal year ending January 28, 2023, the basic net income per share was calculated to be $7.24, based on the net income and weighted average number of shares outstanding.</code> | <code>What was the basic net income per share in the fiscal year ending January 28, 2023?</code> |
  • —Loss: <code>MatryoshkaLoss</code> with these parameters:
json
  {
      "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
  • —fp16: True
  • —tf32: False
  • —load_best_model_at_end: True
  • —optim: adamwtorchfused
  • —batch_sampler: no_duplicates
All Hyperparameters

<details><summary>Click to expand</summary>

  • —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
  • —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: {'minnumparams': 0, 'xla': False, 'xlafsdpv2': False, 'xlafsdpgrad_ckpt': False}
  • —fsdp_transformer_layer_cls_to_wrap: None
  • —accelerator_config: {'splitbatches': False, 'dispatchbatches': None, 'evenbatches': True, 'useseedablesampler': True, 'nonblocking': False, 'gradientaccumulationkwargs': None}
  • —deepspeed: None
  • —label_smoothing_factor: 0.0
  • —optim: adamwtorchfused
  • —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

</details>

Training Logs

EpochStepTraining Lossdim_768_cosine_map@100dim_512_cosine_map@100dim_256_cosine_map@100dim_128_cosine_map@100dim_64_cosine_map@100
0.8122101.588-----
0.974612-0.75930.75500.74720.73470.6970
1.6244200.7059-----
1.949224-0.76230.76520.75590.75170.7127
2.4365300.4826-----
2.923936-0.76750.76830.76030.75120.7166
3.2487400.3992-----
3.898548-0.7670.76750.76240.75240.7185
  • —The bold row denotes the saved checkpoint.

Framework Versions

  • —Python: 3.10.12
  • —Sentence Transformers: 3.2.0
  • —Transformers: 4.41.2
  • —PyTorch: 2.1.2+cu121
  • —Accelerate: 0.34.2
  • —Datasets: 2.19.1
  • —Tokenizers: 0.19.1

Citation

BibTeX

Sentence Transformers
bibtex
@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
bibtex
@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
bibtex
@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}
}

<!--

Glossary

Clearly define terms in order to be accessible across audiences. -->

<!--

Model Card Authors

Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction. -->

<!--

Model Card Contact

Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors. -->