Aller au contenu

ComprendreNiveau 3, Construire14 minutes

Le RAG avancé

Quand un assistant sur vos documents répond faux, il faut d'abord regarder les passages que la recherche lui a rapportés. Trois réglages la rendent nettement plus sûre : chercher à la fois par les mots et par le sens, donner à chaque passage son contexte, faire relire les candidats par un modèle de reclassement. Et une règle : mesurer la recherche à part de la réponse.

Écrit le 9 octobre 2026 · Vérifié le 9 octobre 2026

Vous saurez

  • Expliquer ce qu'apportent la recherche mixte, le contexte des passages et le reclassement
  • Calculer une fusion de classements
  • Mesurer une recherche par le rappel, et une réponse par sa fidélité
  • Décider quel réglage essayer d'abord, et comment savoir s'il a servi
Sur cette page
  1. L'essentiel
  2. Problème
  3. Principe
  4. Fonctionnement
  5. Exemple détaillé
  6. Risques
  7. Mise en place
  8. Exercice
  9. Vérification
  10. Lectures suivantes
L'essentiel
  1. Une réponse ne peut pas être meilleure que les passages que la recherche rapporte : quand l'assistant se trompe, regardez d'abord ce qu'elle lui a donné.
  2. La recherche mixte lance deux recherches, par les mots et par le sens, et fusionne leurs classements : les numéros et les noms exacts ne se perdent plus.
  3. Le reclassement fait relire les meilleurs candidats par un second modèle, qui garde les plus pertinents ; il ajoute un délai et un coût à chaque question.
  4. Dans les tests publiés par Anthropic en 2024, ces réglages ensemble font passer les recherches qui échouent de 5,7 % à 1,9 %.
  5. On mesure la recherche à part de la réponse : sinon, on ne sait pas ce qu'il faut corriger.
1

Problème

Un salarié demande le préavis du contrat MX-200. La réponse dit trois mois ; c'est deux depuis l'avenant de l'an dernier. Le modèle de langage n'a rien inventé : il a résumé fidèlement les passages qu'on lui a donnés, et l'avenant n'en faisait pas partie. Dans un RAG, une réponse ne peut pas être meilleure que les passages que la recherche lui rapporte.

Les deux recherches de base ont chacune leur angle mort. Par le sens, l'outil rate un terme exact, un numéro de contrat ou un code d'erreur ; par les mots, il rate une même idée dite autrement. Un passage coupé de son document perd aussi ce qui le situait : « le préavis passe à deux mois » ne dit plus de quel contrat il s'agit.

La part des recherches qui échouent, étape par étape

0 %1 %2 %3 %4 %5 %6 %Recherche par le sens seuleles passages tels quels5,7 %Avec le contexte ajouté aux passagesrecherche par le sens3,7 %Avec, en plus, la recherche par motssur les passages avec leur contexte2,9 %Avec, en plus, le reclassement150 candidats, 20 gardés1,9 %
Part des questions dont le passage utile ne figure pas parmi les 20 premiers résultats, en moyenne sur plusieurs domaines, avec le modèle d'embeddings le meilleur de ces tests (Gemini Text 004) ; le reclassement par le modèle de Cohere. Une mesure de l'éditeur, Anthropic, publiée en septembre 2024 : elle montre l'ordre de grandeur de chaque étape, pas ce qu'elle donnera sur vos documents.
Voir en tableau
Valeurs du graphique : Problème
ÉtapeRecherches qui échouentÉchecs en moins
Recherche par le sens seule5,7 %départ
Avec le contexte ajouté aux passages3,7 %35 %
Avec, en plus, la recherche par mots2,9 %49 %
Avec, en plus, le reclassement1,9 %67 %

Source : Anthropic, « Introducing Contextual Retrieval », 19 septembre 2024, relu le 9 octobre 2026.

2

Principe

La recherche mixte. On lance les deux recherches sur la même question et on fusionne les deux classements en un seul. La fusion la plus répandue, la Reciprocal Rank Fusion, ne regarde que les rangs : un passage bien placé dans les deux listes passe devant un passage premier dans une seule. C'est ce que fait la recherche dans les fichiers d'OpenAI, et ce que documente pgvector avec la recherche plein texte de PostgreSQL.

Le contexte des passages. Avant de ranger un passage, on lui ajoute quelques lignes qui disent d'où il vient : le document, la partie, l'objet. Anthropic fait écrire ces lignes par un modèle, 50 à 100 tokens par passage, et les ajoute avant les deux recherches.

