Instructions to use Waqf-AI/arabic-splade-efficient with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use Waqf-AI/arabic-splade-efficient with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("Waqf-AI/arabic-splade-efficient") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
metadata
tags:
- sentence-transformers
- sparse-encoder
- sparse
- splade
- generated_from_trainer
- dataset_size:104550
- loss:SpladeLoss
- loss:SparseMultipleNegativesRankingLoss
- loss:FlopsLoss
base_model: distilbert/distilbert-base-multilingual-cased
widget:
- text: >-
يُعتبر التأثير الأوروبي على الثقافة اليابانية في القرن التاسع عشر أمرًا
هامًا في فهم تاريخ البلاد.
- text: |2-
يعد النقد الأدبي أداة أساسية في فهم التاريخ الثقافي، حيث يعكس التغيرات الاجتماعية والثقافية التي حدثت عبر العصور.
- text: >-
لا أعتقد أن هناك أي تأثير لصالح المصممة الداخلية الإيطالية إيلينا فرونتزي
على هذا النوع من التصاميم.
- text: كيف يؤثر النقد الأدبي على التفاعل الاجتماعي؟
- text: |2-
يعد النقد الأدبي أداة أساسية في فهم التاريخ الثقافي، حيث يساعد على تحليل وتفسير الأعمال الفنية والثقافية من خلال منظور تاريخي.
datasets:
- oddadmix/arabic-triplets-large
pipeline_tag: feature-extraction
library_name: sentence-transformers
SPLADE Sparse Encoder
This is a SPLADE Sparse Encoder model finetuned from distilbert/distilbert-base-multilingual-cased on the arabic-triplets-large dataset using the sentence-transformers library. It maps sentences & paragraphs to a 119547-dimensional sparse vector space and can be used for semantic search and sparse retrieval.
Model Details
Model Description
- Model Type: SPLADE Sparse Encoder
- Base model: distilbert/distilbert-base-multilingual-cased
- Maximum Sequence Length: 512 tokens
- Output Dimensionality: 119547 dimensions
- Similarity Function: Dot Product
- Supported Modality: Text
- Training Dataset:
Model Sources
- Documentation: Sentence Transformers Documentation
- Documentation: Sparse Encoder Documentation
- Repository: Sentence Transformers on GitHub
- Hugging Face: Sparse Encoders on Hugging Face
Full Model Architecture
SparseEncoder(
(0): Transformer({'transformer_task': 'fill-mask', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'logits'}}, 'module_output_name': 'token_embeddings', 'architecture': 'DistilBertForMaskedLM'})
(1): SpladePooling({'pooling_strategy': 'max', 'activation_function': 'relu', 'embedding_dimension': 119547})
)
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 SparseEncoder
# Download from the 🤗 Hub
model = SparseEncoder("sparse_encoder_model_id")
# Run inference
sentences = [
'ما هي أهمية النقد الأدبي في فهم التاريخ الثقافي؟',
'\n\n يعد النقد الأدبي أداة أساسية في فهم التاريخ الثقافي، حيث يساعد على تحليل وتفسير الأعمال الفنية والثقافية من خلال منظور تاريخي.',
'تُعتبر اللغة العربية لغة قديمة ومتنوعة، وتمثل جزءًا هامًا من تراث البشرية.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 119547]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[38.0133, 42.8860, 6.6607],
# [42.8860, 93.9162, 12.8581],
# [ 6.6607, 12.8581, 96.7075]])
Training Details
Training Dataset
arabic-triplets-large
- Dataset: arabic-triplets-large at fa99ede
- Size: 104,550 training samples
- Columns:
anchor,positive, andnegative - Approximate statistics based on the first 100 samples:
anchor positive negative type string string string modality text text text details - min: 12 tokens
- mean: 18.6 tokens
- max: 33 tokens
- min: 26 tokens
- mean: 57.26 tokens
- max: 142 tokens
- min: 18 tokens
- mean: 47.38 tokens
- max: 120 tokens
- Samples:
anchor positive negative ما هي أهمية التلال والمناطق الجبلية في البيئة؟
تعتبر التلال والمناطق الجبلية من أهم عناصر البيئة التي تؤثر بشكل كبير على توازن النظام الإيكولوجي.يعتبر النشاط السياسي في البلدان الصغيرة من الأمور التي تتطلب إدارة شاملة ومتكاملة.كيف تؤثر التلال على الرياح والهطول المطر؟
يؤثر التلال على الرياح والهطول المطر من خلال تأثيرهم على توزيع الضغط الجوي، مما يؤدي إلى تغييرات في اتجاه وسرعة الرياح وتواتر الهطول.إنّ الأنشطة الزراعية في المناطق الجبلية تعتبر من أهمّ العوامل التي تساهم في تحسين جودة الحياة في هذه المناطق، ولكنها لا تؤثر بشكل مباشر على الرياح والهطول المطر.ما هي أنواع التلال المختلفة؟ (جبال، هضاب، منحدرات)
هناك ثلاثة أنواع رئيسية للتلاءم هي الجبال، الهضاب، والمنحدرات.الإدارة البيئية تعتبر من الأنشطة التي لها تأثير كبير على البيئة. - Loss:
SpladeLosswith these parameters:{ "loss": "SparseMultipleNegativesRankingLoss(scale=1.0, similarity_fct='dot_score', gather_across_devices=False, directions=('query_to_doc',), partition_mode='joint', hardness_mode=None, hardness_strength=0.0)", "document_regularizer_weight": 3e-05, "query_regularizer_weight": 5e-05 }
Training Hyperparameters
Non-Default Hyperparameters
per_device_train_batch_size: 16num_train_epochs: 1learning_rate: 2e-05gradient_accumulation_steps: 4batch_sampler: no_duplicates
All Hyperparameters
Click to expand
per_device_train_batch_size: 16num_train_epochs: 1max_steps: -1learning_rate: 2e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0optim: adamw_torch_fusedoptim_args: Noneweight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 4average_tokens_across_devices: Truemax_grad_norm: 1.0label_smoothing_factor: 0.0bf16: Falsefp16: Falsebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Nonetorch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneuse_liger_kernel: Falseliger_kernel_config: Noneuse_cache: Falseneftune_noise_alpha: Nonetorch_empty_cache_steps: Noneauto_find_batch_size: Falselog_on_each_node: Truelogging_nan_inf_filter: Trueinclude_num_input_tokens_seen: nolog_level: passivelog_level_replica: warningdisable_tqdm: Falseproject: huggingfacetrackio_space_id: trackioper_device_eval_batch_size: 8prediction_loss_only: Trueeval_on_start: Falseeval_do_concat_batches: Trueeval_use_gather_object: Falseeval_accumulation_steps: Noneinclude_for_metrics: []batch_eval_metrics: Falsesave_only_model: Falsesave_on_each_node: Falseenable_jit_checkpoint: Falsepush_to_hub: Falsehub_private_repo: Nonehub_model_id: Nonehub_strategy: every_savehub_always_push: Falsehub_revision: Noneload_best_model_at_end: Falseignore_data_skip: Falserestore_callback_states_from_checkpoint: Falsefull_determinism: Falseseed: 42data_seed: Noneuse_cpu: Falseaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedataloader_drop_last: Falsedataloader_num_workers: 0dataloader_pin_memory: Truedataloader_persistent_workers: Falsedataloader_prefetch_factor: Noneremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_backend: Noneddp_timeout: 1800fsdp: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}deepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: Nonelocal_rank: -1prompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}
Training Logs
| Epoch | Step | Training Loss |
|---|---|---|
| 0.3060 | 500 | 7.9967 |
| 0.6121 | 1000 | 0.0165 |
| 0.9181 | 1500 | 0.0108 |
Training Time
- Training: 25.0 minutes
Framework Versions
- Python: 3.12.3
- Sentence Transformers: 5.5.1
- Transformers: 5.5.0
- PyTorch: 2.12.0+cu130
- Accelerate: 1.14.0
- Datasets: 4.3.0
- Tokenizers: 0.22.2
Additional Resources
- Training and Finetuning Sparse Embedding Models with Sentence Transformers: the end-to-end guide for training or finetuning SPLADE and other sparse encoder models.
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",
}
SpladeLoss
@misc{formal2022distillationhardnegativesampling,
title={From Distillation to Hard Negative Sampling: Making Sparse Neural IR Models More Effective},
author={Thibault Formal and Carlos Lassance and Benjamin Piwowarski and Stéphane Clinchant},
year={2022},
eprint={2205.04733},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2205.04733},
}
SparseMultipleNegativesRankingLoss
@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},
}
FlopsLoss
@article{paria2020minimizing,
title={Minimizing flops to learn efficient sparse representations},
author={Paria, Biswajit and Yeh, Chih-Kuan and Yen, Ian EH and Xu, Ning and Ravikumar, Pradeep and P{'o}czos, Barnab{'a}s},
journal={arXiv preprint arXiv:2004.05665},
year={2020}
}