Cas d'usage

Citations : comment forcer une réponse sourcée

Une réponse IA sans source est une opinion, pas une information. Techniques de prompt engineering, post-processing et architecture RAG pour garantir que chaque affirmation est traçable vers un document identifié.

8 min de lecture
L'essentiel en 30 secondes

Pas de source, pas de confiance

Un assistant IA qui répond sans citer ses sources est une boîte noire. L'utilisateur ne peut pas distinguer une information fiable d'une hallucination. Dans un contexte juridique, réglementaire ou médical, une réponse non sourcée est un risque opérationnel. Les techniques pour forcer des citations fiables existent et sont matures : prompt engineering structuré, sortie JSON avec champs source obligatoires, et vérification automatique par NLI. Résultat : chaque affirmation de la réponse est traçable vers un document, une page et un passage précis. C'est la condition pour qu'un RAG entreprise soit adopté par les métiers et validé par la gouvernance IA.

L'IA générative sans citation est une opinion. L'IA générative avec citation vérifiable est une information exploitable.

Le problème

Votre assistant RAG génère des réponses fluides et convaincantes. Mais quand un utilisateur demande « D'où vient cette information ? », le système est muet. Ou pire : il invente une source plausible qui n'existe pas. Ce problème de traçabilité est le frein n°1 à l'adoption des assistants IA en entreprise.

Les conséquences concrètes d'une absence de citations :

  • Défiance des utilisateurs métier — Après une ou deux hallucinations non détectées, les utilisateurs abandonnent l'outil. Le taux d'adoption chute de 70% à 20% en quelques semaines. Le travail d'indexation et de développement est perdu.
  • Risque réglementaire — L'AI Act européen exige la transparence des systèmes IA à haut risque. Un assistant qui donne des conseils juridiques ou financiers sans citer ses sources expose l'entreprise à des sanctions. Les auditeurs exigent une traçabilité complète.
  • Impossibilité de corriger — Sans savoir quel document source a produit une mauvaise réponse, vous ne pouvez pas corriger le problème à la racine. Vous ne savez pas si l'erreur vient d'un document obsolète, d'un chunk mal découpé ou d'une hallucination du LLM.
  • Perte de valeur métier — Une réponse sourcée permet à l'utilisateur d'approfondir en consultant le document original. Sans citation, la réponse est une impasse — l'utilisateur doit quand même chercher manuellement pour valider l'information.

Nos audits montrent que 45% des réponses RAG sans mécanisme de citation contiennent au moins une affirmation non traçable. Avec un pipeline de citation structuré, ce taux tombe à 6%.

La solution IA

Forcer des citations fiables dans un RAG repose sur trois mécanismes complémentaires qui agissent à différents niveaux du pipeline.

📝

Prompt engineering structuré

Instruisez le LLM avec un prompt système qui exige des citations inline numérotées pour chaque affirmation. Fournissez les chunks récupérés avec des identifiants uniques ([Source-1], [Source-2]). Ajoutez une règle explicite : « Si aucun document ne répond à la question, dis-le clairement au lieu d'inventer. » Utilisez des few-shot examples pour montrer le format attendu.

🔗

Sortie structurée (JSON/XML)

Forcez le LLM à produire une sortie JSON avec des champs obligatoires : answer, sources (array avec doc_id, page, passage, confidence). Les structured outputs d'OpenAI et le mode JSON de Claude garantissent le respect du schéma. Le frontend affiche les sources comme des liens cliquables vers les documents originaux.

Vérification post-génération

Un pipeline de post-processing vérifie chaque citation : le passage cité existe-t-il dans le document référencé ? L'affirmation est-elle supportée par le passage (NLI) ? Les citations non vérifiées sont marquées d'un avertissement. Coût additionnel : 0.01 à 0.03$ par réponse. Gain : faithfulness > 0.95.

Mise en oeuvre

L'ajout de citations à un RAG existant prend 2 à 4 semaines. Chaque étape produit une amélioration mesurable de la traçabilité.

1

Refonte du prompt système (semaine 1)

Réécrivez votre prompt système pour exiger des citations. Numérotez les chunks fournis au LLM ([1], [2], [3]…). Ajoutez l'instruction : « Cite systématiquement la source entre crochets après chaque affirmation. Si tu ne trouves pas l'information dans les sources fournies, réponds : Je n'ai pas trouvé cette information dans la documentation disponible. » Testez avec 50 questions de votre Golden Set. Mesurez le taux de réponses avec au moins une citation.

2

Structured output + liens cliquables (semaines 2-3)

Passez à une sortie JSON structurée avec un schéma strict : { answer: string, citations: [{ claim: string, source_id: string, page: number, excerpt: string }] }. Développez le composant frontend qui transforme les citations en liens vers les documents originaux (pré-signés S3, SharePoint, Confluence). Testez l'expérience utilisateur avec 10 utilisateurs pilotes.

3

