Cross-Encoder (Reranker)
iaDéfinition
Un Cross-Encoder (ou reranker) est un modele de classement de pertinence qui prend en entree la paire (requete, document) concatenee et produit un score de pertinence unique, contrairement aux Bi-Encoders qui encodent independamment la requete et le document. Le Cross-Encoder effectue de l'attention croisee entre les deux textes, permettant de capturer des interactions semantiques fines qui sont impossibles avec les embeddings independants. Dans les pipelines RAG, le Cross-Encoder est utilise dans l'etape de reranking : apres le retrieval initial par Bi-Encoder (rapide mais approximatif), le Top-K documents recuperes sont re-scores par le Cross-Encoder (plus lent mais plus precis). Typiquement, retriever 50-100 documents avec le Bi-Encoder, puis selectionner le Top-5-10 avec le Cross-Encoder pour le contexte LLM. Les Cross-Encoders les plus performants en 2025 : BAAI/bge-reranker-v2-m3 (multilingual, 568M params, base state-of-the-art), mxbai-rerank-large-v1, Cohere Rerank API (proprietaire mais excellent), Jina AI Reranker. Ces modeles sont bases sur des encodeurs bidirectionnels (DeBERTa, BERT) fine-tunes sur des datasets de paires question-reponse. La latence est le principal defi du Cross-Encoder : contrairement au Bi-Encoder ou les embeddings peuvent etre pre-calcules, le Cross-Encoder doit etre execute en temps reel pour chaque paire (requete, document). Pour N=50 documents et un Cross-Encoder de 500M params, le reranking prend 1-3 secondes sur GPU. Des versions distillees (100M params) offrent un bon compromis latence/precision. L'amelioration typique du reranking sur les pipelines RAG : +10-25% de Context Precision (les documents les plus pertinents remontent dans le Top-5), +5-15% de Faithfulness de la reponse finale. Le gain est particulierement marque pour les questions ou le document pertinent n'est pas le plus proche en cosinus embedding (eg, questions inferentielles).
Reranking avec Cross-Encoder
from sentence_transformers import CrossEncoder
# Charger un cross-encoder
reranker = CrossEncoder('BAAI/bge-reranker-v2-m3', max_length=512)
def rerank_documents(query, documents, top_k=5):
# Creer les paires (query, doc)
pairs = [(query, doc['content']) for doc in documents]
# Scorer avec le cross-encoder
scores = reranker.predict(pairs, show_progress_bar=False)
# Re-ordonner par score
ranked = sorted(zip(documents, scores), key=lambda x: x[1], reverse=True)
return [doc for doc, _ in ranked[:top_k]]Bi-Encoder vs Cross-Encoder
| Aspect | Bi-Encoder | Cross-Encoder |
|---|---|---|
| Vitesse indexing | Pre-calcul possible | N/A |
| Vitesse requete | Tres rapide (ANN) | Lent (1-5s pour N docs) |
| Precision | Approximative | Haute |
| Usage optimal | Retrieval initial (recall) | Reranking (precision) |
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h