paulomouraj Paulo de Moura ameliechatelain NohTow raphaelsty commited on
Commit
b7f8a04
·
0 Parent(s):

Initial commit

Browse files

Co-authored-by: Paulo de Moura <Paulo de Moura@users.noreply.huggingface.co>
Co-authored-by: ameliechatelain <ameliechatelain@users.noreply.huggingface.co>
Co-authored-by: NohTow <NohTow@users.noreply.huggingface.co>
Co-authored-by: raphaelsty <raphaelsty@users.noreply.huggingface.co>

.gitattributes ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
1_Pooling/config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "embedding_dimension": 768,
3
+ "pooling_mode": "cls",
4
+ "include_prompt": true
5
+ }
README.md ADDED
@@ -0,0 +1,319 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ tags:
3
+ - sentence-transformers
4
+ - sentence-similarity
5
+ - feature-extraction
6
+ - dense
7
+ - multilingual
8
+ - code search
9
+ pipeline_tag: sentence-similarity
10
+ library_name: sentence-transformers
11
+ license: apache-2.0
12
+ language:
13
+ - en
14
+ - fr
15
+ - de
16
+ - it
17
+ - es
18
+ - pt
19
+ - sv
20
+ - "no"
21
+ - ar
22
+ - code
23
+ base_model:
24
+ - lightonai/mDenseOn-unsupervised
25
+ base_model_relation: finetune
26
+ ---
27
+
28
+ <div align="center">
29
+ <img src="https://cdn-uploads.huggingface.co/production/uploads/609bbe2f4932693ca2009d6a/D2x1Tlj0fMgn2Y9IwHlUx.png" alt="LightOn" width="512">
30
+
31
+ [![Website](https://img.shields.io/badge/LightOn-Website-blue?logo=google-chrome)](https://lighton.ai)
32
+ [![LinkedIn](https://img.shields.io/badge/LightOn-LinkedIn-0A66C2?logo=linkedin)](https://www.linkedin.com/company/lighton/)
33
+ [![X](https://img.shields.io/badge/@LightOnIO-X-black?logo=x)](https://x.com/LightOnIO)
34
+
35
+ 📚 [Collection](https://huggingface.co/collections/lightonai/mdenseon-and-mlateon) | 📝 [Multilingual Blog](https://huggingface.co/blog/lightonai/mdenseon-mlateon) | 📝 [English Blog](https://huggingface.co/blog/lightonai/denseon-lateon)
36
+
37
+ </div>
38
+
39
+ <h1 align="center">mDenseOn</h1>
40
+
41
+ <h3 align="center">State-of-the-Art Multilingual Dense Retrieval Model by LightOn</h3>
42
+
43
+ <p align="center">
44
+ <a href="https://huggingface.co/lightonai/mDenseOn">mDenseOn</a> |
45
+ <a href="https://huggingface.co/lightonai/mLateOn">mLateOn</a> |
46
+ <a href="https://huggingface.co/lightonai/DenseOn">DenseOn</a> |
47
+ <a href="https://huggingface.co/lightonai/LateOn">LateOn</a> |
48
+ <a href="https://github.com/lightonai/pylate">PyLate</a> |
49
+ <a href="https://github.com/lightonai/fast-plaid">FastPlaid</a>
50
+ </p>
51
+
52
+ > 🎯 **TL;DR**: A 307M-parameter multilingual dense (single-vector) retrieval model achieving state-of-the-art results across **multilingual retrieval (MIRACL), long-document retrieval (MLDR), English general-domain retrieval (BEIR), and code retrieval (MTEB Code)**. Built by extending our validated open English data recipe to eight additional languages via translate-train, producing one of the largest open multilingual retrieval training sets to date (2.8B pairs).
53
+
54
+ ## About the mDenseOn / mLateOn Family
55
+
56
+ With [DenseOn](https://huggingface.co/lightonai/DenseOn) and [LateOn](https://huggingface.co/lightonai/LateOn), we demonstrated that an open, carefully curated data recipe can match closed-data retrieval models on English. mDenseOn and mLateOn extend this recipe to multilingual, long-context, and code retrieval.
57
+
58
+ Rather than independently collecting multilingual corpora from scratch (which would be expensive, uneven across languages, and hard to curate at the same quality), we applied the **translate-train** approach: machine-translating our validated English data into eight target languages (French, German, Italian, Spanish, Portuguese, Swedish, Norwegian, and Arabic) and adding cross-lingual pairs for cross-lingual alignment.
59
+
60
+ For more information, please read our [multilingual blog post](https://huggingface.co/blog/lightonai/mdenseon-mlateon) and our [English blog post](https://huggingface.co/blog/lightonai/denseon-lateon).
61
+
62
+
63
+ ## mDenseOn
64
+
65
+ **mDenseOn** is a multilingual dense (single-vector) retrieval model built on mmBERT-base (307M parameters), trained by [LightOn](https://lighton.ai). It encodes queries and documents independently using cosine similarity with `query:`/`document:` prefixes and [CLS] pooling, supporting context lengths of up to **8,192 tokens**.
66
+
67
+ mDenseOn notably:
68
+ - Achieves **56.70 NDCG@10 on BEIR**, slightly surpassing the English-only DenseOn (56.20), confirming that multilingual capabilities do not come at the cost of English quality.
69
+ - Reaches **59.61 on MIRACL target languages**, competitive with similarly-sized models like EmbeddingGemma.
70
+ - Scores **64.98 on MLDR target languages**, competitive with most dense baselines
71
+ - Achieves **71.53 on MTEB Code**, the second-best sub-350M dense model, despite using only fine-tuning-stage code data and no code-specific pre-training.
72
+
73
+ Alongside mDenseOn, we also trained [mLateOn](https://huggingface.co/lightonai/mLateOn), a late-interaction variant using the same setup. mLateOn achieves substantially stronger results, especially on multilingual and long-context tasks, and generalizes to languages outside of the training set, effectively circumventing the main limitation of translate-train for dense models. If your use case permits multi-vector retrieval, we recommend mLateOn.
74
+
75
+ See our [multilingual blog post](https://huggingface.co/blog/lightonai/mdenseon-mlateon) for full results and analysis.
76
+
77
+ ## Results
78
+
79
+ ### Headline Results (NDCG@10)
80
+
81
+ **MIRACL<sub>tgt</sub>** and **MLDR<sub>tgt</sub>** include only the languages overlapping with our target languages; **MIRACL** and **MLDR** include all benchmark languages.
82
+
83
+ | Model | Size | BEIR | MIRACL<sub>tgt</sub> | MIRACL | MLDR<sub>tgt</sub> | MLDR | Code |
84
+ |---|---|---|---|---|---|---|---|
85
+ | **Our models** | | | | | | | |
86
+ | mLateOn | 307M | **57.56** | **65.61** | 67.04 | **87.69** | **77.92** | 73.48 |
87
+ | mDenseOn | 307M | 56.70 | 59.61 | 58.02 | 64.98 | 51.59 | 71.53 |
88
+ | **Dense baselines** | | | | | | | |
89
+ | pplx-embed-v1-0.6b | 596M | 56.70 | 63.18 | 68.20 | 57.08 | 43.98 | 75.18 |
90
+ | jina-v5-text-small | 677M | 56.70 | 61.03 | 66.56 | 53.00 | 43.83 | 73.01 |
91
+ | jina-v5-text-nano | 239M | 56.08 | 60.86 | 65.84 | 56.71 | 47.20 | 70.75 |
92
+ | arctic-embed-l-v2 | 568M | 55.55 | 60.78 | 66.53 | 57.01 | 48.03 | 53.17 |
93
+ | Qwen3-Embedding-0.6B | 596M | 55.33 | 57.64 | 60.62 | 59.11 | 50.06 | 73.75 |
94
+ | harrier-oss-v1-0.6b | 596M | 55.04 | 57.41 | 63.68 | 53.84 | 44.23 | 70.97 |
95
+ | harrier-oss-v1-270m | 268M | 50.82 | 48.95 | 57.11 | 52.31 | 42.63 | 63.79 |
96
+ | embeddinggemma-300m | 308M | 53.69 | 58.72 | 64.58 | 49.11 | 40.89 | 68.81 |
97
+ | gte-multilingual-base | 305M | 51.08 | 57.39 | 64.14 | 66.41 | 56.65 | 57.46 |
98
+ | voyage-4-nano | 340M | 49.96 | 49.29 | 58.65 | 62.10 | 51.97 | **76.43** |
99
+ | BGE-M3 | 568M | 48.78 | 62.22 | **69.62** | 61.16 | 52.47 | 51.49 |
100
+ | granite-311m-r2 | 312M | 49.24 | 53.38 | 59.74 | 50.53 | 41.86 | 63.50 |
101
+ | **Late-interaction baselines** | | | | | | | |
102
+ | pplx-embed-v1-late-0.6b | 596M | 56.11 | 63.67 | 69.55 | 68.69 | 55.51 | 63.29 |
103
+ | LFM2.5-ColBERT-350M | 353M | 54.50 | 57.40 | 42.45 | 78.39 | 61.05 | 51.62 |
104
+ | jina-colbert-v2 | 559M | 52.96 | 62.19 | 65.65 | 13.97 | 11.54 | 49.88 |
105
+ | GTE-ModernColBERT | 149M | 54.23 | 43.96 | 36.35 | 67.68 | 45.95 | 54.37 |
106
+ | ColBERT-Zero | 149M | 55.82 | 43.89 | 39.36 | 71.32 | 49.50 | 53.59 |
107
+
108
+ mDenseOn at 307M parameters is competitive with or outperforms models up to twice its size on most target-language axes. Among dense models of comparable size, it outperforms EmbeddingGemma and granite-311m-r2 on every target-language axis, and gte-multilingual-base on all but MLDR.
109
+
110
+ ### Key Findings
111
+
112
+ **English quality improved**. mDenseOn reaches 56.70 on BEIR, slightly surpassing the English-only DenseOn (56.20), confirming that multilingual training need not degrade English performance.
113
+
114
+ **Strong target-language performance.** On the nine languages we translated into, mDenseOn is competitive with models trained on many more languages.
115
+
116
+ **Dense models generalize less to unseen languages.** On the full MIRACL and MLDR benchmarks (which include languages not seen during retrieval training), mDenseOn drops noticeably. This is expected for single-vector models, whose compressed representation transfers less readily to languages absent from fine-tuning. For broader language coverage without exhaustive translation, consider [mLateOn](https://huggingface.co/lightonai/mLateOn), which generalizes substantially better to unseen languages.
117
+
118
+ **Code retrieval from fine-tuning alone.** mDenseOn scores 71.53 on MTEB Code using only fine-tuning-stage code data (from LateOn-Code), with no code-specific pre-training. Adding code data at pre-training time may yield further gains.
119
+
120
+ ## Related Checkpoints
121
+
122
+ | Model | Description | Link |
123
+ |:---|:---|:---|
124
+ | **mDenseOn** *(this card)* | Multilingual dense retriever (recommended for multilingual dense) | [`lightonai/mDenseOn`](https://huggingface.co/lightonai/mDenseOn) |
125
+ | mDenseOn-unsupervised | Multilingual dense, pre-training only | [`lightonai/mDenseOn-unsupervised`](https://huggingface.co/lightonai/mDenseOn-unsupervised) |
126
+ | mLateOn | Multilingual late-interaction retriever (strongest multilingual) | [`lightonai/mLateOn`](https://huggingface.co/lightonai/mLateOn) |
127
+ | mLateOn-unsupervised | Multilingual late-interaction, pre-training only | [`lightonai/mLateOn-unsupervised`](https://huggingface.co/lightonai/mLateOn-unsupervised) |
128
+ | DenseOn | English-only dense retriever | [`lightonai/DenseOn`](https://huggingface.co/lightonai/DenseOn) |
129
+ | DenseOn-unsupervised | English-only dense, pre-training only | [`lightonai/DenseOn-unsupervised`](https://huggingface.co/lightonai/DenseOn-unsupervised) |
130
+ | LateOn | English-only late-interaction retriever | [`lightonai/LateOn`](https://huggingface.co/lightonai/LateOn) |
131
+ | LateOn-unsupervised | English-only late-interaction, pre-training only | [`lightonai/LateOn-unsupervised`](https://huggingface.co/lightonai/LateOn-unsupervised) |
132
+
133
+ ## Training Data
134
+
135
+ We release all datasets used to train our English and multilingual embedding models.
136
+
137
+ ### Pre-training Data
138
+
139
+ * [**Multilingual pre-training curated data**](https://huggingface.co/datasets/lightonai/multilingual-embeddings-pre-training-curated) — **2.16B pairs**
140
+ * [**English pre-training curated data**](https://huggingface.co/datasets/lightonai/embeddings-pre-training-curated) — **665M pairs**
141
+
142
+ Together these form the **2.8B-pair** ready-to-train pre-training mixture. The multilingual corpus spans the eight target languages and includes a **220M-pair cross-lingual split**. The curated English corpus is built after filtering and deduplicating the raw English data. The complete **1.4B-pair** annotated parent dataset is released as [English pre-training unfiltered data](https://huggingface.co/datasets/lightonai/embeddings-pre-training).
143
+
144
+ ### Fine-tuning Data
145
+
146
+ A ready-to-train fine-tuning mixture of **16.3M samples**, filtered with NV-Retriever methodology to remove false negatives: any mined candidate scoring above **95% of the positive's relevance** is discarded, and the **top 10** surviving hard negatives are kept per sample. The mixture is then annotated with the [mxbai-rerank-large-v2](https://huggingface.co/mixedbread-ai/mxbai-rerank-large-v2) cross-encoder for distillation. We release one dataset per language, plus two code splits:
147
+
148
+ * [**English**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-en)
149
+ * [**French**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-fr)
150
+ * [**Spanish**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-es)
151
+ * [**Italian**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-it)
152
+ * [**German**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-de)
153
+ * [**Portuguese**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-pt)
154
+ * [**Arabic**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-ar)
155
+ * [**Norwegian**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-no)
156
+ * [**Swedish**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-sv)
157
+ * [**Code**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-code)
158
+ * [**Code Edit**](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-filtered-code-edit)
159
+
160
+ **Multilingual data.**
161
+ **MIRACL and MLDR** hard-negatives were mined directly in the available datasets with [snowflake-arctic-embed-l-v2.0](https://huggingface.co/Snowflake/snowflake-arctic-embed-l-v2.0) (**2,048 mined negatives per sample**) and the full unfiltered set is available at [embeddings-fine-tuning-multilingual-unfiltered](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-multilingual-unfiltered). **All other splits** follow the translate-train recipe: we apply the mentioned NV-Retriever filtering to the [English fine-tuning unfiltered data](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning), then machine-translate the filtered samples into the eight target languages, carrying the original relevance scores. The unfiltered English fine-tuning parent corpus contains **1.88M examples** with **2,048 mined negatives**, scored with [GTE-ModernBERT](https://huggingface.co/Alibaba-NLP/gte-modernbert-base).
162
+
163
+
164
+ **Code data.**
165
+ The **Code** dataset is derived from [LateOn-Code data](https://huggingface.co/datasets/lightonai/nv-embed-supervised-distill-dedup-code), where 2,048 negatives are mined with [GTE-ModernBERT](https://huggingface.co/Alibaba-NLP/gte-modernbert-base). The **Code Edit** dataset had no existing training set, so we built one from [CommitPackFT](https://huggingface.co/datasets/bigcode/commitpackft), decontaminated against the CodeEditSearch evaluation set by removing shared commit SHAs, exact normalized-text matches, and examples with **≥50% 13-gram containment overlap**. Hard-negatives are likewise mined with GTE-ModernBERT, and its unfiltered mined set is released alongside the multilingual data in [embeddings-fine-tuning-multilingual-unfiltered](https://huggingface.co/datasets/lightonai/embeddings-fine-tuning-multilingual-unfiltered).
166
+
167
+
168
+ For more information, please read our [multilingual blog post](https://huggingface.co/blog/lightonai/mdenseon-mlateon) and our [English blog post](https://huggingface.co/blog/lightonai/denseon-lateon).
169
+ Training scripts can be found [here](https://github.com/lightonai/mdenseon-mlateon).
170
+
171
+ ## Model Details
172
+
173
+ ### Model Description
174
+ - **Model Type:** Sentence Transformer
175
+ - **Base model:** [mmBERT-base](https://huggingface.co/jhu-clsp/mmBERT-base)
176
+ - **Maximum Sequence Length:** 8,192 tokens
177
+ - **Output Dimensionality:** 768 dimensions
178
+ - **Similarity Function:** Cosine Similarity
179
+ - **Pooling:** [CLS] token
180
+ - **Prompts:** `query:` for queries, `document:` for documents
181
+ - **Languages:** English, French, German, Italian, Spanish, Portuguese, Swedish, Norwegian, Arabic
182
+ - **License:** Apache 2.0
183
+
184
+ ### Model Sources
185
+
186
+ - **Documentation:** [Sentence Transformers Documentation](https://sbert.net)
187
+ - **Repository:** [Sentence Transformers on GitHub](https://github.com/UKPLab/sentence-transformers)
188
+ - **Hugging Face:** [Sentence Transformers on Hugging Face](https://huggingface.co/models?library=sentence-transformers)
189
+
190
+ ### Full Model Architecture
191
+
192
+ ```
193
+ SentenceTransformer(
194
+ (0): Transformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'ModernBertModel'})
195
+ (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})
196
+ )
197
+ ```
198
+
199
+ ## Usage
200
+
201
+ ### Direct Usage (Sentence Transformers)
202
+
203
+ First install the Sentence Transformers library:
204
+
205
+ ```bash
206
+ pip install -U sentence-transformers
207
+ ```
208
+
209
+ Then you can load this model and run inference.
210
+ ```python
211
+ from sentence_transformers import SentenceTransformer
212
+
213
+ # Download from the Hub
214
+ model = SentenceTransformer("lightonai/mDenseOn")
215
+
216
+ # Run inference with multilingual queries and documents
217
+ queries = [
218
+ "Quelle planète est connue comme la planète rouge ?",
219
+ "Which planet is known as the Red Planet?",
220
+ ]
221
+ documents = [
222
+ "Venus wird oft als Zwilling der Erde bezeichnet wegen ihrer ähnlichen Größe.",
223
+ "Mars, connu pour son apparence rougeâtre, est souvent appelé la planète rouge.",
224
+ "Marte, conocido por su apariencia rojiza, es a menudo llamado el Planeta Rojo.",
225
+ "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
226
+ ]
227
+
228
+ query_embeddings = model.encode(queries, prompt_name="query")
229
+ document_embeddings = model.encode(documents, prompt_name="document")
230
+ print(query_embeddings.shape, document_embeddings.shape)
231
+ # [2, 768] [4, 768]
232
+
233
+ # Get the similarity scores for the embeddings
234
+ similarities = model.similarity(query_embeddings, document_embeddings)
235
+ print(similarities)
236
+ ```
237
+
238
+ ### Framework Versions
239
+ - Python: 3.11.10
240
+ - Sentence Transformers: 5.1.1
241
+ - Transformers: 4.57.5
242
+ - PyTorch: 2.9.0+cu128
243
+ - Accelerate: 1.12.0
244
+ - Datasets: 3.6.0
245
+ - Tokenizers: 0.22.1
246
+
247
+ ## Citation
248
+
249
+ ### BibTeX
250
+
251
+ #### mDenseOn and mLateOn
252
+
253
+ ```bibtex
254
+ @misc{sourty2026mdenseonmlateon,
255
+ title = {{mDenseOn with the mLateOn}: Open Multilingual, Long-Context, and Code Retrieval Models},
256
+ author = {Sourty, Raphael and Chaffin, Antoine and Moura Junior, Paulo Roberto and Chatelain, Amelie},
257
+ year = {2026},
258
+ howpublished = {\url{https://huggingface.co/blog/lightonai/mDenseOn-mLateOn}}
259
+ }
260
+ ```
261
+
262
+ #### DenseOn and LateOn
263
+ ```bibtex
264
+ @misc{sourty2026denseonlateon,
265
+ title={DenseOn with the LateOn: Open State-of-the-Art Single and Multi-Vector Models},
266
+ author={Sourty, Raphael and Chaffin, Antoine and Weller, Orion and Moura Junior, Paulo Roberto and Chatelain, Amelie},
267
+ year={2026},
268
+ howpublished={\url{https://huggingface.co/blog/lightonai/denseon-lateon}},
269
+ }
270
+ ```
271
+
272
+ #### PyLate
273
+
274
+ ```bibtex
275
+ @inproceedings{DBLP:conf/cikm/ChaffinS25,
276
+ author = {Antoine Chaffin and
277
+ Rapha{\"{e}}l Sourty},
278
+ editor = {Meeyoung Cha and
279
+ Chanyoung Park and
280
+ Noseong Park and
281
+ Carl Yang and
282
+ Senjuti Basu Roy and
283
+ Jessie Li and
284
+ Jaap Kamps and
285
+ Kijung Shin and
286
+ Bryan Hooi and
287
+ Lifang He},
288
+ title = {PyLate: Flexible Training and Retrieval for Late Interaction Models},
289
+ booktitle = {Proceedings of the 34th {ACM} International Conference on Information
290
+ and Knowledge Management, {CIKM} 2025, Seoul, Republic of Korea, November
291
+ 10-14, 2025},
292
+ pages = {6334--6339},
293
+ publisher = {{ACM}},
294
+ year = {2025},
295
+ url = {https://github.com/lightonai/pylate},
296
+ doi = {10.1145/3746252.3761608},
297
+ }
298
+ ```
299
+
300
+ #### Sentence Transformers
301
+
302
+ ```bibtex
303
+ @inproceedings{reimers-2019-sentence-bert,
304
+ title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
305
+ author = "Reimers, Nils and Gurevych, Iryna",
306
+ booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
307
+ month = "11",
308
+ year = "2019",
309
+ publisher = "Association for Computational Linguistics",
310
+ url = "https://arxiv.org/abs/1908.10084"
311
+ }
312
+ ```
313
+
314
+ ## Acknowledgements
315
+
316
+ We thank Eugene Yang for his feedback on adapting our English study to multilinguality through translate-train. We again thank Xin Zhang, Zach Nussbaum, Tom Aarsen, Bo Wang, Eugene Yang, Benjamin Clavié, Nandan Thakur, Oskar Hallström and Iacopo Poli for their valuable contributions and feedback on the original English study. We thank Orion Weller for building the FineWeb-derived Common Crawl split as well as for his feedback and help. We are grateful to the teams behind Sentence Transformers, BEIR, and MIRACL, and to the open-source retrieval community, in particular the authors of Nomic Embed.
317
+
318
+ This work was granted access to the HPC resources of IDRIS under GENCI allocations AS011016449, A0181016214, and A0171015706 (Jean Zay supercomputer). We also acknowledge the Barcelona Supercomputing Center (BSC-CNS) for providing access to MareNostrum 5 under EuroHPC AI Factory Fast Lane project EHPC-AIF-2025FL01-445.
319
+ This project is also supported by the OpenEuroLLM project, co-funded by the Digital Europe Programme under GA no. 101195233.
config.json ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ModernBertModel"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 2,
8
+ "classifier_activation": "gelu",
9
+ "classifier_bias": false,
10
+ "classifier_dropout": 0.0,
11
+ "classifier_pooling": "mean",
12
+ "cls_token_id": 1,
13
+ "decoder_bias": true,
14
+ "deterministic_flash_attn": false,
15
+ "dtype": "float32",
16
+ "embedding_dropout": 0.0,
17
+ "eos_token_id": 1,
18
+ "global_attn_every_n_layers": 3,
19
+ "gradient_checkpointing": false,
20
+ "hidden_activation": "gelu",
21
+ "hidden_size": 768,
22
+ "initializer_cutoff_factor": 2.0,
23
+ "initializer_range": 0.02,
24
+ "intermediate_size": 1152,
25
+ "layer_norm_eps": 1e-05,
26
+ "layer_types": [
27
+ "full_attention",
28
+ "sliding_attention",
29
+ "sliding_attention",
30
+ "full_attention",
31
+ "sliding_attention",
32
+ "sliding_attention",
33
+ "full_attention",
34
+ "sliding_attention",
35
+ "sliding_attention",
36
+ "full_attention",
37
+ "sliding_attention",
38
+ "sliding_attention",
39
+ "full_attention",
40
+ "sliding_attention",
41
+ "sliding_attention",
42
+ "full_attention",
43
+ "sliding_attention",
44
+ "sliding_attention",
45
+ "full_attention",
46
+ "sliding_attention",
47
+ "sliding_attention",
48
+ "full_attention"
49
+ ],
50
+ "local_attention": 128,
51
+ "mask_token_id": 4,
52
+ "max_position_embeddings": 8192,
53
+ "mlp_bias": false,
54
+ "mlp_dropout": 0.0,
55
+ "model_type": "modernbert",
56
+ "norm_bias": false,
57
+ "norm_eps": 1e-05,
58
+ "num_attention_heads": 12,
59
+ "num_hidden_layers": 22,
60
+ "pad_token_id": 0,
61
+ "position_embedding_type": "sans_pos",
62
+ "repad_logits_with_grad": false,
63
+ "rope_parameters": {
64
+ "full_attention": {
65
+ "rope_theta": 160000,
66
+ "rope_type": "default"
67
+ },
68
+ "sliding_attention": {
69
+ "rope_theta": 160000,
70
+ "rope_type": "default"
71
+ }
72
+ },
73
+ "sep_token_id": 1,
74
+ "sparse_pred_ignore_index": -100,
75
+ "sparse_prediction": false,
76
+ "tie_word_embeddings": true,
77
+ "transformers_version": "5.6.2",
78
+ "vocab_size": 256000
79
+ }
config_sentence_transformers.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "__version__": {
3
+ "pytorch": "2.6.0+cu124",
4
+ "sentence_transformers": "5.4.1",
5
+ "transformers": "5.6.2"
6
+ },
7
+ "default_prompt_name": null,
8
+ "model_type": "SentenceTransformer",
9
+ "prompts": {
10
+ "document": "document: ",
11
+ "query": "query: "
12
+ },
13
+ "similarity_fn_name": "cosine"
14
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a336c49fc679aeb23969114b12fb7317804da3cc7d8bc214818009dea39d545c
3
+ size 1227771776
modules.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "idx": 0,
4
+ "name": "0",
5
+ "path": "",
6
+ "type": "sentence_transformers.base.modules.transformer.Transformer"
7
+ },
8
+ {
9
+ "idx": 1,
10
+ "name": "1",
11
+ "path": "1_Pooling",
12
+ "type": "sentence_transformers.sentence_transformer.modules.pooling.Pooling"
13
+ }
14
+ ]
sentence_bert_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "transformer_task": "feature-extraction",
3
+ "modality_config": {
4
+ "text": {
5
+ "method": "forward",
6
+ "method_output_name": "last_hidden_state"
7
+ }
8
+ },
9
+ "module_output_name": "token_embeddings"
10
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a086e6a7efb90bbab8e379a63f3463fb13e6256ebec3343c1f1612cab693935b
3
+ size 34363287
tokenizer_config.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "bos_token": "<bos>",
4
+ "clean_up_tokenization_spaces": false,
5
+ "cls_token": "<bos>",
6
+ "eos_token": "<eos>",
7
+ "is_local": true,
8
+ "local_files_only": false,
9
+ "mask_token": "<mask>",
10
+ "max_length": 1024,
11
+ "model_input_names": [
12
+ "input_ids",
13
+ "attention_mask"
14
+ ],
15
+ "model_max_length": 8192,
16
+ "pad_to_multiple_of": null,
17
+ "pad_token": "<pad>",
18
+ "pad_token_type_id": 0,
19
+ "padding_side": "right",
20
+ "sep_token": "<eos>",
21
+ "spaces_between_special_tokens": false,
22
+ "stride": 0,
23
+ "tokenizer_class": "TokenizersBackend",
24
+ "truncation_side": "right",
25
+ "truncation_strategy": "longest_first",
26
+ "unk_token": "<unk>"
27
+ }