Le reclassement. Les deux recherches sont rapides parce qu'elles comparent des index. Un modèle de reclassement est plus lent mais plus fin : il lit la question et chaque candidat ensemble, et note leur pertinence. On le réserve donc aux meilleurs candidats ; Anthropic en reclasse 150 pour en garder 20.

3

Fonctionnement

La chaîne d'un RAG avancé : la question part dans une recherche par mots et une recherche par le sens ; les deux classements fusionnent en une liste de candidats ; un modèle de reclassement garde les meilleurs ; la réponse cite ces passages. À l'indexation, chaque passage reçoit son contexte.
  1. À l'indexation, une fois par document : découper en passages courts, de quelques centaines de tokens, qui gardent leur titre ; leur ajouter leur contexte ; les ranger dans deux index, l'un par le sens, l'autre par les mots.
  2. Le filtre, à chaque question : écarter d'abord ce que la personne n'a pas le droit de lire, ou ce qui n'est pas du bon type, par les métadonnées des documents.
  3. Les deux recherches rapportent chacune leurs meilleurs passages, quelques dizaines à 150.
  4. La fusion en fait une seule liste de candidats, sans doublons.
  5. Le reclassement note chaque candidat avec la question et garde les meilleurs. Anthropic obtient de meilleurs résultats en donnant 20 passages au modèle plutôt que 10 ou 5.
  6. La réponse s'écrit sur ces passages, et les cite.
4

Exemple détaillé

La question : « Quel est le préavis pour résilier le contrat de maintenance MX-200 ? ». Six passages de la base, fabriqués pour l'exemple, avec leur rang dans chaque recherche. La fusion donne à chaque passage la somme de 1 / (60 + rang) sur les deux classements ; 60 est la valeur de l'article qui a proposé la méthode en 2009, qui la dit peu critique. Les scores sont multipliés par 1 000 pour se lire.

Exemple détaillé
PassagePar motsPar le sensFusionRang fusionnéReclassement
A Contrat de maintenance MX-200, article 9 : la résiliation se fait avec un préavis de trois mois.2332,001/(60 + 2) + 1/(60 + 3)10,94 · gardé
B Conditions générales d'achat : un contrat de maintenance se résilie par lettre recommandée, trois mois avant l'échéance.6231,281/(60 + 6) + 1/(60 + 2)20,78 · gardé
C Fiche produit MX-200 : dimensions, consommation, garantie.1831,101/(60 + 1) + 1/(60 + 8)30,12
E Avenant de 2025 au contrat MX-200 : le préavis de résiliation passe à deux mois.4531,011/(60 + 4) + 1/(60 + 5)40,91 · gardé
D Procédure interne : mettre fin à un engagement avec un prestataire.9130,891/(60 + 9) + 1/(60 + 1)50,41
F Liste des contrats de maintenance en cours, par fournisseur.3730,801/(60 + 3) + 1/(60 + 7)60,08

Exemple fabriqué : les passages, les rangs et les notes du reclassement sont inventés pour montrer le calcul ; le calcul de la fusion, lui, est exact. Les rangs manquants (7, 8 par mots ; 4, 6 par le sens) sont d'autres passages de la base.

Ce que fait la fusion. La fiche produit C arrive première par mots, parce qu'elle répète « MX-200 », et huitième par le sens. La procédure D arrive première par le sens et neuvième par mots. Aucune des deux ne répond. La fusion remonte A, présente en bonne place dans les deux listes, et elle garde B ; mais C reste troisième et l'avenant E, qui change la réponse, n'est que quatrième.

Ce que fait le reclassement. Le modèle de reclassement relit la question avec chaque candidat et lui donne une note de pertinence. Il garde A, E et B, et écarte la fiche produit. La réponse peut alors dire : trois mois selon le contrat, ramenés à deux par l'avenant de 2025, en citant les deux passages. Avec les trois premiers de la fusion seule, l'avenant manquait, et la réponse aurait été fausse.

5

Risques

