Basalt Studio logo
Basalt Studio.Basalt Studio.
Back

Comment utiliser le système Rerank de Cohere dans une chaîne LLM

Eliott Ardisson

Eliott Ardisson

Founder & CEO - Basalt Studio

Updated
tutorials

Comment intégrer le système Rerank de Cohere dans une chaîne LLM pour améliorer la pertinence des résultats de recherche dans vos applications IA métier.

ai agents
automation
programmatic

Points clés

  • Le système Rerank de Cohere classe des documents par pertinence sémantique, ce qui améliore sensiblement la qualité du contexte fourni à un LLM par rapport à une recherche par mots-clés seule.
  • Intégrer Rerank dans une chaîne RAG (Retrieval-Augmented Generation) résout le problème de la limite de contexte : plutôt que d’envoyer 50 documents à un LLM, vous lui envoyez les 5 vraiment utiles.
  • L’implémentation technique est accessible que vous travailliez en Python avec LangChain ou via des outils no-code. Le plus important est de bien préparer vos documents sources en amont.
  • Des pièges récurrents ralentissent les déploiements : chunks trop volumineux, absence de seuil de pertinence, requêtes trop vagues, pas de fallback en cas d’indisponibilité de l’API.
  • Mesurer l’impact exige un jeu de tests préparé avant le lancement, pas après. Définissez vos critères de succès dès la phase de configuration.

Pourquoi la recherche classique ne suffit plus dans un système LLM

Si vous avez déjà construit un assistant IA qui répond à des questions sur une base documentaire interne, vous avez probablement rencontré le même problème : le système retrouve des documents, mais pas forcément les bons. Il retourne ce qui ressemble à la question, pas ce qui y répond vraiment.

Ce problème est structurel. Une recherche vectorielle classique mesure la similarité sémantique entre une requête et des documents. C’est utile pour dégrossir, mais ça ne distingue pas entre un document qui évoque vaguement un sujet et un document qui répond précisément à la question posée. La différence paraît subtile ; en pratique, elle détermine si votre LLM génère une réponse fiable ou une réponse plausible mais incorrecte.

C’est là qu’intervient un système de reranking. Plutôt que de se substituer à la recherche vectorielle, il s’y ajoute comme une deuxième passe : on récupère d’abord un ensemble large de candidats (20, 50, 100 documents), puis on les classe par ordre de pertinence réelle vis-à-vis de la requête. Les 3 à 5 mieux classés alimentent le prompt. Le reste est ignoré.

Ce tutoriel couvre l’implémentation concrète du Rerank de Cohere dans une chaîne LLM, de la configuration de l’API aux stratégies d’optimisation, avec des exemples tirés de cas d’usage réels en entreprise.


Ce qu’est concrètement le Rerank de Cohere

Rerank est un service d’API proposé par Cohere qui prend en entrée une requête et une liste de documents, et retourne ces documents ordonnés par score de pertinence contextuelle. Chaque document reçoit un score entre 0 et 1.

Ce qui le distingue d’une recherche vectorielle standard : le modèle de reranking ne compare pas la requête à chaque document séparément. Il analyse la relation entre la requête et chaque document en les considérant ensemble, ce qui lui permet de comprendre si un document répond à l’intention derrière la question, pas seulement s’il partage du vocabulaire avec elle.

Quelques définitions utiles pour la suite :

  • Embedding / vecteur : représentation numérique d’un texte capturant son sens sémantique. La recherche vectorielle compare ces représentations.
  • RAG (Retrieval-Augmented Generation) : architecture qui combine une étape de recherche documentaire avec la génération d’un LLM. Le LLM répond à partir des documents retrouvés, pas de sa seule mémoire.
  • Chunk : fragment de document découpé pour être indexé et retrouvé. La taille des chunks influence directement la qualité du reranking.
  • Top_n : paramètre Cohere indiquant combien de documents conserver après reranking.
  • Score de pertinence : valeur de 0 à 1 attribuée par Rerank à chaque document. Un score inférieur à 0,3 signale généralement un document peu utile.

Cohere propose également des modèles multilingues, dont un qui couvre le français, l’espagnol, l’allemand et une quinzaine d’autres langues. Les performances sur le français sont solides dans l’ensemble.


Préparer le terrain avant d’écrire la première ligne de code

Structurer vos documents sources

Le reranking ne compense pas une mauvaise indexation de départ. Si vos documents sont mal découpés, les scores de pertinence seront peu fiables, même avec le meilleur modèle.

