Aller au contenu

RAG (Génération Augmentée par Récupération)

Ce que vous saurez dans 3 minutes

Le RAG est l’architecture dominante pour l’IA d’entreprise en 2026.

  • Décideurs : C’est la seule façon fiable de déployer une IA générative sur votre patrimoine documentaire sans entraîner votre propre modèle (coûteux et risqué).
  • Experts Techniques : Le RAG n’est pas magique, c’est un pipeline d’ingénierie complexe où le “retrieval” (retrouver l’info) est souvent plus difficile que la “génération”.
  • Opérationnels : C’est ce qui transforme un ChatGPT “bavard” en un assistant expert qui cite ses sources (pages, paragraphes) pour chaque affirmation.

1. Comprendre

Imaginez que vous passiez un examen à livre ouvert. Un LLM standard (comme ChatGPT de base), c’est un étudiant brillant qui doit passer l’examen sans aucun document, uniquement de mémoire. Il peut être très convaincant, mais s’il a oublié une date, il risque de l’inventer (“hallucination”). Le RAG, c’est donner à cet étudiant le manuel de cours (vos documents) et lui dire : “Tu peux consulter ce livre avant de répondre à chaque question”. Résultat : il ne répond plus par cœur, il synthétise l’information trouvée dans le livre. Ses réponses sont plus justes, et surtout, il peut vous dire “C’est écrit page 42”.

Définition

Contexte & Enjeux

Les LLM ont deux défauts structurels majeurs pour l’entreprise :

  1. L’Amnésie Temporelle : GPT-4 ne sait pas ce qui s’est passé ce matin dans votre entreprise. Sa connaissance s’arrête à sa date de coupure (training cutoff).
  2. L’Hallucination : S’il ne sait pas, il invente pour vous faire plaisir.

Le RAG résout ces deux problèmes sans avoir besoin de ré-entraîner le modèle (ce qui coûterait des millions). C’est la brique fondamentale des “Systèmes Agentiques” modernes.


2. Appliquer

L’Architecture RAG Standard

Un pipeline RAG se décompose en deux temps : l’Indexation (préparation) et la Récupération (action).

graph TD
    subgraph "Phase 1: Indexation (Offline)"
        Docs[Documents Bruts] --> Chunk[Découpage (Chunking)]
        Chunk --> Embed[Modèle d'Embedding]
        Embed --> VectorDB[(Base Vectorielle)]
    end

    subgraph "Phase 2: Inférence (Online)"
        User[Question Utilisateur] --> EmbedQuery[Modèle d'Embedding]
        EmbedQuery --> Search[Recherche de Similarité]
        VectorDB --> Search
        Search --> Context[Top-K Chunks Pertinents]
        Context --> Prompt[Prompt Augmenté]
        Prompt --> LLM[LLM (Génération)]
        LLM --> Reponse[Réponse Sourcée]
    end

    style VectorDB fill:#ffecb3,stroke:#ffb300
    style LLM fill:#e1bee7,stroke:#8e24aa

Mise en œuvre pratique (Code Python)

Voici un exemple minimaliste de RAG utilisant LangChain et une base vectorielle locale (ChromaDB).

  1. Installation pip install langchain langchain-openai chromadb pypdf

  2. Le Pipeline en 30 lignes Ce script ingère un PDF, le découpe, l’indexe, et répond à une question.

    import os
    from langchain_community.document_loaders import PyPDFLoader
    from langchain.text_splitter import RecursiveCharacterTextSplitter
    from langchain_community.embeddings import OpenAIEmbeddings
    from langchain_community.vectorstores import Chroma
    from langchain.chains import RetrievalQA
    from langchain_openai import ChatOpenAI
    # 1. Chargement & Découpage (Chunking)
    loader = PyPDFLoader("mon_document_technique.pdf")
    documents = loader.load()
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
    chunks = text_splitter.split_documents(documents)
    # 2. Indexation Vectorielle (Embedding)
    # On transforme le texte en vecteurs mathématiques
    vector_db = Chroma.from_documents(
    documents=chunks,
    embedding=OpenAIEmbeddings()
    )
    # 3. Création de la Chaîne RAG
    # Le "Retriever" va chercher les 3 morceaux les plus pertinents (k=3)
    qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model_name="gpt-4-turbo"),
    chain_type="stuff",
    retriever=vector_db.as_retriever(search_kwargs={"k": 3})
    )
    # 4. Interrogation
    query = "Quelles sont les précautions de sécurité mentionnées au chapitre 4 ?"
    response = qa_chain.run(query)
    print(f"Réponse IA : {response}")
  3. Résultat L’IA répondra en utilisant uniquement les informations contenues dans votre PDF, en ignorant sa connaissance générale si elle contredit le document.

