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 :
- 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).
- 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).
-
Installation
pip install langchain langchain-openai chromadb pypdf -
Le Pipeline en 30 lignes Ce script ingère un PDF, le découpe, l’indexe, et répond à une question.
import osfrom langchain_community.document_loaders import PyPDFLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain_community.embeddings import OpenAIEmbeddingsfrom langchain_community.vectorstores import Chromafrom langchain.chains import RetrievalQAfrom 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ématiquesvector_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. Interrogationquery = "Quelles sont les précautions de sécurité mentionnées au chapitre 4 ?"response = qa_chain.run(query)print(f"Réponse IA : {response}") -
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égie | Description | Usage Idéal |
|---|---|---|
| Fixed Size | Découpe brute tous les 500 mots. | Simple, rapide, mais coupe parfois les phrases au milieu. |
| Recursive | Découpe par paragraphes, puis phrases. | Le standard. Préserve la structure sémantique. |
| Semantic | Utilise 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
RAG Avancé : GraphRAG & Hybrid Search
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.
Graphes de Connaissance Au lieu de couper le texte en morceaux plats, on extrait les entités et relations pour construire un graphe.
- Pourquoi ? Permet de répondre à des questions complexes de raisonnement (“Quel est l’impact de la décision de X sur Y ?”) en naviguant dans le graphe.
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 :
- Les bases de données gigantesques (> 10 Go de texte).
- La réduction des coûts (payer 10M tokens à chaque appel coûte cher).
- 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)
- Concepts Clés : LLM, Prompt Engineering
- Atomes Connexes : Embedding, Vector Database, Hallucination
Ressources Externes
- Paper : Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (Lewis et al., 2020) - Le papier fondateur.
- Outil : LangChain - Le framework standard pour construire des RAG.
- Outil : LlamaIndex - Une alternative spécialisée dans l’ingestion de données pour LLM.