Risques
RisqueCe qui se passeLa parade
Régler sans mesurerUn réglage qui aide sur un document en dégrade un autre, et personne ne le voitUn jeu de questions fixe, mesuré avant et après chaque changement
Juger la recherche sur la réponseUne réponse fausse peut venir d'un passage manquant ou d'un modèle qui a mal lu ; on corrige le mauvais étageDeux mesures séparées : le rappel pour la recherche, la fidélité pour la réponse
Le délai du reclassementUne étape de plus à chaque question ; plus on reclasse de candidats, plus elle coûte et plus elle tardeEssayer plusieurs nombres de candidats sur vos questions, et garder le plus petit qui tient le rappel
Le coût du contexteUn appel de modèle par passage à l'indexation, à refaire quand le document change ; 1,02 $ par million de tokens de documents dans le calcul d'Anthropic de 2024, avec Claude 3 Haiku et la mise en cacheLe faire sur les documents stables ; refaire le contexte d'un document seulement quand il change
Le document périmé bien classéLe reclassement juge la pertinence, pas la date : un ancien contrat pertinent reste en têteRetirer les versions remplacées de l'index : une base de fiches
Une limite cachée du reclassementCohere compte une recherche par question et par tranche de 100 documents, et découpe tout document de plus de 500 tokens, question comprise, en plusieurs documentsLire les limites et l'unité de facturation de l'éditeur avant de fixer la taille des passages
6

Mise en place

  1. Écrire le jeu de questions avant de toucher à quoi que ce soit : des questions réelles, chacune avec le passage où se trouve la réponse, et la réponse attendue. Anthropic conseille beaucoup de questions notées par un programme plutôt que quelques-unes notées à la main. La méthode : les jeux de tests.
  2. Mesurer la recherche seule : le rappel à k, la part des questions dont le passage attendu figure parmi les k premiers résultats. Anthropic mesure à 20 ; prenez le nombre de passages que vous donnez vraiment au modèle.
  3. Ajouter la recherche par mots, puis mesurer. Ce réglage n'ajoute aucun appel de modèle, quand l'outil ne le fait pas déjà.
  4. Ajouter le reclassement, puis mesurer le rappel et le délai d'une question.
  5. Ajouter le contexte des passages si le rappel reste insuffisant, en sachant qu'il faut réindexer.
  6. Mesurer la réponse à part : la fidélité, part des affirmations de la réponse que les passages appuient, de 0 à 1 ; le rappel du contexte demande la réponse de référence du jeu de questions.
Mise en place
PourCe que l'éditeur documente
Une recherche mixte sans serveur à soiOpenAI, la recherche dans les fichiers : déjà mixte, avec un réglage du poids des mots et du sens dans la fusion, et un seuil de score
Une recherche mixte dans votre basepgvector et la recherche plein texte de PostgreSQL, fusionnées par Reciprocal Rank Fusion ou par un modèle de reclassement
Un reclassement par APICohere : rerank-v4.0-pro et rerank-v4.0-fast, multilingues, et rerank-v3.5 ; Voyage AI : rerank-3 et rerank-3-lite, 0,05 $ et 0,02 $ par million de tokens, au relevé du 7 octobre 2026
La mesureragas 0.4.3, bibliothèque libre sous licence Apache 2.0 : la précision et le rappel du contexte, la fidélité de la réponse

La fusion et le rappel à k tiennent en quelques lignes, sans bibliothèque. Le programme ci-dessous reprend l'exemple de la page ; il n'appelle aucun modèle.

rag_avance_fusion.py
# Fusion de deux classements (Reciprocal Rank Fusion) et rappel à k.
# Données fabriquées pour l'exemple de la page : les passages A à F, et d'autres passages de la base.

def fusionner(*classements, k=60):
    """Chaque classement est une liste d'identifiants, le meilleur d'abord.
    Score d'un passage : somme de 1 / (k + rang) sur les classements où il figure."""
    scores = {}
    for classement in classements:
        for rang, pid in enumerate(classement, start=1):
            scores[pid] = scores.get(pid, 0.0) + 1.0 / (k + rang)
    return sorted(scores.items(), key=lambda x: x[1], reverse=True)

def rappel_a_k(resultats, attendus, k):
    """Part des questions dont le passage attendu figure parmi les k premiers résultats."""
    trouves = sum(1 for q, attendu in attendus.items() if attendu in resultats[q][:k])
    return trouves / len(attendus)

par_mots = ["C", "A", "F", "E", "G", "B", "H", "I", "D"]
par_sens = ["D", "B", "A", "J", "E", "K", "F", "C"]

for pid, score in fusionner(par_mots, par_sens)[:6]:
    print(f"{pid}  {score:.5f}")

