?
SkillavancéVérifié le 2025-05

Rerankers : améliorer la précision du retrieval

Implémenter un reranker (Cohere, BGE) pour filtrer les résultats non pertinents.

Pourquoi un reranker ?

Le retrieval par embeddings (bi-encoder) est rapide mais approximatif. Un reranker (cross-encoder) analyse chaque paire query-document en profondeur pour réordonner les résultats par pertinence réelle. C'est un second filtre qui améliore significativement la précision.

Architecture à deux étapes

Query → Retrieval (top-k=20, rapide) → Reranking (top-n=5, précis) → LLM
  • Étape 1 : Récupérer un ensemble large de candidats (20-100 documents)
  • Étape 2 : Le reranker score chaque document individuellement et retourne les top-n

Options de rerankers

Cohere Rerank

import cohere

co = cohere.Client("API_KEY")
results = co.rerank(
    query="Comment fonctionne le RAG ?",
    documents=retrieved_docs,
    top_n=5,
    model="rerank-multilingual-v3.0"
)
  • API managée, pas d'infra à gérer
  • Excellent en multilingue dont le français
  • Coût : $2 / 1000 recherches

BGE-Reranker-v2-m3

  • Open source (BAAI), self-hostable
  • Multilingue, performant sur le français
  • Peut tourner sur CPU (lent) ou GPU (rapide)
from FlagEmbedding import FlagReranker

reranker = FlagReranker('BAAI/bge-reranker-v2-m3')
scores = reranker.compute_score([
    [query, doc] for doc in retrieved_docs
])

Cross-encoder avec sentence-transformers

from sentence_transformers import CrossEncoder

model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-12-v2')
scores = model.predict([(query, doc) for doc in docs])

Intégration avec LangChain

from langchain.retrievers import ContextualCompressionRetriever
from langchain_cohere import CohereRerank

compressor = CohereRerank(top_n=5)
retriever = ContextualCompressionRetriever(
    base_compressor=compressor,
    base_retriever=vector_retriever
)

Impact mesuré

  • Amélioration typique du recall@5 : +15-30%
  • Réduction des hallucinations grâce à des documents plus pertinents
  • Compromis latence : +100-300ms par requête

Bonnes pratiques

  • Récupérer large (top-20 à top-50) avant de reranker
  • Utiliser le reranker en production, pas juste en dev
  • Monitorer le score de confiance du reranker pour détecter les queries hors domaine
  • Comparer régulièrement avec et sans reranker sur votre dataset d'évaluation

Sources

RAGrerankingprécision