Une hallucination est une affirmation présentée comme valide sans support suffisant. Elle peut venir des connaissances du modèle, d’un contexte absent, d’un mauvais document récupéré ou d’une interprétation erronée. Demander au modèle « de ne jamais inventer » ne suffit pas : il faut réduire l’incertitude et vérifier les affirmations importantes.
Diagnostiquer la couche responsable
Conservez la question, les sources récupérées et la réponse. Vérifiez d’abord si les preuves nécessaires étaient présentes. Si non, corrigez ingestion, filtres, chunking ou retriever. Si oui mais que la réponse les contredit, travaillez prompt, modèle ou format. Si la source elle-même est fausse ou périmée, corrigez la gouvernance documentaire.
Réduire le risque
Utilisez des sources identifiables, demandez des citations reliées à des passages et autorisez explicitement l’abstention. Pour des faits structurés ou actuels, appelez une API ou une base plutôt que la mémoire du modèle. Limitez le contexte aux preuves pertinentes. Les sorties structurées garantissent un format, pas la vérité des valeurs.
Vérifier selon l’enjeu
Des règles déterministes contrôlent dates, identifiants, sommes ou présence de citations. Un second modèle peut comparer chaque affirmation au contexte, mais doit être calibré contre une revue humaine. Pour les décisions à fort impact, gardez une validation humaine et rendez les sources visibles.
Mesurer en continu
Créez un dataset avec questions répondables, non répondables, ambiguës et contradictoires. Mesurez fidélité au contexte, exactitude métier et taux d’abstention correct. Échantillonnez la production et transformez les incidents en tests. Évitez un objectif de zéro hallucination qui pousserait le système à refuser toutes les demandes.
FAQ
Une température à zéro supprime-t-elle les hallucinations ?
Non. Elle réduit la variabilité mais n’ajoute pas de preuves.
Le RAG résout-il le problème ?
Il peut le réduire, mais un mauvais retrieval ou une source erronée crée d’autres erreurs.
Une citation prouve-t-elle la réponse ?
Seulement si le passage cité soutient réellement l’affirmation.
Validation des citations avant réponse
~~~python def validate_citations(answer, documents): allowed = {doc.id: doc.text for doc in documents} errors = [] for claim in answer.claims: if claim.source_id not in allowed: errors.append((claim.text, "source inconnue")) elif not entails(allowed[claim.source_id], claim.text): errors.append((claim.text, "non soutenue")) return errors
draft = generate_structured(question, documents) errors = validate_citations(draft, documents) if errors: return {"answer": None, "reason": "verification_failed", "details": errors} return draft ~~~
Exigez des identifiants de source structurés, puis vérifiez qu’ils appartiennent au contexte réellement fourni. Un second LLM peut aider à estimer l’entailment, mais combinez-le avec des règles déterministes et des contrôles humains sur les cas critiques. Mesurez séparément citation invalide, affirmation non soutenue et réponse correcte mais incomplète.