Ajouter un reranker à son pipeline
Les embeddings font de la recherche approximative : rapide, scalable, mais avec du bruit dans les premiers résultats. Un reranker — un cross-encoder plus précis — réordonne les 20 premiers candidats pour en faire remonter 5 vraiment pertinents. +15 à +25 % de recall sur la plupart des corpus. Ce guide explique pourquoi, et comment l'ajouter en 30 lignes.
#Pourquoi un reranker
Un embedding produit un vecteur par document, indépendamment de la question. La distance est symétrique et globale. C'est approximatif par nature — deux passages sur le même sujet général peuvent être proches même si un seul répond vraiment à la question posée.
Un reranker regarde le couple (question, passage) ensemble, comme un humain : "ce passage répond-il à cette question ?". Il est 10-100x plus lent, mais beaucoup plus précis sur ce jugement local.
#Comment ça marche
- Bi-encoder (embedding)
- Encode la question et chaque document séparément. Distance cosinus. Rapide, parallélisable.
- Cross-encoder (reranker)
- Encode (question || document) ensemble dans un seul passage du transformer. Sort un score de pertinence. Précis, coûteux.
On combine les deux : embedding pour récupérer 20-50 candidats plausibles parmi des millions, reranker pour affiner le top 5.
#Modèles 2026
- ⭐ BAAI/bge-reranker-v2-m3
- Multilingue, excellent français. 560 Mo. Le choix par défaut.
- BAAI/bge-reranker-v2-gemma
- Plus gros (2 Go) et plus précis pour des cas exigeants. Attention VRAM.
- mixedbread-ai/mxbai-rerank-large-v1
- Apache 2.0, bon en EN, décent en FR. Alternative si licence bge ne convient pas.
- cohere/rerank-multilingual-v3.0
- Cloud uniquement, excellent. Non applicable pour 100 % local.
#La nouvelle pipeline
#Implémentation
#Coût et optimisations
- Latence
- bge-reranker-v2-m3 sur GPU : ~50 ms pour 20 candidats. Sur CPU : 500-800 ms. À prendre en compte pour un chat interactif.
- VRAM
- ~1,2 Go en inférence. Cohabite avec un Mistral 7B sur 8 Go de VRAM sans souci.
- Batch size
- 16-32 est optimal. Au-delà, gains marginaux. En-dessous, latence par couple.
- max_length
- 512 par défaut. Pour des chunks longs (800+ tokens), passez à 1024 ou 2048 — attention à la VRAM.
#Mesurer le gain
Protocole A/B simple : même jeu de 50 questions, mesurer recall@5 avec et sans reranker.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.