Le “Chunking” : L’Art Délicat de la Découpe

La qualité de votre RAG dépend à 80% de votre stratégie de découpage.

  • Trop petit : L’IA manque de contexte (elle a une phrase mais ne sait pas de quoi on parle).
  • Trop gros : L’IA est noyée sous des informations inutiles (bruit).
StratégieDescriptionUsage Idéal
Fixed SizeDécoupe brute tous les 500 mots.Simple, rapide, mais coupe parfois les phrases au milieu.
RecursiveDécoupe par paragraphes, puis phrases.Le standard. Préserve la structure sémantique.
SemanticUtilise un modèle pour détecter les changements de sujet.Premium. Assure que chaque chunk est une idée cohérente.

3. Aller plus loin

Le RAG “naïf” (vectoriel pur) échoue souvent sur des questions globales (“Quels sont les thèmes principaux du livre ?”). Pour pallier cela, on utilise des techniques hybrides.

BM25 + Vecteurs On combine la recherche par mots-clés traditionnelle (BM25, comme Elasticsearch) et la recherche vectorielle.

  • Pourquoi ? Les vecteurs sont nuls pour trouver des ID précis (ex: “ref-1234”) ou des acronymes rares. Le mot-clé excelle là-dessus.

Architecture & Composants Clés

  • RépertoireRAG-System/
    • Répertoireingestion/
      • pdf_loader.py
      • cleaner.py (Nettoyage des headers/footers)
    • Répertoirestorage/
      • vector_store (ChromaDB / Pinecone)
      • doc_store (Stockage des métadonnées)
    • Répertoireretrieval/
      • embedder.py (OpenAI / HuggingFace)
      • reranker.py (Reclassement des résultats)
    • Répertoiregeneration/
      • prompt_template.py (“Tu es un assistant utile…”)

Points de vigilance

Prospective

Le Long Context (fenêtres de contexte de 1M ou 10M tokens, comme chez Gemini 1.5) menace-t-il le RAG ? Partiellement. Si vous pouvez mettre toute votre documentation dans le prompt, vous n’avez plus besoin de base vectorielle. Cependant, le RAG restera pertinent pour :

  1. Les bases de données gigantesques (> 10 Go de texte).
  2. La réduction des coûts (payer 10M tokens à chaque appel coûte cher).
  3. La mise à jour en temps réel (mettre à jour un vecteur vs re-uploader tout le contexte).

Questions Fréquentes

Quelle base vectorielle choisir ?

Pour démarrer : ChromaDB (local, open-source). Pour la production managée : Pinecone (le standard) ou Weaviate (hybride). Pour l’écosystème Cloud : Azure AI Search ou AWS Bedrock Knowledge Bases.

RAG vs Fine-Tuning : lequel choisir ?

C’est la question classique.

  • Utilisez le RAG si vous voulez que le modèle connaisse des faits nouveaux (votre doc).
  • Utilisez le Fine-Tuning si vous voulez que le modèle apprenne un style de réponse, un format spécifique, ou un langage technique très pointu. Souvent, la meilleure solution est un mélange des deux (Hybrid RAG).

Notions Liées (Spider Web)

Ressources Externes