Quelques règles pratiques qui fonctionnent dans la plupart des contextes :

  • Chunks de 150 à 400 mots. En dessous, les chunks manquent de contexte pour être évalués correctement. Au-dessus, la pertinence se dilue.
  • Un sujet par chunk. Un paragraphe sur les délais de livraison et un autre sur la politique de retour ne devraient pas être dans le même chunk.
  • Texte brut de préférence. Les balises HTML, les en-têtes Markdown et les tableaux complexes dégradent les performances. Nettoyez avant d’indexer.
  • Métadonnées séparées. Titre, date, source : gardez-les dans un champ distinct, pas dans le texte du chunk lui-même.

Obtenir votre clé API Cohere

Créez un compte sur la plateforme Cohere. Une fois connecté, accédez à la section “API Keys” de votre tableau de bord, générez une clé, et stockez-la dans une variable d’environnement. Ne l’écrivez jamais en dur dans votre code source.

Cohere propose un quota gratuit suffisant pour les phases de test. Pour une utilisation en production, la facturation est basée sur le volume de requêtes.


Implémentation en Python avec LangChain

C’est l’approche la plus courante pour les équipes techniques qui construisent des pipelines RAG sur mesure.

import os
from langchain.retrievers import CohereRerank
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA

os.environ["COHERE_API_KEY"] = "votre-cle-cohere"
os.environ["OPENAI_API_KEY"] = "votre-cle-openai"

# Construction du vector store initial
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)

# Retriever de base : récupère 20 candidats
base_retriever = vectorstore.as_retriever(search_kwargs={"k": 20})

# Reranker : reclasse et retient les 5 meilleurs
reranker = CohereRerank(model="rerank-multilingual-v2.0", top_n=5)

# Chaîne QA complète
qa_chain = RetrievalQA.from_chain_type(
    llm=OpenAI(),
    retriever=base_retriever,
    return_source_documents=True
)

Le paramètre top_n mérite réflexion. En pratique :

  • top_n = 3 convient pour des questions précises avec une réponse bien localisée (numéro de contrat, date, définition).
  • top_n = 5 est un bon équilibre pour la majorité des usages métier.
  • top_n = 8 à 10 est utile si votre LLM a une fenêtre de contexte large et que la question nécessite plusieurs sources complémentaires.

Filtrer par score de pertinence

Retourner systématiquement les top_n documents sans vérifier leurs scores expose votre LLM à du contenu hors-sujet. Ajoutez un filtre :

def filtrer_par_score(resultats_rerank, seuil=0.3):
    return [
        r for r in resultats_rerank
        if r['relevance_score'] >= seuil
    ]

Si après filtrage il ne reste aucun document au-dessus du seuil, c’est un signal que la question dépasse la couverture de votre base documentaire. Votre LLM devrait alors répondre “je n’ai pas l’information” plutôt que d’halluciner.


Implémentation via appel API direct (sans framework)

Pour les équipes qui n’utilisent pas LangChain ou qui travaillent dans un environnement no-code comme n8n, l’appel direct à l’API Cohere est tout aussi simple.

Endpoint : POST https://api.cohere.ai/v1/rerank

Headers :

{
  "Content-Type": "application/json",
  "Authorization": "Bearer VOTRE_CLE_API"
}

Body :

{
  "query": "délais de résiliation dans les contrats de service",
  "documents": ["texte du doc 1", "texte du doc 2", "..."],
  "top_n": 5,
  "return_documents": true,
  "model": "rerank-multilingual-v2.0"
}

Réponse : une liste d’objets contenant index, relevance_score, et si return_documents: true, le texte complet du document. Les résultats sont déjà triés du plus pertinent au moins pertinent.

Dans un workflow n8n, ce bloc s’insère entre l’étape de recherche vectorielle et le nœud qui construit le prompt final pour le LLM.


Cas d’usage concrets en contexte PME

Cabinet d’avocats : analyse de contrats

Un cabinet analyse régulièrement des centaines de contrats pour identifier des clauses à risque. Sans automatisation, un associé passe plusieurs heures par contrat à chercher les clauses de résiliation, de responsabilité, ou de confidentialité.

Avec un pipeline RAG + Rerank :

  1. Les contrats sont découpés par type de clause et indexés.
  2. La requête (“clauses de résiliation abusives”) déclenche une recherche vectorielle qui remonte 30 fragments candidats.
  3. Rerank classe ces 30 fragments et retient les 5 les plus pertinents.
  4. Un LLM analyse ces fragments et génère un résumé des risques identifiés avec les références de page.

Ce type d’implémentation réduit sensiblement le temps de revue préliminaire, même si elle ne remplace pas le jugement juridique d’un professionnel.

Agence de recrutement : matching CV / fiche de poste

Une agence traite des centaines de CV par semaine. La question n’est pas “ce candidat a-t-il les mots-clés requis ?” mais “ce profil correspond-il réellement aux exigences du poste ?”

