MOSAIC — Türkçe Finans Embedding Modeli (multilingual-e5-small fine-tuned)

MOSAIC tez projesinin Faz 4 çıktısı. intfloat/multilingual-e5-small baz modeli, 1.432 Türkçe finans QA çiftiyle fine-tune edilmiştir.

Proje: "Türkçe Finans İçin Federe RAG Tabanlı Düşük Kaynaklı Ortamlarda Çalışan Adaptif Chatbot Mimarisi"


Hızlı Başlangıç

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("tahatoy/mosaic-turkembed-finetuned")

query = "Konut kredisi faiz oranı nedir?"
passages = ["Bankamız konut kredilerinde...", "Diğer bilgi..."]
embeddings = model.encode([query] + passages)

SentenceTransformer based on intfloat/multilingual-e5-small

This is a sentence-transformers model finetuned from intfloat/multilingual-e5-small. 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
  • Base model: intfloat/multilingual-e5-small
  • Maximum Sequence Length: 256 tokens
  • Output Dimensionality: 384 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 256, 'do_lower_case': False, 'architecture': 'BertModel'})
  (1): Pooling({'word_embedding_dimension': 384, '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})
  (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("tahatoy/mosaic-turkembed-finetuned")
# Run inference
sentences = [
    "1970'li yıllarda finansal yönetimde hangi gelişmeler yaşanmıştır?",
    "1970'li yıllarda bu eğilim daha da artmıştır. Bu yılların diğer önemli bir özelliği de işletme değerini ve hissedarların - ortakların - servetini maksimum kılmada riskle düzeltilmiş modellerin geliştirilmiş olmasıdır.",
    'Kredi Kartlarının Doğru Kullanılması ve Finansal Sorumluluk\n\nKredi kartlarının doğru kullanımı ve finansal sorumlulukla ele alınması önemlidir.\nKredi kartlarının yanlış kullanımı, finansal sorunlara yol açabilir.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[ 1.0000,  0.4738,  0.0634],
#         [ 0.4738,  1.0000, -0.0332],
#         [ 0.0634, -0.0332,  1.0000]])

Evaluation

Metrics

Information Retrieval

Metric Value
cosine_accuracy@1 0.8547
cosine_accuracy@3 0.8939
cosine_accuracy@5 0.933
cosine_accuracy@10 0.9665
cosine_precision@1 0.8547
cosine_precision@3 0.298
cosine_precision@5 0.1866
cosine_precision@10 0.0966
cosine_recall@1 0.8547
cosine_recall@3 0.8939
cosine_recall@5 0.933
cosine_recall@10 0.9665
cosine_ndcg@10 0.903
cosine_mrr@10 0.8835
cosine_map@100 0.8854

Training Details

Training Dataset

Unnamed Dataset

  • Size: 1,432 training samples
  • Columns: sentence_0 and sentence_1
  • Approximate statistics based on the first 1000 samples:
    sentence_0 sentence_1
    type string string
    details
    • min: 5 tokens
    • mean: 15.06 tokens
    • max: 256 tokens
    • min: 23 tokens
    • mean: 72.26 tokens
    • max: 256 tokens
  • Samples:
    sentence_0 sentence_1
    Kullanıcının yatırım fonu hakkındaki sorusunu yanıtla. Yatırım fonları, içerdikleri varlıklara ve yatırım stratejilerine göre çeşitlenir. Başlıca türleri şunlardır:

    - Hisse Senedi Fonları: Portföyünün en az %80'i hisse senetlerinden oluşur.
    - Borçlanma Araçları Fonları: Genellikle düşük riskli ve sabit getirili menkul kıymetlere (tahvil, bono) yatırım yapar.
    - Karma Fonlar: Hisse senedi, tahvil gibi farklı araçları bir arada bulundurur.
    - Para Piyasası Fonları: Kısa vadeli ve likiditesi yüksek araçlardan oluşur.
    - Katılım Fonları: Faizsiz finans ilkelerine uygun varlıklara (sukuk, katılım hisseleri) yatırım yapar.
    - Borsa Yatırım Fonları (ETF): Belirli bir borsa endeksini takip eder ve hisse senedi gibi anlık alınıp satılabilir.
    - Serbest Fonlar: Yüksek risk alabilen nitelikli yatırımcılara yönelik esnek fonlardır.
    92 gün vadeli, 500.000 nominal değerli bir hazine bonosu için yatırımcının beklediği getiri oranı 9,614 ise bu hazine bonosu hangi fiyattan satın alınmalıdır? Hazine bonosunun üzerinde yazılı değer nominal değeri gösterir ve bu değer bononun vade tarihindeki (gelecekteki) değeridir. Dolayısıyla nominal değer bononun gelecek değeridir. Soruda gelecekteki değeri belli olan bu bononun satın alma günündeki, diğer bir ifade ile bugunku değeri sorulmaktadır. Hazine Bonosunun Nominal Değeri (F) - 500.000, Vade (n) - 92 gün - 92/365 yıl, İskonto Oranı (i) - 9,614. Satış Fiyatı (P) - ? 500.000 / (1 + 0,09614*(92/365)) = 482.958. Yatırımcı 92 gün vadeli, 500.000 nominal değerli olan bu hazine bonosunu satış tarihinde 482.958'den satın alacaktır. Vade dolduğunda ise hazine bonosu iade edilerek 500.000 (Anapara) geri alınacaktır. Alış fiyatı ile nominal değer arasındaki fark kadar faiz geliri elde edilmiş olacaktır. Aradaki farkın 92 günlük getiriyi gösterdiğini unutmamak gerekir. Elde edilen faiz - 500.000 - 482.958 - 17.042. Faiz Oranı - 17.042 / 482.958 = 0,035 yada 3,53. 92 günlük faizin yıllık basit faizle karşılığı: 0,035 * (360/92) = 0,138 veya 1...
    Bütçe nasıl oluşturulur? Bütçe oluşturmak için ilk adım hedef belirlemektir. Kısa, orta ve uzun vadeli finansal hedeflerinizi belirleyin. Gelirlerinizi ve giderlerinizi listeleyin. Giderlerinizi zorunlu ve isteğe bağlı olarak ayırın. Gelirinizden zorunlu giderleri çıkarın, kalan kısmı harcama ve birikim için paylaştırın. 50/30/20 ya da 70/20/10 gibi oranlarla planlama yapabilirsiniz. Her ay giderlerinizi gözden geçirerek bütçenizi güncelleyin.
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false,
        "directions": [
            "query_to_doc"
        ],
        "partition_mode": "joint",
        "hardness_mode": null,
        "hardness_strength": 0.0
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 32
  • fp16: True
  • eval_strategy: steps
  • per_device_eval_batch_size: 32
  • multi_dataset_batch_sampler: round_robin

All Hyperparameters

Click to expand
  • per_device_train_batch_size: 32
  • num_train_epochs: 3
  • max_steps: -1
  • learning_rate: 5e-05
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_steps: 0
  • optim: adamw_torch_fused
  • optim_args: None
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • optim_target_modules: None
  • gradient_accumulation_steps: 1
  • average_tokens_across_devices: True
  • max_grad_norm: 1
  • label_smoothing_factor: 0.0
  • bf16: False
  • fp16: True
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • use_liger_kernel: False
  • liger_kernel_config: None
  • use_cache: False
  • neftune_noise_alpha: None
  • torch_empty_cache_steps: None
  • auto_find_batch_size: False
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • include_num_input_tokens_seen: no
  • log_level: passive
  • log_level_replica: warning
  • disable_tqdm: False
  • project: huggingface
  • trackio_space_id: trackio
  • eval_strategy: steps
  • per_device_eval_batch_size: 32
  • prediction_loss_only: True
  • eval_on_start: False
  • eval_do_concat_batches: True
  • eval_use_gather_object: False
  • eval_accumulation_steps: None
  • include_for_metrics: []
  • batch_eval_metrics: False
  • save_only_model: False
  • save_on_each_node: False
  • enable_jit_checkpoint: False
  • push_to_hub: False
  • hub_private_repo: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_always_push: False
  • hub_revision: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • restore_callback_states_from_checkpoint: False
  • full_determinism: False
  • seed: 42
  • data_seed: None
  • use_cpu: False
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • dataloader_prefetch_factor: None
  • remove_unused_columns: True
  • label_names: None
  • train_sampling_strategy: random
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • ddp_backend: None
  • ddp_timeout: 1800
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • deepspeed: None
  • debug: []
  • skip_memory_metrics: True
  • do_predict: False
  • resume_from_checkpoint: None
  • warmup_ratio: None
  • local_rank: -1
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: round_robin
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step finance_val_cosine_ndcg@10
-1 -1 0.8615
1.0 45 0.8820
2.0 90 0.9030
3.0 135 0.9030

Framework Versions

  • Python: 3.12.3
  • Sentence Transformers: 5.3.0
  • Transformers: 5.4.0
  • PyTorch: 2.11.0+cu130
  • Accelerate: 1.13.0
  • Datasets: 4.8.4
  • Tokenizers: 0.22.2

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

MultipleNegativesRankingLoss

@misc{oord2019representationlearningcontrastivepredictive,
      title={Representation Learning with Contrastive Predictive Coding},
      author={Aaron van den Oord and Yazhe Li and Oriol Vinyals},
      year={2019},
      eprint={1807.03748},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/1807.03748},
}

Proje Bağlamı

Bu model MOSAIC federe öğrenme mimarisinin üç katmanlı RAG'ında kullanılmaktadır:

ChromaDB Koleksiyonu Belge Sayısı Port
finance_branch1 636 chunk 8001
finance_branch2 988 chunk 8002
finance_global 1.623 chunk 8003

Mimari: cross-encoder/ms-marco-MiniLM-L-6-v2 reranker + hibrit arama (dense + BM25)

Kaynak kod: github.com/tahatoy/Mosaic

Downloads last month
71
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Toxotes/mosaic-turkembed-finetuned

Finetuned
(195)
this model

Papers for Toxotes/mosaic-turkembed-finetuned

Evaluation results