🌐 Web & Produits 28 octobre 2025 11 min de lecture

Construire un RAG qui ne hallucine pas

Le RAG est devenu le standard pour interroger ses documents avec un LLM. Mais entre la théorie et un système fiable en production, il y a un monde.

SR

Sofia Rahmani

Lead AI

Construire un RAG qui ne hallucine pas

Le Retrieval-Augmented Generation (RAG) est la technique la plus répandue pour permettre à un LLM de répondre à partir de vos documents. Le principe est simple : on récupère les passages pertinents, on les injecte dans le prompt, et le LLM répond en se basant sur eux.

Pourquoi ça échoue en pratique

La plupart des tutoriels s'arrêtent à 'découpez en chunks, vectorisez, cherchez'. En production, trois problèmes surviennent systématiquement : les chunks mal découpés perdent le contexte, la recherche vectorielle ramène des passages hors-sujet, et le LLM hallucine en combinant des informations fragmentaires.

Le piège du chunk naive

Découper un document tous les 512 tokens ignore la structure. Un paragraphe peut être coupé en deux, une définition séparée de son exemple, une table désintégrée.

Découpage sémantique

Au lieu de découper aveuglément, nous analysons la structure du document. Chaque chunk correspond à une unité logique : un paragraphe, une section, un élément de table. On préserve les titres comme métadonnées pour donner au LLM le contexte hiérarchique.

typescript
function semanticChunk(doc: Document): Chunk[] {
  const sections = parseStructure(doc); // markdown/HTML
  return sections.flatMap(s => {
    const paragraphs = splitParagraphs(s.text);
    return paragraphs.map(p => ({
      text: p,
      metadata: {
        section: s.title,
        page: s.page,
        document: doc.title,
      },
    }));
  });
}

Recherche hybride

La recherche vectorielle seule rate les requêtes précises (noms, références, chiffres). Nous combinons recherche vectorielle (sémantique) et recherche lexique (BM25) avec un reranker pour obtenir le meilleur des deux mondes.

94%

Précision des réponses

Contre 71% avec vectoriel seul

  • Vectoriel : capture le sens, pas les mots exacts
  • BM25 : capture les mots exacts, pas le sens
  • Reranker : trie les candidats par pertinence réelle
  • Filtres metadata : restreint par source, date, section

Empêcher les hallucinations

Même avec une bonne recherche, le LLM peut inventer. Trois garde-fous : demander des citations exactes, vérifier que chaque citation existe dans les chunks récupérés, et utiliser un second LLM pour valider la cohérence réponse/sources.

Citation forcée

Chaque réponse doit inclure des citations au format [source, section]. Si le LLM ne peut pas citer, il doit dire 'Je n'ai pas trouvé cette information dans les documents fournis'.

"Le RAG n'est pas un produit. C'est une chaîne de traitement où chaque maillon peut casser. La rigueur est dans les détails."

- Sofia Rahmani, Lead AI

❌ RAG naïf

  • Chunks de 512 tokens
  • Vectoriel seul
  • Pas de citations
  • Hallucinations fréquentes
  • Précision ~71%

✅ RAG robuste

  • Chunks sémantiques
  • Hybride + reranker
  • Citations forcées
  • Validation croisée
  • Précision ~94%

La différence entre un RAG qui impressionne en démo et un RAG fiable en production se joue sur ces détails. C'est ce qui sépare un jouet d'un produit.

RAGLLMVectorielProduction
SR

Sofia Rahmani

Lead AI · SYNAPSONIC

Discuter
Démarrons ensemble

Du web au jeu-vidéo, donnons vie à votre idée.

Parlons de votre projet. Nous vous répondons sous 24 heures avec une première recommandation.