La recherche vectorielle seule tend à surclasser des CV qui partagent le vocabulaire de la fiche de poste sans en couvrir les compétences clés. Rerank, en analysant la relation entre la fiche et chaque CV de façon contextuelle, donne des classements plus fiables sur des profils non-standards mais qualifiés.

E-commerce : recherche produit en langage naturel

Un site avec 40 000 références reçoit des requêtes comme “quelque chose pour protéger mes meubles de jardin pendant l’hiver”. Une recherche par mots-clés retourne des résultats médiocres. Une recherche vectorielle fait mieux mais peut encore remonter des produits connexes peu utiles. Rerank affine le classement pour prioriser les housses de protection, les bâches et les produits d’entretien hivernaux plutôt que des articles vaguement liés au jardin.


Erreurs fréquentes qui ralentissent les déploiements

Dans notre travail d’implémentation de pipelines RAG pour des PME fondateur-dirigées, les blocages les plus courants ne sont pas techniques. Ils sont structurels.

Chunks trop volumineux. C’est l’erreur numéro un. Des documents de 2 000 mots envoyés à Rerank produisent des scores peu discriminants. La solution : revoir le pipeline de découpage avant de toucher à la configuration Rerank.

Pas de seuil de pertinence. Utiliser systématiquement les top_n documents sans vérifier leurs scores revient à laisser entrer du bruit dans le prompt. Un document avec un score de 0,08 n’a rien à faire dans le contexte d’un LLM.

Requêtes trop vagues. “Informations importantes” ou “données client” sont de mauvaises requêtes pour Rerank. Plus la requête est spécifique et proche du langage réel des utilisateurs, meilleurs sont les classements.

Absence de fallback. L’API Cohere, comme tout service externe, peut être indisponible. Si votre système ne gère pas ce cas, une indisponibilité de quelques minutes bloque l’ensemble du workflow. Implémentez un fallback sur la recherche vectorielle de base.

Pas de jeu de tests. Déployer sans jeu de tests préparé à l’avance empêche de mesurer objectivement l’impact du reranking. Préparez 50 à 100 paires question/réponse attendue avant de commencer. Vous en aurez besoin pour valider chaque ajustement de paramètre.


Mesurer l’impact : métriques à suivre dès le départ

Un déploiement de Rerank sans mesure n’est pas un déploiement, c’est une expérience. Définissez vos métriques avant la mise en production.

Précision sur jeu de tests : quel pourcentage de vos requêtes de test retournent le bon document en position 1 ou dans le top 3 ? Comparez avec et sans Rerank sur le même jeu.

Distribution des scores : si 80 % de vos résultats ont un score inférieur à 0,3, votre base documentaire ne couvre pas les questions posées, ou vos chunks sont mal structurés.

Latence bout en bout : le reranking ajoute une étape réseau. Sur des requêtes critiques, mesurez l’impact sur le temps de réponse total et ajustez le nombre de documents candidats envoyés à Rerank si nécessaire.

Taux de recours au fallback : si votre système bascule fréquemment sur la recherche vectorielle de base, investiguez la cause. Indisponibilité API ? Timeouts ?

Retours qualitatifs utilisateurs : un simple système pouce haut / pouce bas sur les réponses générées donne des signaux faibles précieux sur ce que les métriques quantitatives ne capturent pas.


Ce que cette architecture ne résout pas

Le reranking améliore la sélection de contexte. Il ne corrige pas un LLM mal configuré, un prompt trop permissif, ou une base documentaire obsolète.

Si vos documents sources contiennent des informations contradictoires ou périmées, Rerank remontera les documents les plus pertinents pour la requête, qu’ils soient justes ou non. La qualité des données en entrée reste le facteur limitant principal.

De même, Rerank ne remplace pas un système de gestion des droits d’accès. Si certains documents ne doivent pas être accessibles à certains utilisateurs, filtrez avant le reranking, pas après.


Pour aller plus loin

Le système Rerank de Cohere est un composant parmi d’autres dans une architecture RAG bien construite. Il résout un problème précis : améliorer la sélection du contexte transmis au LLM. Mais son efficacité dépend de la qualité du découpage documentaire en amont et de la clarté du prompt en aval.

Si vous voulez valider si cette approche s’applique à votre contexte spécifique, ou si vous cherchez à identifier à quel niveau de votre chaîne se situe réellement le problème de qualité, un audit technique préalable fait gagner beaucoup de temps.

Vous pouvez réserver un appel stratégie IA avec l’équipe de Basalt Studio ici : https://cal.com/eliott-ardisson-kzq7zs/ai-strategy-call