# Trois questions de test, chacune avec le passage qui contient la réponse.
resultats = {"q1": ["C", "A", "F"], "q2": ["B", "D", "E"], "q3": ["F", "C", "B"]}
attendus = {"q1": "A", "q2": "E", "q3": "D"}
print("rappel à 1 :", round(rappel_a_k(resultats, attendus, 1), 2))
print("rappel à 3 :", round(rappel_a_k(resultats, attendus, 3), 2))
La sortiepython3 rag_avance_fusion.py
A  0.03200B  0.03128C  0.03110E  0.03101D  0.03089F  0.03080rappel à 1 : 0.0rappel à 3 : 0.67

Essayé le 9 octobre 2026 avec Python 3.12, sur les données fabriquées de l'exemple.

Sur trois questions, le passage attendu n'arrive jamais premier, mais deux fois parmi les trois premiers : rappel à 1 de 0, rappel à 3 de 0,67. Si le modèle reçoit trois passages, c'est le second chiffre qui compte.

7

Exercice

Une autre question, d'autres passages fabriqués. Par mots, l'ordre est P, Q, R, S ; par le sens, R, S, T, P. Calculez la fusion avec k = 60 : quels sont les trois premiers ?

Ouvrir la correction

Les scoresR : 1/63 + 1/61, soit 32,27 pour mille. P : 1/61 + 1/64, soit 32,02 pour mille. S : 1/64 + 1/62, soit 31,75 pour mille. Q : 1/62, soit 16,13 pour mille. T : 1/63, soit 15,87 pour mille.

Le classementR, P, S. Q et T, présents dans une seule liste, passent derrière, même Q qui était deuxième par mots.

Ce qu'il faut retenirLa fusion récompense l'accord entre les deux recherches ; un passage premier dans une seule liste ne gagne pas d'office.

8

Vérification

1ComprendrePourquoi combiner la recherche par mots et la recherche par le sens ?

Parce que chacune rate ce que l'autre trouve : les mots trouvent les termes exacts, un numéro ou un nom, et ratent les reformulations ; le sens trouve les reformulations et rate les termes exacts.

2AppliquerVotre assistant donne une réponse fausse. Quelle est la première chose à regarder ?

Si le passage qui contient la bonne réponse figurait parmi ceux donnés au modèle. S'il manquait, c'est la recherche qu'il faut corriger ; s'il y était, c'est la lecture du modèle, ou la demande.

3ComprendrePourquoi ne pas reclasser tous les passages de la base ?

Parce que le modèle de reclassement lit chaque passage avec la question : c'est fin, mais lent et payant. On le réserve aux meilleurs candidats des deux recherches rapides.

9

Lectures suivantes

Les pages qui renvoient ici

Limites et sources

Le graphique reprend une mesure d'Anthropic, de 2024, sur ses propres jeux de questions, avec des modèles de cette époque : il montre ce que chaque étape peut apporter, pas ce qu'elle apportera sur vos documents.

L'exemple détaillé et l'exercice portent sur des passages fabriqués ; les notes de reclassement de l'exemple sont inventées, le calcul de la fusion est exact. Les noms et prix des modèles de reclassement sont ceux relevés le 7 octobre 2026.

  1. Anthropic, Introducing Contextual Retrieval, 19 septembre 2024 ; Cormack, Clarke et Büttcher, Reciprocal Rank Fusion, SIGIR 2009.
  2. OpenAI, Retrieval ; pgvector ; Cohere, Rerank ; Cohere, Pricing ; Voyage AI, Rerankers.
  3. ragas, les mesures ; Faithfulness ; Context Recall ; Anthropic, Define success criteria and build evaluations.
  4. Le relevé : apprendre/recherches/2026-10-07-rag-technique.json.

Écrit par Meridal, avec l'aide de l'IA ; chaque fait vérifié à sa source et relu avant publication. Texte et schémas sous licence CC BY 4.0 : reprenez-les en citant Meridal. Le code sous licence MIT.

Service correspondant

Un assistant qui connaît votre entreprise

3 300 € à 10 200 €, puis sur devis

Voir le service

Un premier échange de 30 minutes

En visio et sans frais : vous décrivez votre situation, nous vous indiquons ce qui est réalisable, avec quels outils et pour quel ordre de prix. Vous pouvez aussi nous écrire ; chaque message reçoit une réponse écrite.