Citations et grounding
Comment vérifier qu'une réponse générée par un système RAG est réellement ancrée dans les passages récupérés, comment citer ses sources de façon fiable, et quand refuser de répondre plutôt que d'inventer.
Table des matières
Le grounding n'est pas un sous-produit automatique du RAG
Une idée reçue circule souvent autour du RAGRAGIATechnique consistant à rechercher les documents pertinents et à les fournir au modèle dans son contexte. Elle permet des réponses à jour et citables, ce que l'affinage ne permet pas.Voir dans le glossaire : puisque le système récupère des passages avant de générer une réponse, cette réponse serait par construction ancrée dans les sources. C'est faux, et c'est une des confusions les plus coûteuses en production. Le retrieval garantit seulement qu'un contextefenêtre de contexteIAQuantité de texte qu'un modèle peut prendre en compte simultanément : question, documents fournis et historique. Au-delà, les éléments les plus anciens sortent du champ.Voir dans le glossaire pertinent est disponible au moment de la génération — il ne garantit rien sur ce que le LLMLLMIAGrand modèle de langage (Large Language Model) entraîné sur d'énormes corpus pour prédire et générer du texte.Voir dans le glossaire en fera. Rien n'empêche structurellement le modèle d'ignorer un passage, de le déformer légèrement, de mélanger deux passages de façon incohérente, ou de combler une lacune du contexte avec une information plausible qui n'y figure pas.
Le grounding (ancrage) désigne précisément cette propriété qu'il faut vérifier et non supposer : chaque affirmation contenue dans la réponse générée est-elle effectivement soutenue par un passage du contexte fourni ? Un système RAG qui récupère parfaitement les bons passages mais ne vérifie jamais ce que le LLMgrand modèle de langageIAModèle entraîné à prédire le token suivant d'une séquence de texte. Toutes ses capacités apparentes — résumer, traduire, coder — découlent de cette unique tâche.Voir dans le glossaire en fait reste exposé au même risque d'hallucinationhallucinationIAProduction par un modèle d'un énoncé faux formulé avec la même assurance qu'un fait établi. Le phénomène est structurel : le modèle optimise la vraisemblance, pas la vérité.Voir dans le glossaire qu'un LLM nu, simplement rendu moins visible par la présence rassurante de sources en apparence pertinentes.
Fournir un contexte pertinent diminue statistiquement la fréquence des inventions, parce que le modèle dispose d'une information à restituer plutôt qu'à générer de toutes pièces. Mais rien dans l'architecture ne force le modèle à s'y tenir. Sans mécanisme de vérification explicite, une réponse RAG peut être fausse tout en semblant mieux justifiée qu'une réponse d'un LLM sans contexte, ce qui la rend paradoxalement plus dangereuse pour un utilisateur qui lui accorde une confiance accrue.
Citer une source : ce que ça veut dire concrètement
Afficher une liste de documents source à la fin d'une réponse n'est pas une citation au sens fonctionnel du terme — c'est une bibliographie. Une bibliographie confirme que des documents ont été récupérés, pas que chaque affirmation de la réponse en découle réellement. La différence est cruciale : un utilisateur qui voit trois sources citées en bas de page suppose, à tort la plupart du temps, que l'ensemble de la réponse est couvert par ces trois documents, alors qu'en pratique seule une partie de la réponse peut réellement s'y trouver.
Une citation fonctionnelle établit un lien précis entre une portion de texte générée et le passage exact qui la justifie. On distingue deux grandes familles d'approches pour produire ce lien.
Citation extractive
L'approche extractive limite la génération à un assemblage de segments directement issus des passages récupérés, avec un pointeur explicite vers leur origine. Le modèle ne « rédige » pas au sens propre : il sélectionne, ordonne et relie des extraits déjà présents dans le contexte, chacun associé à son identifiant de source. Cette approche offre la garantie de grounding la plus forte possible, puisqu'aucun texte affiché n'est produit hors des sources — mais au prix d'une fluidité de lecture nettement dégradée, et d'une incapacité à synthétiser une information qui nécessite de combiner plusieurs passages en une phrase cohérente.
Citation générative avec attribution au niveau du span
L'approche dominante en production laisse le LLM rédiger librement une réponse fluide, tout en lui demandant explicitement d'insérer des marqueurs de citation (par exemple [1], [2]) après chaque affirmation, chaque marqueur renvoyant à l'identifiant du passage source. C'est l'approche la plus lisible pour un utilisateur, mais elle repose entièrement sur la fiabilité du modèle à s'auto-attribuer correctement — un modèle peut très bien insérer un marqueur [2] après une affirmation qui provient en réalité du passage [1], ou qui ne provient d'aucun des deux.
Demander au modèle d'ajouter des marqueurs de citation dans son promptpromptIAConsigne ou contexte fourni à un modèle de langage pour orienter sa réponse. La qualité du prompt conditionne souvent la qualité du résultat.Voir dans le glossaire système améliore la lisibilité de la réponse, mais ne garantit strictement rien sur l'exactitude de l'attribution. Le modèle peut produire une citation syntaxiquement correcte et sémantiquement fausse, avec la même assurance qu'une citation exacte. Aucune inspection manuelle systématique n'étant possible à l'échelle de la production, cette confiance non vérifiée est une source d'erreur silencieuse et difficile à détecter a posteriori.
C'est pour combler cet écart entre citation générée et citation fiable qu'un système RAG de production sérieux ajoute une étape de vérification distincte de la génération elle-même.
Vérifier le grounding : le rôle de l'entailment
La vérification du grounding s'appuie généralement sur des techniques issues du NLI (Natural Language Inference), un domaine du traitement automatique des langues qui évalue la relation logique entre deux énoncés : un texte source implique-t-il (entailment), contredit-il (contradiction), ou est-il neutre vis-à-vis d'une affirmation donnée ?
Appliqué au grounding, le principe consiste à découper la réponse générée en affirmations atomiques (une affirmation vérifiable à la fois), puis à soumettre chaque paire (affirmation, passage cité) à un modèle de vérification — souvent un modèle plus petit et spécialisé que le LLM générateur, entraîné ou prompté spécifiquement pour ce jugement d'entailment. Le résultat attendu pour chaque paire est l'une de ces trois catégories.
| Verdict | Signification | Action recommandée |
|---|---|---|
| Entailment | Le passage cité soutient effectivement l'affirmation | Conserver la citation telle quelle |
| Neutre | Le passage n'infirme pas l'affirmation mais ne la soutient pas explicitement | Signaler comme non vérifiée, retirer ou reformuler la citation |
| Contradiction | Le passage cité contredit l'affirmation générée | Bloquer la réponse ou déclencher une régénération |
Cette vérification affirmation par affirmation, plutôt qu'un jugement global sur l'ensemble de la réponse, est essentielle : une réponse peut être globalement bien ancrée sur 80 % de son contenu tout en comportant une affirmation isolée non soutenue, potentiellement la plus importante pour l'utilisateur (un chiffre, une date, une condition d'éligibilité). Un score global masquerait ce défaut ponctuel ; un score par affirmation le rend visible et actionnable.
Un utilisateur demande la durée du préavis de résiliation. Le passage récupéré indique : « le préavis est de 30 jours pour les contrats souscrits après janvier 2024 ». Le LLM génère : « le préavis de résiliation est de 15 jours [1] ». Un module d'entailment confronté à la paire (affirmation, passage) renvoie un verdict de contradiction, pas de neutralité — le passage ne se contente pas de ne rien dire sur la durée, il affirme explicitement une valeur différente. Ce cas doit systématiquement bloquer la réponse plutôt que d'être classé comme simple absence de source.
Le refus comme fonctionnalité de production
Un système qui ne sait jamais dire « je ne sais pas » finira, statistiquement, par répondre à côté avec assurance sur les questions pour lesquelles le corpus ne contient pas d'information exploitable. Le refus calibré — la capacité à ne pas répondre, ou à répondre en signalant explicitement l'incertitude — n'est pas un aveu d'échec du système : c'est une fonctionnalité à concevoir et à tester au même titre que le retrieval ou la génération.
Le déclenchement du refus s'appuie typiquement sur une combinaison de signaux :
- Score de retrieval trop faible. Si le meilleur passage récupéré a un score de similarité ou un rang de fusion très en dessous du seuil habituel, il est probable qu'aucun passage pertinent n'existe dans le corpus pour cette requête.
- Score de grounding insuffisant après génération. Même avec un retrieval correct, si la vérification par entailment ne parvient pas à confirmer les affirmations centrales de la réponse, mieux vaut refuser que publier une réponse non vérifiée.
- Détection de contradiction entre passages. Si deux passages récupérés se contredisent (une documentation obsolète et une version à jour coexistant dans l'index, par exemple), une réponse tranchée serait arbitraire ; signaler l'ambiguïté est préférable à un choix silencieux entre les deux versions.
- Requête hors périmètre du corpus. Une question portant sur un sujet que le corpus ne couvre structurellement pas (par exemple une question médicale posée à un assistant de documentation logicielle) doit être détectée et redirigée, pas traitée comme une absence temporaire de résultat.
Ce mécanisme comporte cependant un risque symétrique bien documenté en production : le sur-refus. Un seuil de grounding calibré trop strict, ou une détection de hors-périmètre trop agressive, conduit le système à refuser de répondre à des questions parfaitement couvertes par le corpus, ce qui dégrade l'expérience utilisateur de façon tout aussi réelle qu'une hallucination, quoique moins visible dans les métriques de sécurité.
Un taux de refus trop bas expose à l'hallucination silencieuse ; un taux de refus trop élevé rend le système inutilisable en pratique. L'objectif n'est ni de minimiser ni de maximiser ce taux dans l'absolu, mais de le calibrer contre un golden set annoté distinguant les questions auxquelles le système doit répondre de celles auxquelles il doit refuser — puis de mesurer séparément le taux de faux refus (questions couvertes mais refusées) et le taux de faux positifs (questions non couvertes mais traitées comme si elles l'étaient).
Formuler un refus utile
Un refus mal formulé (« Je ne peux pas répondre à cette question ») frustre l'utilisateur sans lui donner de moyen d'agir. Un refus bien conçu distingue plusieurs cas et adapte sa formulation :
- Absence d'information dans le corpus — le signaler explicitement et, si possible, orienter vers un autre canal (support humain, documentation externe).
- Ambiguïté de la requête — demander une clarification plutôt que de deviner l'intention et de répondre à côté.
- Grounding partiel — répondre à la partie vérifiée de la question et signaler explicitement la partie non couverte, plutôt que de tout bloquer ou de tout accepter en bloc.
- Information potentiellement obsolète — répondre en signalant la date ou la version du document source, pour laisser l'utilisateur juger de la pertinence temporelle.
En production, une réponse à une question composite (« quelles sont les conditions de garantie et le délai de rétractation ? ») peut être bien ancrée sur la première partie et non vérifiée sur la seconde, si un seul des deux sujets est couvert par le corpus indexé. Bloquer l'intégralité de la réponse par prudence prive l'utilisateur d'une information par ailleurs fiable ; répondre en bloc sans distinction expose une affirmation non vérifiée. Le traitement affirmation par affirmation permet précisément d'éviter ce choix binaire.
Mesurer le grounding et l'attribution
Comme pour le retrieval, la qualité du grounding ne se suppose pas, elle se mesure, idéalement sur un jeu d'évaluation annoté avec les réponses attendues et leurs sources de référence.
- Faithfulness (fidélité) mesure la proportion d'affirmations de la réponse générée qui sont effectivement soutenues par le contexte fourni, indépendamment de la présence ou non de marqueurs de citation. C'est la métrique la plus proche de la définition même du grounding.
- Citation precision mesure, parmi les citations présentes dans la réponse, la proportion qui pointe effectivement vers un passage qui soutient l'affirmation associée. Une précisionprécisionIAProportion des alertes émises par un modèle qui sont justifiées. Elle s'oppose au rappel : améliorer l'une dégrade l'autre.Voir dans le glossaire faible signale un modèle qui cite abondamment mais mal — le pire des cas, car il donne une fausse impression de rigueur.
- Citation recallrappelIAProportion des cas positifs réels effectivement détectés par un modèle. Sur un jeu déséquilibré, c'est un indicateur bien plus parlant que l'exactitude globale.Voir dans le glossaire mesure, parmi les affirmations qui auraient dû être citées, la proportion qui l'est effectivement. Un recall faible signale des affirmations non sourcées, potentiellement plus difficiles à détecter pour l'utilisateur qu'une citation simplement erronée.
- Answer relevancy évalue si la réponse traite effectivement la question posée, indépendamment de son grounding — une réponse peut être parfaitement fidèle aux sources tout en étant hors sujet si le retrieval a récupéré des passages non pertinents.
Ces quatre métriques sont complémentaires et doivent être suivies ensemble : une faithfulness élevée avec une citation precision faible indique que le contenu est globalement correct mais mal attribué ; l'inverse, rare mais possible, indiquerait des citations formellement correctes sur un contenu par ailleurs inventé.
Pièges fréquents en production
- Confondre présence de sources et grounding vérifié. Afficher une liste de documents récupérés en bas de réponse ne dit rien sur ce que le LLM en a réellement retenu ; sans vérification par affirmation, cette liste rassure à tort.
- Vérifier le grounding au niveau de la réponse entière plutôt qu'affirmation par affirmation. Un score global masque les erreurs localisées sur les affirmations les plus sensibles (chiffres, dates, conditions), précisément celles où une erreur coûte le plus cher.
- Calibrer le seuil de refus une seule fois puis ne plus jamais le revisiter. La distribution des requêtes évolue avec les usages réels ; un seuil pertinent au lancement peut devenir trop strict ou trop laxiste après plusieurs mois sans être jamais réévalué sur des donnéesdonnéesIAEnsemble d'informations structurées ou non utilisées pour entraîner, évaluer ou alimenter un modèle. La qualité, la quantité et la représentativité des données sont les facteurs décisifs pour les performances en apprentissage automatique.Voir dans le glossaire de production fraîches.
- Ignorer le sur-refus dans les métriques de qualité. Une équipe qui ne mesure que le taux d'hallucination et jamais le taux de faux refus optimise vers un système prudent jusqu'à l'inutilité, sans que ce coût soit visible dans les tableaux de bord habituels.
- Traiter la contradiction entre passages comme une absence de contradiction. Deux versions d'un même document coexistant dans l'index (ancienne et nouvelle politique tarifaire, par exemple) peuvent produire une réponse tranchée arbitrairement en faveur de l'une, sans qu'aucun signal n'alerte sur l'ambiguïté sous-jacente.
- Ne jamais auditer manuellement un échantillon de citations en production. Les métriques automatiques (NLI, faithfulness) sont elles-mêmes imparfaites ; un audit humain périodique sur un échantillon reste nécessaire pour calibrer la confiance accordée aux vérificateurs automatiques.
Checklist avant mise en production
- Chaque affirmation de la réponse générée est vérifiée individuellement contre son passage cité, pas seulement la réponse dans son ensemble.
- Un module de vérification par entailment (NLI) distinct du LLM générateur confirme, infirme ou signale comme neutre chaque paire affirmation-passage.
- Un score de grounding agrégé, calculé à partir des verdicts par affirmation, détermine si la réponse est publiée telle quelle, corrigée, ou remplacée par un refus.
- Le mécanisme de refus distingue explicitement absence d'information, ambiguïté de la requête et grounding partiel, plutôt qu'un message générique unique.
- Un golden set annoté permet de mesurer séparément le taux de faux refus et le taux de faux positifs, pas seulement le taux de refus global.
- Les métriques faithfulness, citation precision et citation recall sont suivies en continu, pas uniquement lors de la phase de validation initiale.
- Un audit humain périodique porte sur un échantillon de réponses citées en production, pour calibrer la confiance accordée aux vérificateurs automatiques.
- Le cas de contradiction entre passages récupérés est explicitement géré, distinct du cas d'absence de passage pertinent.
L'essentiel à retenir
Ce chapitre traite du dernier verrou avant la mise en production d'un système RAG : s'assurer que ce qui est affiché à l'utilisateur est effectivement soutenu par les passages récupérés, et pas seulement plausible. Il distingue le grounding réel de la citation cosmétique, détaille les deux grandes familles de mécanismes d'attribution — extractive et générative — et explique comment un module de vérification par entailment (NLI) permet de calculer un score de grounding affirmation par affirmation. Il aborde ensuite le refus comme une fonctionnalité de production à part entière, avec ses risques symétriques de sur-refus et de sous-refus, ainsi que les métriques (faithfulness, citation precision, citation recall) qui permettent de mesurer objectivement ces propriétés. Le chapitre se termine par les pièges les plus fréquents et une checklist de validation avant mise en ligne.
Questions fréquentes
Un système RAG qui cite ses sources peut-il quand même halluciner ?
Faut-il toujours utiliser un modèle NLI séparé pour vérifier le grounding, ou le LLM générateur peut-il s'auto-vérifier ?
Comment calibrer le seuil de score de grounding qui déclenche un refus ?
La citation extractive n'est-elle pas plus sûre que la citation générative dans tous les cas ?
Que faire quand deux passages récupérés se contredisent ?
Le taux de refus doit-il être identique pour tous les domaines d'application ?
Pourquoi mesurer la faithfulness séparément de l'answer relevancy ?
Un audit humain reste-t-il nécessaire si les métriques automatiques de grounding sont bonnes ?
Progression sauvegardée dans votre navigateur.
Quiz de validation
Quiz Player
Quiz de validation
Plusieurs réponses possibles — validez ensuite.
Vrai ou faux.
Quiz indisponible (données invalides).