--- language: - en license: apache-2.0 tags: - sentence-transformers - cross-encoder - reranker - generated_from_trainer - dataset_size:95939 - loss:LambdaLoss base_model: answerdotai/ModernBERT-base pipeline_tag: text-ranking library_name: sentence-transformers metrics: - map - mrr@10 - ndcg@10 model-index: - name: ModernBERT-base trained on GooAQ results: - task: type: cross-encoder-reranking name: Cross Encoder Reranking dataset: name: gooaq dev type: gooaq-dev metrics: - type: map value: 0.7235 name: Map - type: mrr@10 value: 0.722 name: Mrr@10 - type: ndcg@10 value: 0.7664 name: Ndcg@10 - task: type: cross-encoder-reranking name: Cross Encoder Reranking dataset: name: NanoMSMARCO R100 type: NanoMSMARCO_R100 metrics: - type: map value: 0.44 name: Map - type: mrr@10 value: 0.4276 name: Mrr@10 - type: ndcg@10 value: 0.5023 name: Ndcg@10 - task: type: cross-encoder-reranking name: Cross Encoder Reranking dataset: name: NanoNFCorpus R100 type: NanoNFCorpus_R100 metrics: - type: map value: 0.3312 name: Map - type: mrr@10 value: 0.5754 name: Mrr@10 - type: ndcg@10 value: 0.3743 name: Ndcg@10 - task: type: cross-encoder-reranking name: Cross Encoder Reranking dataset: name: NanoNQ R100 type: NanoNQ_R100 metrics: - type: map value: 0.2867 name: Map - type: mrr@10 value: 0.281 name: Mrr@10 - type: ndcg@10 value: 0.3538 name: Ndcg@10 - task: type: cross-encoder-nano-beir name: Cross Encoder Nano BEIR dataset: name: NanoBEIR R100 mean type: NanoBEIR_R100_mean metrics: - type: map value: 0.3526 name: Map - type: mrr@10 value: 0.428 name: Mrr@10 - type: ndcg@10 value: 0.4101 name: Ndcg@10 --- # ModernBERT-base trained on GooAQ This is a [Cross Encoder](https://www.sbert.net/docs/cross_encoder/usage/usage.html) model finetuned from [answerdotai/ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) using the [sentence-transformers](https://www.SBERT.net) library. It computes scores for pairs of texts, which can be used for text reranking and semantic search. ## Model Details ### Model Description - **Model Type:** Cross Encoder - **Base model:** [answerdotai/ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) - **Maximum Sequence Length:** 8192 tokens - **Number of Output Labels:** 1 label - **Supported Modality:** Text - **Language:** en - **License:** apach-2.0 ### Model Sources - **Documentation:** [Sentence Transformers Documentation](https://sbert.net) - **Documentation:** [Cross Encoder Documentation](https://www.sbert.net/docs/cross_encoder/usage/usage.html) - **Repository:** [Sentence Transformers on GitHub](https://github.com/huggingface/sentence-transformers) - **Hugging Face:** [Cross Encoders on Hugging Face](https://huggingface.co/models?library=sentence-transformers&other=cross-encoder) ### Full Model Architecture ``` CrossEncoder( (0): Transformer({'transformer_task': 'sequence-classification', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'logits'}}, 'module_output_name': 'scores', 'architecture': 'ModernBertForSequenceClassification'}) ) ``` ## 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 CrossEncoder # Download from the 🤗 Hub model = CrossEncoder("cross_encoder_model_id") # Get scores for pairs of inputs pairs = [ ['what are the 5 characteristics of a star?', 'Key Concept: Characteristics used to classify stars include color, temperature, size, composition, and brightness.'], ['what are the 5 characteristics of a star?', 'The biggest difference was compression. The most recent Z-STAR has a compression of 90, while the Z-STAR XV comes in at 102. The original Q-STAR Tour had a compression of 75 (this new version, like Gen 2, is 72), and with its performance characteristics, Srixon could have called it Z-STAR Soft.'], ['what are the 5 characteristics of a star?', "While 4-star hotels provide quality services to its patrons, a 5-star luxury accommodation will have impeccable service delivery. You'll often end up paying extra for the amenities like room service and concierge services in a 4-star hotel. But a 5-star hotel will always offer personalised services."], ['what are the 5 characteristics of a star?', 'However, the brightness of a star depends on its composition and how far it is from the planet. Astronomers define star brightness in terms of apparent magnitude — how bright the star appears from Earth — and absolute magnitude — how bright the star appears at a standard distance of 32.6 light-years, or 10 parsecs.'], ['what are the 5 characteristics of a star?', 'A "falling star" or a "shooting star" has nothing at all to do with a star! These amazing streaks of light you can sometimes see in the night sky are caused by tiny bits of dust and rock called meteoroids falling into the Earth\'s atmosphere and burning up. ... Meteors are commonly called falling stars or shooting stars.'], ] scores = model.predict(pairs) print(scores) # [9.4520e-01 1.7401e-04 4.5739e-03 2.9579e-03 1.3631e-05] # Or rank different texts based on similarity to a single text ranks = model.rank( 'what are the 5 characteristics of a star?', [ 'Key Concept: Characteristics used to classify stars include color, temperature, size, composition, and brightness.', 'The biggest difference was compression. The most recent Z-STAR has a compression of 90, while the Z-STAR XV comes in at 102. The original Q-STAR Tour had a compression of 75 (this new version, like Gen 2, is 72), and with its performance characteristics, Srixon could have called it Z-STAR Soft.', "While 4-star hotels provide quality services to its patrons, a 5-star luxury accommodation will have impeccable service delivery. You'll often end up paying extra for the amenities like room service and concierge services in a 4-star hotel. But a 5-star hotel will always offer personalised services.", 'However, the brightness of a star depends on its composition and how far it is from the planet. Astronomers define star brightness in terms of apparent magnitude — how bright the star appears from Earth — and absolute magnitude — how bright the star appears at a standard distance of 32.6 light-years, or 10 parsecs.', 'A "falling star" or a "shooting star" has nothing at all to do with a star! These amazing streaks of light you can sometimes see in the night sky are caused by tiny bits of dust and rock called meteoroids falling into the Earth\'s atmosphere and burning up. ... Meteors are commonly called falling stars or shooting stars.', ] ) # [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...] ``` ## Evaluation ### Metrics #### Cross Encoder Reranking * Dataset: `gooaq-dev` * Evaluated with [CrossEncoderRerankingEvaluator](https://sbert.net/docs/package_reference/cross_encoder/evaluation.html#sentence_transformers.cross_encoder.evaluation.CrossEncoderRerankingEvaluator) with these parameters: ```json { "at_k": 10, "always_rerank_positives": false } ``` | Metric | Value | |:------------|:---------------------| | map | 0.7235 (+0.1924) | | mrr@10 | 0.7220 (+0.1981) | | **ndcg@10** | **0.7664 (+0.1751)** | #### Cross Encoder Reranking * Datasets: `NanoMSMARCO_R100`, `NanoNFCorpus_R100` and `NanoNQ_R100` * Evaluated with [CrossEncoderRerankingEvaluator](https://sbert.net/docs/package_reference/cross_encoder/evaluation.html#sentence_transformers.cross_encoder.evaluation.CrossEncoderRerankingEvaluator) with these parameters: ```json { "at_k": 10, "always_rerank_positives": true } ``` | Metric | NanoMSMARCO_R100 | NanoNFCorpus_R100 | NanoNQ_R100 | |:------------|:---------------------|:---------------------|:---------------------| | map | 0.4400 (-0.0496) | 0.3312 (+0.0702) | 0.2867 (-0.1329) | | mrr@10 | 0.4276 (-0.0499) | 0.5754 (+0.0756) | 0.2810 (-0.1457) | | **ndcg@10** | **0.5023 (-0.0381)** | **0.3743 (+0.0492)** | **0.3538 (-0.1468)** | #### Cross Encoder Nano BEIR * Dataset: `NanoBEIR_R100_mean` * Evaluated with [CrossEncoderNanoBEIREvaluator](https://sbert.net/docs/package_reference/cross_encoder/evaluation.html#sentence_transformers.cross_encoder.evaluation.CrossEncoderNanoBEIREvaluator) with these parameters: ```json { "dataset_names": [ "msmarco", "nfcorpus", "nq" ], "dataset_id": "sentence-transformers/NanoBEIR-en", "rerank_k": 100, "at_k": 10, "always_rerank_positives": true } ``` | Metric | Value | |:------------|:---------------------| | map | 0.3526 (-0.0374) | | mrr@10 | 0.4280 (-0.0400) | | **ndcg@10** | **0.4101 (-0.0452)** | ## Training Details ### Training Dataset #### Unnamed Dataset * Size: 95,939 training samples * Columns: question, answer, and labels * Approximate statistics based on the first 100 samples: | | question | answer | labels | |:---------|:----------------------------------------------------------------------------------|:-----------------------------------|:-----------------------------------| | type | string | list | list | | modality | text | | | | details | | | | * Samples: | question | answer | labels | |:-----------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------| | what are the 5 characteristics of a star? | ['Key Concept: Characteristics used to classify stars include color, temperature, size, composition, and brightness.', 'The biggest difference was compression. The most recent Z-STAR has a compression of 90, while the Z-STAR XV comes in at 102. The original Q-STAR Tour had a compression of 75 (this new version, like Gen 2, is 72), and with its performance characteristics, Srixon could have called it Z-STAR Soft.', "While 4-star hotels provide quality services to its patrons, a 5-star luxury accommodation will have impeccable service delivery. You'll often end up paying extra for the amenities like room service and concierge services in a 4-star hotel. But a 5-star hotel will always offer personalised services.", 'However, the brightness of a star depends on its composition and how far it is from the planet. Astronomers define star brightness in terms of apparent magnitude — how bright the star appears from Earth — and absolute magnitude — how bright the star appears at a standard distance of 32.6 light-years, or 10 parsecs.', 'A "falling star" or a "shooting star" has nothing at all to do with a star! These amazing streaks of light you can sometimes see in the night sky are caused by tiny bits of dust and rock called meteoroids falling into the Earth\'s atmosphere and burning up. ... Meteors are commonly called falling stars or shooting stars.', ...] | [1, 0, 0, 0, 0, ...] | | are copic markers alcohol ink? | ['Copic Ink is alcohol-based and flammable. Keep away from direct sunlight and extreme temperatures.', 'Copic Sketch markers are alcohol-based, refillable dye markers with replaceable nibs for full versatility. ... Great for comic drawing, scrapbooking, fine art, illustration, product design, architecture, and more, this marker is an essential for artists, designers and crafters. Details: Available in multiple colors.', 'Alcohol based markers differ from water based markers in that the color (dye or pigment) is suspended in an alcohol or another fast evaporating solvent, rather than water or glycerin. This means that alcohol based markers are not water soluble, but may be alcohol soluble.', 'Gel ink pens are primarily made to be used on paper substrates and not on plastics, glass, or fabrics. While some gel ink versions can adhere to other surfaces, this greatly affects the overall "performance" of the ink. (i.e. the gel inks might be easily washed out or scratched off the surface.)', 'Permanent markers are made from pigment and not dyes. Dyes are water soluble but pigment are not soluble in water. If you clean the markers with a no polar solvent like alcohol or acetone the markers are not truly permanent on certain materials. ... The purpose is to determine if permanent marker are truly permanent.', ...] | [1, 0, 0, 0, 0, ...] | | what is the difference between appellate term and appellate division? | ['Appellate terms An appellate term is an intermediate appellate court that hears appeals from the inferior courts within their designated counties or judicial districts, and are intended to ease the workload on the Appellate Division and provide a less expensive forum closer to the people.', 'As verbs the difference between request and appeal is that request is to express the need or desire for while appeal is (obsolete) to accuse (someone of something).', 'As nouns the difference between fraction and division is that fraction is a part of a whole, especially a comparatively small part while division is (uncountable) the act or process of dividing anything.', 'As nouns the difference between divide and division is that divide is a thing that divides while division is (uncountable) the act or process of dividing anything.', 'definition and meaning , “A feature is a distinctive characteristic of a good or service that sets it apart from similar items. Customers, however, want a benefit..” The same source also defines objective: “A specific result that a person or system aims to achieve within a time frame and with available resources.', ...] | [1, 0, 0, 0, 0, ...] | * Loss: [LambdaLoss](https://sbert.net/docs/package_reference/cross_encoder/losses.html#lambdaloss) with these parameters: ```json { "weighting_scheme": "sentence_transformers.cross_encoder.losses.lambda_loss.NDCGLoss2PPScheme", "k": null, "sigma": 1.0, "eps": 1e-10, "reduction_log": "binary", "activation_fn": "torch.nn.modules.linear.Identity", "mini_batch_size": 8 } ``` ### Training Hyperparameters #### Non-Default Hyperparameters - `per_device_train_batch_size`: 16 - `num_train_epochs`: 1 - `learning_rate`: 2e-05 - `warmup_steps`: 0.1 - `gradient_accumulation_steps`: 4 - `fp16`: True - `per_device_eval_batch_size`: 16 - `load_best_model_at_end`: True - `seed`: 12 - `dataloader_num_workers`: 2 - `dataloader_persistent_workers`: True #### All Hyperparameters
Click to expand - `per_device_train_batch_size`: 16 - `num_train_epochs`: 1 - `max_steps`: -1 - `learning_rate`: 2e-05 - `lr_scheduler_type`: linear - `lr_scheduler_kwargs`: None - `warmup_steps`: 0.1 - `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`: 4 - `average_tokens_across_devices`: True - `max_grad_norm`: 1.0 - `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`: None - `trackio_bucket_id`: None - `trackio_static_space_id`: None - `per_device_eval_batch_size`: 16 - `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`: True - `ignore_data_skip`: False - `restore_callback_states_from_checkpoint`: False - `full_determinism`: False - `seed`: 12 - `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`: 2 - `dataloader_pin_memory`: True - `dataloader_persistent_workers`: True - `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_static_graph`: None - `ddp_backend`: None - `ddp_timeout`: 1800 - `fsdp`: None - `fsdp_config`: None - `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`: proportional - `router_mapping`: {} - `learning_rate_mapping`: {}
### Training Logs | Epoch | Step | Training Loss | gooaq-dev_ndcg@10 | NanoMSMARCO_R100_ndcg@10 | NanoNFCorpus_R100_ndcg@10 | NanoNQ_R100_ndcg@10 | NanoBEIR_R100_mean_ndcg@10 | |:-------:|:--------:|:-------------:|:--------------------:|:------------------------:|:-------------------------:|:--------------------:|:--------------------------:| | -1 | -1 | - | 0.1341 (-0.4572) | 0.0124 (-0.5280) | 0.2983 (-0.0268) | 0.0067 (-0.4940) | 0.1058 (-0.3496) | | 0.0007 | 1 | 2.1925 | - | - | - | - | - | | 0.0667 | 100 | 2.0361 | - | - | - | - | - | | 0.1334 | 200 | 1.0558 | - | - | - | - | - | | 0.1668 | 250 | - | 0.7213 (+0.1300) | 0.4535 (-0.0869) | 0.3667 (+0.0417) | 0.3618 (-0.1389) | 0.3940 (-0.0614) | | 0.2001 | 300 | 0.6286 | - | - | - | - | - | | 0.2668 | 400 | 0.5332 | - | - | - | - | - | | 0.3335 | 500 | 0.5208 | 0.7468 (+0.1556) | 0.4826 (-0.0578) | 0.3783 (+0.0533) | 0.4192 (-0.0815) | 0.4267 (-0.0287) | | 0.4002 | 600 | 0.4892 | - | - | - | - | - | | 0.4669 | 700 | 0.4780 | - | - | - | - | - | | 0.5003 | 750 | - | 0.7538 (+0.1626) | 0.5041 (-0.0363) | 0.4069 (+0.0819) | 0.3785 (-0.1221) | 0.4299 (-0.0255) | | 0.5336 | 800 | 0.4448 | - | - | - | - | - | | 0.6003 | 900 | 0.4455 | - | - | - | - | - | | 0.6670 | 1000 | 0.4427 | 0.7611 (+0.1698) | 0.4584 (-0.0820) | 0.3731 (+0.0481) | 0.3098 (-0.1908) | 0.3804 (-0.0749) | | 0.7337 | 1100 | 0.4307 | - | - | - | - | - | | 0.8004 | 1200 | 0.4269 | - | - | - | - | - | | 0.8338 | 1250 | - | 0.7640 (+0.1727) | 0.4978 (-0.0426) | 0.3887 (+0.0636) | 0.3634 (-0.1373) | 0.4166 (-0.0388) | | 0.8671 | 1300 | 0.4119 | - | - | - | - | - | | 0.9338 | 1400 | 0.4104 | - | - | - | - | - | | **1.0** | **1500** | **0.4018** | **0.7664 (+0.1751)** | **0.5023 (-0.0381)** | **0.3743 (+0.0492)** | **0.3538 (-0.1468)** | **0.4101 (-0.0452)** | | -1 | -1 | - | 0.7664 (+0.1751) | 0.5023 (-0.0381) | 0.3743 (+0.0492) | 0.3538 (-0.1468) | 0.4101 (-0.0452) | * The bold row denotes the saved checkpoint. ### Training Time - **Training**: 2.2 hours ### Framework Versions - Python: 3.12.13 - Sentence Transformers: 5.6.0 - Transformers: 5.13.1 - PyTorch: 2.11.0+cu128 - Accelerate: 1.14.0 - Datasets: 4.0.0 - Tokenizers: 0.22.2 ## Additional Resources - [Training and Finetuning Reranker Models with Sentence Transformers](https://huggingface.co/blog/train-reranker): the end-to-end guide for training or finetuning Cross Encoder (reranker) models. - [Multimodal Embedding & Reranker Models with Sentence Transformers](https://huggingface.co/blog/multimodal-sentence-transformers): use text, image, audio, and video reranker models through the same API. - [Training and Finetuning Multimodal Embedding & Reranker Models with Sentence Transformers](https://huggingface.co/blog/train-multimodal-sentence-transformers): training multimodal Cross Encoders. ## 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", } ``` #### LambdaLoss ```bibtex @inproceedings{wang2018lambdaloss, title={The LambdaLoss Framework for Ranking Metric Optimization}, author={Wang, Xuanhui and Li, Cheng and Golbandi, Nadav and Bendersky, Michael and Najork, Marc}, booktitle={Proceedings of the 27th ACM international conference on information and knowledge management}, pages={1313--1322}, year={2018} } ```