Vérification automatique (semaine 4)

Implémentez un pipeline de vérification post-génération. Pour chaque citation, un cross-encoder (ms-marco-MiniLM) vérifie que le passage source supporte l'affirmation (score NLI > 0.8). Les citations non vérifiées sont marquées d'un badge d'avertissement dans l'interface. Loggez les vérifications pour alimenter vos métriques de faithfulness. Ajoutez cette vérification aux tests de non-régression.

Résultats

Résultats mesurés après implémentation du pipeline de citations sur des RAG entreprise en production.

Faithfulness
Score passé de 0.72 à 0.96 grâce à la combinaison prompt + structured output + vérification NLI
Taux de citation
94% des réponses contiennent au moins une citation vérifiable, contre 12% avant implémentation
Adoption utilisateur
Taux d'utilisation quotidien passé de 23% à 67% des collaborateurs cibles en 8 semaines
Conformité
100% des réponses auditables et traçables, critère validé par le DPO et le comité de gouvernance IA

Questions fréquentes

Pourquoi les LLM ne citent-ils pas leurs sources par défaut ?

Les LLM génèrent du texte token par token en se basant sur des probabilités statistiques, pas sur un raisonnement documenté. Même dans un RAG, le modèle reçoit le contexte en entrée mais n'a pas de mécanisme natif pour lier chaque phrase générée au passage source correspondant. Il faut forcer ce comportement via le prompt (instruction explicite de citer), la structure de sortie (JSON avec champs source obligatoires) et un post-processing de vérification.

Quelle est la différence entre citation inline et citation en fin de réponse ?

La citation inline associe chaque affirmation à sa source directement dans le texte (ex : [Doc-A, p.12]). Elle offre une traçabilité maximale mais alourdit la lecture. La citation en fin de réponse liste les sources utilisées après le paragraphe. Elle est plus lisible mais ne permet pas de savoir quelle source supporte quelle affirmation. La meilleure approche combine les deux : citations inline numérotées [1][2] avec la liste complète des sources en fin de réponse.

Comment vérifier automatiquement que les citations sont correctes ?

Utilisez un pipeline de post-processing en 3 étapes : 1) Extrayez les citations de la réponse (regex ou parsing JSON). 2) Pour chaque citation, récupérez le passage source original et vérifiez par NLI (Natural Language Inference) que l'affirmation est bien supportée par le passage. 3) Marquez les citations non vérifiées avec un avertissement. Des outils comme Ragas (faithfulness metric) et DeepEval (hallucination metric) automatisent cette vérification.

Les citations ralentissent-elles la réponse du RAG ?

Le surcoût est minime pour le prompt engineering (quelques tokens supplémentaires dans l'instruction). Le post-processing de vérification ajoute 200 à 500ms par réponse si vous utilisez un LLM-as-Judge, ou 50ms si vous utilisez un modèle NLI léger (cross-encoder). Pour 95% des cas d'usage, ce surcoût est négligeable comparé au gain en fiabilité. Optimisez en vérifiant uniquement les réponses sur des sujets critiques.

Pour les profils tech

Architecture d'un pipeline de citation vérifié

L'implémentation technique repose sur trois couches : le prompt engineering avec structured output, le post-processing NLI, et le logging pour audit. L'ensemble s'intègre dans votre pipeline RAG existant sans refonte majeure.

Prompt système de référence (extrait) :

Le prompt doit contenir 4 éléments : (1) l'instruction de citation avec format exact, (2) la liste numérotée des sources avec leurs identifiants, (3) la règle de refus quand aucune source ne répond, et (4) au moins 2 few-shot examples montrant le format attendu (réponse avec citations inline + cas de refus).

Pipeline de vérification NLI :

  • Extraction des claims — Décomposez la réponse en affirmations atomiques via un LLM (coût : ~0.002$/réponse).
  • Matching source — Pour chaque claim, identifiez la source citée et récupérez le passage original.
  • Vérification NLI — Utilisez un cross-encoder (ms-marco-MiniLM-L-12-v2 ou nli-deberta-v3-large) pour scorer l'entailment entre le passage source et le claim. Seuil : > 0.8 = vérifié, 0.5-0.8 = incertain, < 0.5 = non supporté.
  • Marquage — Les claims non vérifiés sont annotés dans la réponse finale. Les logs alimentent les métriques de faithfulness.

Comparatif des approches de citation

CritèrePrompt + JSON + NLIPrompt seulPost-hoc attribution
Faithfulness0.960.780.92
Taux de citation94%65%100%
Latence ajoutée+300ms+0ms+800ms
Coût additionnel0.02$/réponse0$/réponse0.05$/réponse
ComplexitéMoyenneFaibleÉlevée

Et si on commençait par en parler ?

Pas de commercial agressif. Pas de formulaire en 12 étapes. Juste 30 minutes pour comprendre votre situation et voir si on peut vous aider. Premier échange gratuit et sans engagement.