Avant-Propos
Cet article est une republication de celui que j’ai rédigé sur le blog d'AlphaEdge.
Je les remercie de m'avoir permis de travailler sur ce sujet.
Introduction
Il y a 3 semaines, Linkup a publié son premier modèle open-source, le linkup-sparseup-embed-v1 [1], accompagné d'un article de blog [2] expliquant leur façon de procéder.
Il s'agit d'un modèle d'embedding sparse de 150 M de paramètres basé sur les travaux de LightOn [3] publiés plus tôt dans l'année. Les détails sont dans leur article de blog et dans les fichiers .py disponibles sur Hugging Face mais, globalement, leur approche consiste à partir du LateOn-unsupervised, à y greffer la tête MLM du ModernBERT [4], puis à finetuner le tout sur les données mises à disposition par LightOn.
Le résultat final est un modèle sparse gagnant 2 points sur BEIR-13 par rapport au précédent SOTA de taille équivalente pour cette famille de modèles.
Pour se familiariser avec l'approche, nous avons eu envie de répliquer le modèle de Linkup, mais en français plutôt qu'en anglais.
Conception du modèle
Pour pouvoir appliquer la méthodologie de Linkup au français, nous avons procédé à deux changements architecturaux.
Le premier consiste à changer de backbone en utilisant le mLateOn-unsupervised [5], qui est la version multilingue du LateOn-unsupervised. Celle-ci gère 10 langues, dont le français qui nous intéresse.
Le second est d'utiliser comme tête MLM le mmBERT-base [6] plutôt que le ModernBERT. Nous ne l'avons cependant pas repris tel quel puisque nous l'avons trimmé [7] afin de ne garder que 50 240 tokens minés sur du français plutôt que les 256 000 originaux.
L'idée ici est d'obtenir un modèle français de taille équivalente à la version anglaise (cette dernière utilise 50 370 tokens dans son vocabulaire, mais nous n'avons pas souhaité faire correspondre exactement ce nombre afin de conserver un multiple de 64, bénéfique aux GPU).
Entraînement
Nous avons entraîné notre modèle sur une seule RTX 6000 Pro pendant environ 55 h, soit le temps nécessaire pour réaliser une epoch complète sur les données d'entraînement en français mises à disposition par LightOn.
Concernant les hyperparamètres, nous vous invitons à consulter la carte de modèle. Il s'agit des mêmes que ceux utilisés par Linkup. La seule exception est qu'avec la mémoire disponible sur notre GPU, nous nous sommes permis de doubler la taille de la requête et du document (passant respectivement de 128 à 256 et de 512 à 1024).
Résultats
Pour évaluer les modèles, nous utilisons une version nettoyée de NanoBEIR-fr de LightOn. C'est-à-dire que nous nous sommes assurés qu'il n'y avait pas de fuites de données entre les données d'entraînement de LightOn et ces benchmarks, mais avons également supprimé les lignes suspectes (voir par exemple cette issue GitHub listant des problèmes rencontrés pour NanoBEIR). Nous ne nous sommes néanmoins pas penchés sur d'éventuels problèmes d'annotation (pointés par exemple par [8] ou [9]).
Nous mettons la version de ce benchmark à disposition sur notre profil Hugging Face (le dossier metadata liste toutes les lignes posant problème).
Concernant les modèles, nous nous intéressons à deux comparaisons.
Premièrement, nous évaluons le modèle obtenu face au mLateOn et au mDenseOn, comme l'ont fait les équipes de Linkup. En effet, comme ils utilisent les backbones et les données de LightOn, cela permet de comparer pleinement les différentes grandes approches architecturales en IR (recherche d'information). Pour l'anglais, ils observent que le LateOn (late interaction) est nettement plus performant que le DenseOn (dense), qui lui-même est légèrement au-dessus de leur modèle sparse. Nous souhaitons alors déterminer si nous observons ou non les mêmes tendances en français.
Deuxièmement, nous comparons le modèle entraîné aux autres modèles sparses en français disponibles sur le Hub d'Hugging Face, afin de se faire une idée de sa position parmi les solutions open source existantes. Plus précisément, il s'agit du splade-camembert-base-v2 [10] d'Arthur BRESNU, qui est monolingue, et de l'opensearch-neural-sparse-encoding-multilingual-v1 [11] d'Amazon/Linux, qui est multilingue et inclut le français.
À noter que nous avons lancé les évaluations sur deux configurations différentes : l'une où les documents sont découpés à la taille maximale de ce que chacun des modèles peut prendre en contexte, et l'autre où l'on applique une fenêtre coulissante sur l'ensemble du document, avec une taille de fenêtre égale à la taille de contexte, plus un chevauchement de 64 tokens. Ce dernier cas de figure, qui de surcroît ressemble davantage à un vrai cas d'usage de RAG, doit permettre d'évaluer plus justement les différents modèles sparses, qui ont une taille de requête et de document plus faible que les modèles de LightOn.
Finalement, nous précisons que dans les tableaux suivants, les cellules bleues indiquent la performance du meilleur modèle toutes familles confondues, là où les cellules vertes indiquent la performance du meilleur modèle sparse sur le benchmark.
Configuration avec troncage
| Jeu de données | mLateOn (307 M) | mDenseOn (307 M) | Sparseup (150 M) | Sparseup-fr-v0 (150 M) | Opensearch (167 M) | Splade-camembert (111 M) | bm25 |
|---|---|---|---|---|---|---|---|
| arguana | 68.51 | 59.64 | 47.01 | 49.46 | 41.41 | 46.12 | 41.18 |
| climatefever | 48.19 | 48.98 | 34.58 | 34.66 | 31.85 | 27.84 | 27.44 |
| dbpedia | 69.03 | 65.76 | 55.86 | 61.71 | 62.22 | 58.34 | 51.42 |
| fever | 93.39 | 90.99 | 87.24 | 91.91 | 87.74 | 77.31 | 75.73 |
| fiqa2018 | 59.68 | 56.10 | 29.01 | 41.68 | 33.56 | 39.06 | 27.76 |
| hotpotqa | 91.85 | 85.80 | 76.69 | 77.55 | 74.08 | 70.43 | 67.84 |
| msmarco | 60.39 | 59.67 | 51.52 | 50.06 | 49.51 | 57.55 | 44.00 |
| nfcorpus | 35.50 | 34.35 | 28.43 | 28.53 | 34.27 | 30.14 | 30.73 |
| nq | 69.09 | 63.75 | 50.49 | 56.36 | 55.05 | 51.39 | 44.95 |
| quoraretrieval | 87.65 | 89.61 | 77.96 | 85.44 | 85.82 | 82.82 | 70.94 |
| scidocs | 40.99 | 44.17 | 33.51 | 34.97 | 30.96 | 31.54 | 32.31 |
| scifact | 79.42 | 80.91 | 65.05 | 67.47 | 66.74 | 67.99 | 65.57 |
| touche2020 | 55.94 | 55.05 | 43.78 | 52.99 | 48.08 | 50.49 | 50.70 |
| Moyenne | 66.13 | 64.21 | 52.40 | 56.37 | 53.94 | 53.15 | 48.50 |
Configuration avec fenêtre coulissante
| Jeu de données | mLateOn (307 M) | mDenseOn (307 M) | Sparseup (150 M) | Sparseup-fr-v0 (150 M) | Opensearch (167 M) | Splade-camembert (111 M) | bm25 |
|---|---|---|---|---|---|---|---|
| arguana | 68.51 | 59.64 | 46.28 | 49.46 | 41.67 | 46.12 | 41.18 |
| climatefever | 48.19 | 48.98 | 27.27 | 33.89 | 31.46 | 26.02 | 27.44 |
| dbpedia | 69.03 | 65.76 | 55.99 | 61.92 | 62.39 | 58.21 | 51.42 |
| fever | 93.39 | 90.99 | 86.67 | 91.91 | 88.74 | 78.51 | 75.73 |
| fiqa2018 | 59.68 | 56.14 | 27.84 | 41.67 | 33.29 | 38.79 | 27.76 |
| hotpotqa | 91.85 | 85.80 | 76.64 | 77.60 | 74.08 | 70.44 | 67.84 |
| msmarco | 60.39 | 59.67 | 51.52 | 50.06 | 49.13 | 57.55 | 44.00 |
| nfcorpus | 35.50 | 34.35 | 25.69 | 28.62 | 33.67 | 30.11 | 30.73 |
| nq | 69.09 | 63.75 | 50.81 | 56.40 | 54.52 | 51.57 | 44.95 |
| quoraretrieval | 87.65 | 89.61 | 77.96 | 85.44 | 85.82 | 82.85 | 70.94 |
| scidocs | 40.99 | 44.17 | 31.95 | 34.72 | 30.95 | 31.30 | 32.31 |
| scifact | 79.42 | 80.91 | 64.42 | 67.47 | 67.94 | 68.04 | 65.57 |
| touche2020 | 56.03 | 55.05 | 48.53 | 55.38 | 52.68 | 54.54 | 50.70 |
| Moyenne | 66.13 | 64.22 | 51.66 | 56.50 | 54.33 | 53.39 | 48.50 |
Observations
Nous pouvons constater, comme les équipes de Linkup, que le modèle late interaction performe mieux que le dense, et lui-même mieux que les différents modèles sparses. L'usage d'une fenêtre coulissante n'améliore pas les modèles de LightOn, qui bénéficient déjà d'une taille de contexte de requête et de document de 8 192 tokens. Elle apparaît légèrement bénéfique aux modèles sparse français, mais dégrade étrangement ceux de Sparseup. Nous ne rapportons pas les résultats ici car nous faisons un focus sur le français, mais pour vérifier ce comportement nous avons aussi évalué les modèles sur le NanoBEIR-en nettoyé et avons alors observé que la fenêtre coulissante bénéficie bien à Sparseup (permettant également alors de surpasser le mDenseOn).
Concernant les modèles en français, le modèle entraîné surpasse les deux autres disponibles jusqu'à présent sur le Hub de plus de 3 points pour le splade-camembert-base-v2 (notre modèle étant néanmoins 35 % plus gros) et de 2 points pour l'opensearch-neural-sparse-encoding-multilingual-v1 (en étant cette fois 11 % plus petit). Il est premier sur 8 jeux de données de NanoBEIR-fr, là où opensearch l'est sur 3 et splade-camembert-base-v2 sur 2.
Le Sparseup est en dessous mais c'est attendu car monolingue anglais (fait tout de même mieux qu'un bm25).
À noter que pour une comparaison à nombre de paramètres équivalent, on pourrait envisager de réentraîner deux modèles (un en ne gardant que 32 768 tokens pour atteindre la taille du splade-camembert-base-v2 et un autre en gardant 73 556 tokens pour atteindre celle de l'opensearch-neural-sparse-encoding-multilingual-v1), mais cela nécessiterait à nouveau plusieurs dizaines d'heures GPU d'entraînement que nous n'avions pas pour cette première expérimentation consistant simplement à vérifier la méthodologie appliquée par Linkup.
Retours d'expérience
Nous voulions initialement pouvoir présenter un modèle à la Linkup en français issu d'une fusion de plusieurs poids sauvegardés. Nous nous sommes rendu compte à la fin de l'entraînement que beaucoup de sauvegardes n'avaient pas été effectuées.
Il s'avère que la fonction push_to_hub refuse de pousser les poids lorsque le README fait plus de 1 Mo. La librairie sentence_transformers écrivant les résultats intermédiaires dans les métadonnées YAML du README à chaque évaluation, ce problème peut alors apparaître si vous faites trop de sauvegardes. Nous vous invitons ainsi à faire attention à ce point en rédigeant un petit patch dans votre code d'entraînement pour ne pas sauvegarder les résultats dans le YAML.
Conclusion et suite
Cette simple reproduction de la méthodologie de Sparseup dans une autre langue se révèle concluante puisque nous obtenons un nouveau SOTA en français parmi les modèles sparses disponibles en accès libre.
Forts de ce premier retour, nous envisageons de pousser plus loin les expérimentations, avec notamment plus de données, une fusion de poids, ou encore une version plus grande du modèle en français. Une autre possibilité serait de proposer une version multilingue.
En l'état, nous mettons à disposition cette v0, dans cette collection Hugging Face, le modèle entraîné ainsi que le benchmark nettoyé.
En espérant que cela vous soit utile :)
Références
- linkup-sparseup-embed-v1 de Thibault FORMAL, Pierre ERBACHER, Cosimo RULLI (2026). lien
- Introducing SPARSEUP by Linkup: a move towards more competitive open sparse models de Thibault FORMAL, Pierre ERBACHER, Cosimo RULLI (2026). lien
- DenseOn with the LateOn: Fully Open Dense and Late-Interaction Models for Multilingual, Long-Context, and Code Search de Raphaël SOURTY, Antoine CHAFFIN, Paulo Roberto MOURA JUNIOR, Amélie CHATELAIN (2026). lien
- Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference de Benjamin WARNER, Antoine CHAFFIN, Benjamin CLAVIÉ, et al. (2024). lien
- mDenseOn and mLateOn: more signal, less noise for multilingual agentic search de Raphaël SOURTY, Antoine CHAFFIN, Paulo Roberto MOURA JUNIOR, Amélie CHATELAIN (2026). lien
- mmBERT: A Modern Multilingual Encoder with Annealed Language Learning de Marc MARONE, Orion WELLER, William FLESHMAN, Eugene YANG, Dawn LAWRIE, Benjamin VAN DURME (2025). lien
- Introduction to Trimming ✂ de Loïck BOURDOIS, et al. (2026). lien
- Systematic Evaluation of Neural Retrieval Models on the Touché 2020 Argument Retrieval Subset of BEIR de Nandan THAKUR, Luiz BONIFACIO, Maik FRÖBE, et al. (2024). lien
- Hard Negatives, Hard Lessons: Revisiting Training Data Quality for Robust Information Retrieval with LLMs de Nandan THAKUR, Crystina ZHANG, Xueguang MA, Jimmy LIN (2025). lien
- splade-camembert-base-v2 d'Arthur BRESNU (2025). lien
- Towards Competitive Search Relevance For Inference-Free Learned Sparse Retrievers de Zhichao GENG, Yiwen WANG, Dongyu RU, Yang YANG (2025). lien
Citation
@misc{hf_blogpost_french_sparseup,
title={Sparseup-fr: A French replication of Linkup's sparse embedding model},
author={Loïck BOURDOIS},
year={2026},
url={https://huggingface.co/blog/alphaedge-ai/french-sparseup},
}