« J'aimerais que ChatGPT lise notre reglement interieur et reponde tout seul aux questions des salaries. » « Pouvez-vous chercher dans la derniere base d'articles scientifiques et faire des resumes ? » -- ce genre de besoins se multiplie. Mais les donnees d'entrainement de ChatGPT s'arretent a une certaine date, et il n'est pas envisageable de lui faire ingerer directement des documents confidentiels.

La technique qui resout ce probleme s'appelle le RAG (Retrieval-Augmented Generation, ou generation augmentee par recherche). Depuis 2023, c'est l'un des mots-cles incontournables de l'IA en entreprise -- et les fonctions « Custom GPTs » ou « Projects » de ChatGPT reposent justement sur du RAG en interne.

Cet article explique le fonctionnement du RAG en trois etapes illustrees, et detaille les bases vectorielles, l'implementation avec LangChain et la comparaison avec le fine-tuning. L'objectif : un texte accessible aux debutants tout en restant techniquement juste.

Vue d'ensemble du RAG -- generation augmentee par recherche

1. Le RAG, c'est quoi ? -- Retrieval-Augmented Generation

Litteralement, RAG (Retrieval-Augmented Generation) signifie « generation (Generation) augmentee (Augmented) par recherche (Retrieval) ». En francais on parle de generation augmentee par recherche.

En une phrase : avant que le LLM (grand modele de langage) ne genere sa reponse, on va chercher dans une base externe les informations pertinentes, puis on les lui transmet pour qu'il s'en serve.

Une analogie culinaire

Un LLM seul, c'est « un chef qui cuisine de memoire ». Tres competent, mais incapable de preparer une recette qu'il ne connait pas et ignorant ce qu'il y a dans le frigo.

Le RAG, c'est donner au chef un livre de recettes et lui annoncer le contenu du frigo avant qu'il ne se mette aux fourneaux. Il peut alors composer le meilleur plat possible avec les ingredients du jour, en se basant sur les recettes pertinentes.

Le role de « Retrieval », « Augmented » et « Generation »

MotSensRole dans un RAG
RetrievalRecherche / recuperationAller chercher dans la base les documents lies a la question
AugmentedAugmentation / enrichissementAjouter ces documents au prompt envoye au LLM
GenerationGenerationLe LLM produit la reponse en s'appuyant sur les documents fournis

Le point cle, c'est qu'on ne reentraine pas le LLM. A chaque question, on lui passe les connaissances necessaires depuis l'exterieur. C'est la difference fondamentale avec le fine-tuning, sur lequel on reviendra.

2. Pourquoi en a-t-on besoin ? -- les 3 limites du LLM seul

ChatGPT, Claude et leurs equivalents ont trois limites importantes qu'ils ne peuvent pas resoudre seuls.

Limite 1 : la date de coupure des connaissances (fraicheur)

Un LLM est entraine sur des donnees jusqu'a une date donnee. Au-dela, il ne sait rien. Par exemple, la version initiale de GPT-4 ne connaissait que les informations jusqu'a avril 2023.

  • « Parle-moi du nouveau produit annonce hier. » -> sans reponse
  • « Que prevoit la loi votee la semaine derniere ? » -> sans reponse
  • « Quel est le taux de change aujourd'hui ? » -> sans reponse

Avec le RAG, on peut tirer ces informations d'un flux d'actualites, d'une base de donnees ou d'une API.

Limite 2 : les hallucinations (mensonges convaincants)

Quand on pose au LLM une question dont il ignore la reponse, il a tendance a inventer une reponse credible. C'est ce qu'on appelle une hallucination.

Exemple : « Combien de jours de conges payes prevoit notre reglement interieur ? » Le LLM, qui ne sait pas, peut repondre « En general, 10 a 20 jours » -- inutilisable en entreprise.

Avec un RAG, on lui transmet le vrai reglement interieur. Il fournit alors une reponse fondee sur des sources, et peut meme indiquer la page exacte ou figure l'information.

Limite 3 : pas d'acces aux donnees internes ou privees

Les manuels, contrats et donnees clients de votre entreprise ne font pas partie de l'entrainement du LLM. Et il est hors de question de lui faire avaler ces donnees confidentielles (risque de fuite, cout).

Avec le RAG, on stocke les documents internes dans sa propre base vectorielle, on en extrait uniquement la portion pertinente au moment de la question et on la donne au LLM. On exploite ainsi les donnees internes tout en preservant la securite.

3. Fonctionnement -- le RAG en 3 etapes

Le RAG comporte deux phases : « la preparation (indexation) » et « l'execution (reponse a la question) ».

Vue d'ensemble du pipeline RAG

Phase de preparation -- vectoriser les documents

  1. Collecter les documents : PDF, Word, HTML, Markdown, etc.
  2. Decoupage en chunks : couper en morceaux (par exemple 500 a 1 000 caracteres)
  3. Embedding : passer chaque chunk dans un modele d'embedding (ex. OpenAI text-embedding-3-small) pour le transformer en vecteur (par exemple 1 536 dimensions)
  4. Stockage en base vectorielle : sauvegarder chunks et vecteurs dans une BDD specialisee (Pinecone, Qdrant, etc.)

Cette etape se relance lors d'ajouts ou de mises a jour de documents.

Phase d'execution -- repondre en 3 etapes

Quand un utilisateur pose une question, voici ce qui se passe.

  1. Etape 1 : Retrieval (recherche)
    • La question est elle aussi vectorisee avec le meme modele d'embedding
    • On recupere dans la base vectorielle les K chunks « les plus proches » de la question (en general 3 a 10)
    • La proximite est calculee, par exemple, par similarite cosinus
  2. Etape 2 : Augmented (enrichissement)
    • Les chunks recuperes sont injectes dans le prompt comme « informations de reference »
    • Format type : « En t'appuyant sur les informations suivantes, reponds a la question : [chunks] Question : [question utilisateur] »
  3. Etape 3 : Generation
    • Le LLM (GPT-4, Claude, Gemini, etc.) genere sa reponse en se referant a ces informations
    • Au besoin, il cite explicitement les sources utilisees

Exemple concret : interroger ChatGPT sur le reglement interieur

Pour la question « Combien de jours de conges payes ai-je ? », le flux est le suivant :

  1. La question est vectorisee : [0.12, -0.45, 0.78, ...]
  2. 3 chunks lies aux mots « conges » et « payes » sont recuperes
  3. Les chunks obtenus sont par exemple : « Article 15 -- Conges payes annuels : 10 jours octroyes apres 6 mois d'anciennete... », « Jusqu'a 20 jours selon l'anciennete... »
  4. Le prompt est construit : « Reference : article 15... Question : Combien de jours de conges payes ai-je ? »
  5. Le LLM repond : « 10 jours apres 6 mois d'anciennete, jusqu'a 20 jours selon l'anciennete (cf. article 15 du reglement interieur) »

4. Les composants principaux du RAG

Un RAG repose sur cinq composants.

(1) Le modele d'embedding

Un modele d'IA qui transforme du texte en vecteur. Il est entraine de telle sorte que « deux textes au sens proche se retrouvent voisins dans l'espace vectoriel ».

ModeleEditeurParticularite
text-embedding-3-smallOpenAIBon rapport prix/perf, 1 536 dim.
text-embedding-3-largeOpenAIPlus precis, 3 072 dim.
voyage-3Voyage AIRecommande par Anthropic, tres precis
Cohere Embed v3CohereMultilingue, bon en francais
multilingual-e5-largeMicrosoft (OSS)Local, gratuit
BGE-M3BAAI (OSS)Plus de 100 langues, top OSS

(2) La base vectorielle

Une BDD specialisee qui stocke un grand nombre de vecteurs et permet de retrouver rapidement les « voisins ». On y revient au chapitre suivant.

(3) Le moteur de recherche (Retriever)

En plus de la recherche vectorielle, on combine souvent une recherche par mots-cles (BM25, etc.) ou une recherche hybride.

(4) Le LLM (cote generation)

Le grand modele de langage qui produit la reponse finale : GPT-4, Claude, Gemini, Llama 3... Cela peut etre une API commerciale ou un modele OSS execute en local.

(5) Le template de prompt

Le canevas qui combine resultats de recherche et question utilisateur avant l'envoi au LLM. C'est une piece centrale de la qualite du RAG.

Tu es un assistant qui maitrise les regles internes.
Reponds en t'appuyant uniquement sur les informations ci-dessous.
Si la reponse ne s'y trouve pas, reponds "Information indisponible".

[Informations de reference]
{retrieved_chunks}

[Question]
{user_question}

[Reponse]

5. Qu'est-ce qu'une base vectorielle ?

Contrairement a une BDD relationnelle classique (MySQL, etc.), une base vectorielle est concue pour retrouver rapidement les vecteurs les plus proches dans un espace de grande dimension.

Comparatif des principales bases vectorielles

BaseTypeParticulariteTarif
PineconeManagee (SaaS)Standard du marche, configuration trivialeQuota gratuit, 70 $/mois
WeaviateOSS + cloudAPI GraphQL, recherche hybrideOSS gratuit, SaaS des 25 $
QdrantOSS + cloudEn Rust, rapide, filtrage puissantOSS gratuit, SaaS quota gratuit
ChromaOSSLeger, utilisable en Python tout de suiteGratuit (auto-heberge)
pgvectorExtension PostgreSQLS'integre a un PostgreSQL existantGratuit (extension OSS)
MilvusOSS + cloudPour le grande echelle (milliards de vecteurs)OSS gratuit, Zilliz Cloud
ElasticsearchMoteur de rechercheRecherche vectorielle, integration avec l'existantOSS gratuit, offre managee
Vertex AI Vector SearchGoogle CloudIntegre a l'ecosysteme GCPA l'usage

Laquelle choisir ?

  • Juste essayer : Chroma (un pip install et c'est parti)
  • Reutiliser PostgreSQL : pgvector (tout reste dans la meme BDD)
  • Production avec peu d'ops : Pinecone (zero config)
  • Production OSS serieuse : Qdrant ou Weaviate
  • Grandes volumetries (centaines de millions a milliards) : Milvus

Pour le choix de l'hebergement, voir aussi PaaS (Vercel, etc.) vs hebergement mutualise, VPS et cloud.

6. Principaux cas d'usage

Depuis 2023, le RAG est l'une des techniques les plus adoptees en entreprise. Quelques exemples representatifs.

Cas 1 : QA sur la documentation interne (knowledge base)

Reglement interieur, manuels, specifications techniques, comptes rendus, supports commerciaux : on les passe au RAG pour que les salaries puissent les interroger comme on interroge ChatGPT. Microsoft 365 Copilot fait du RAG sur les documents SharePoint.

Cas 2 : automatisation du support client

FAQ et historique de support sont mis en RAG pour automatiser le premier niveau via chatbot. Les operateurs humains gardent les cas complexes.

Cas 3 : QA d'expertise (juridique, medical)

Bases de jurisprudence, articles medicaux, recommandations cliniques : un RAG sert d'outil quotidien aux avocats et medecins. Comme les sources sont citees, la solution colle aux domaines ou la justification est obligatoire.

Cas 4 : recherche et resume d'articles scientifiques

arXiv, PubMed, Google Scholar... On passe les bases d'articles en RAG pour repondre a « Quelles sont les tendances recentes sur ce theme ? » ou « Quels travaux similaires a la methode XX ? ». Elicit et Perplexity sont les exemples les plus connus.

Cas 5 : recherche produit et FAQ d'e-commerce

Manuels produits, avis clients, politique de retour : on les fusionne dans un RAG. « Cet aspirateur fonctionne-t-il sur les poils d'animaux ? » devient une question naturelle a poser au site.

Cas 6 : chat de documentation pour developpeurs

La documentation officielle d'une bibliotheque alimente un RAG : « Comment ecrit-on cela avec AWS Lambda ? Donne-moi un exemple de code. » Stripe, Vercel, Supabase, etc. ont adopte ce schema.

Cas 7 : recherche et explication dans une codebase interne

Le code GitHub d'un projet est mis en RAG : « Comment utiliser cette fonction ? » « Quels fichiers font un traitement similaire ? ». GitHub Copilot Chat, Cursor, Claude Code et autres outils de dev IA recourent en interne a des techniques apparentees au RAG.

Cas 8 : nouvelles optimisations IA comme llms.txt

llms.txt, qui aide les IA a citer correctement le contenu d'un site, est une mecanique tres complementaire au RAG : l'editeur structure ce qu'il veut voir lu par les modeles.

7. RAG vs fine-tuning -- que choisir ?

Pour donner du savoir specifique a un LLM, le fine-tuning est l'autre approche frequemment evoquee. RAG et fine-tuning sont fondamentalement differents.

Comparatif RAG vs fine-tuning

Differences fondamentales

CritereRAGFine-tuning
ApprocheInjecter de l'info au runtimeReentrainer le modele en amont
Mise a jourModifier la base (immediat)Reentrainer (temps + cout)
Cout initialFaible (juste la base)Eleve (jeu de donnees + GPU)
Cout d'exploitationRecherche + appels LLMInference seule (modele propre)
HallucinationsFaibles (sources fournies)Moyennes (memoire du modele)
Citation des sourcesPossibleDifficile
Apprendre style / tonFaibleFort
Donnees dynamiquesFort (temps reel possible)Faible (reentrainement requis)
Donnees confidentiellesOn-premise faisableIdem (mais plus lourd)

Quand le RAG est preferable

  • Connaissances mises a jour souvent (actu, docs internes, catalogue produits)
  • Necessite de citer des sources (juridique, medical, finance)
  • Volume de documents important (impossible de tout entrainer)
  • Demarrage rapide (raccourcir le temps de developpement)

Quand le fine-tuning est preferable

  • Imposer un style / ton (voix de marque, personnage)
  • Apprendre des tournures specifiques a un domaine (vocabulaire medical, style juridique)
  • Reduire le cout d'inference (prompts plus courts)
  • Vous disposez deja d'un grand jeu de donnees etiquetees

L'ideal : combiner les deux

RAG et fine-tuning ne s'opposent pas, ils se combinent. Fine-tuning pour le style, RAG pour les connaissances fraiches : c'est une combinaison qu'on retrouve souvent en production.

Pour un debutant, la regle d'or est de commencer par le RAG : c'est infiniment plus simple a construire et a operer que le fine-tuning.

8. Implementation -- un RAG en LangChain

Apres un tour des principaux frameworks, voici un exemple minimal en Python.

Frameworks principaux

FrameworkLangageParticularite
LangChainPython / JSLe plus repandu, integrations nombreuses
LlamaIndexPythonSpecialise dans la connexion aux donnees et l'indexation
HaystackPythonEntreprise, controle fin
Semantic KernelC# / PythonMade by Microsoft, fort sur .NET
DSPyPythonOptimisation automatique de prompts
Implementation maisonAu choixUn RAG simple tient en 100 lignes

Exemple minimal de RAG avec LangChain

Construisons en une trentaine de lignes un RAG qui repond a partir d'un PDF de reglement interieur.

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 1. Charger le document
loader = PyPDFLoader("reglement.pdf")
docs = loader.load()

# 2. Decoupage en chunks
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500, chunk_overlap=50
)
chunks = splitter.split_documents(docs)

# 3. Embedding + base vectorielle
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_documents(chunks, embeddings)

# 4. Chaine RAG
llm = ChatOpenAI(model="gpt-4o-mini")
qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True,
)

# 5. Question
result = qa.invoke({"query": "Combien de jours de conges payes ai-je ?"})
print(result["result"])
print("Sources :", [d.metadata for d in result["source_documents"]])

A l'execution, le code va chercher les passages pertinents dans le PDF et GPT-4o-mini formule la reponse. On recupere meme le numero de page, ce qui permet de repondre « cf. article 15 » avec la source.

Pour aller en production

  • Decoupage optimise (semantique, hierarchique, etc.)
  • Recherche hybride (vectoriel + BM25)
  • Reranking (Cohere Rerank, voyage-rerank, etc.)
  • Reformulation des requetes (HyDE, Multi-Query, etc.)
  • Pipeline d'evaluation (RAGAS pour evaluer automatiquement)

9. Defis du RAG et solutions

Le RAG est puissant, mais voici les obstacles classiques en production.

Defi 1 : decouper les chunks

La facon de decouper change radicalement la precision. Trop court, on perd le contexte ; trop long, la recherche se degrade.

Solutions :

  • Decoupage semantique (par unites de sens)
  • Overlap (laisser un peu de chevauchement entre chunks)
  • Chunks hierarchiques (rechercher sur les enfants, fournir le parent)

Defi 2 : la qualite de la recherche

On peut rapporter un chunk faussement proche, ou rater le bon.

Solutions :

  • Recherche hybride (vectoriel + BM25)
  • Reranking apres la recherche
  • Generer plusieurs requetes (reformulations)

Defi 3 : la fenetre de contexte

Le LLM a un nombre maximum de tokens, on ne peut pas tout lui donner.

Solutions :

  • Limiter K (3 a 5 chunks)
  • Resumer en amont
  • Utiliser des LLM a long contexte (Claude 200k, Gemini 1M, etc.)

Defi 4 : evaluer le RAG

Mesurer objectivement la qualite des reponses est difficile. Comment construire le « gold standard » ?

Solutions :

  • Utiliser RAGAS (framework OSS d'evaluation RAG)
  • Indicateurs automatiques : precision de la reponse, pertinence, fidelite au contexte recupere
  • LLM-as-a-Judge (un autre LLM joue les correcteurs)

Defi 5 : multilingue et multimodal

Documents melant plusieurs langues, PDF avec images, tableaux, graphiques : la prise en charge est non triviale.

Solutions :

  • Embeddings multilingues (BGE-M3, Cohere Multilingual)
  • Pretraiter images / tableaux en texte (OCR + VLM)
  • Embeddings multimodaux (CLIP, Nomic, etc.)

10. Outils et services principaux

Recapitulatif des principaux outils utiles pour batir un RAG, classes par categorie.

Frameworks et bibliotheques

  • LangChain -- le framework RAG le plus repandu
  • LlamaIndex -- specialiste de la connexion aux donnees
  • Haystack -- oriente entreprise
  • DSPy -- optimisation automatique des prompts

Bases vectorielles managees

  • Pinecone -- standard du marche
  • Weaviate Cloud -- API GraphQL
  • Qdrant Cloud -- haute performance
  • Zilliz Cloud -- version managee de Milvus

Bases vectorielles OSS auto-hebergees

  • Chroma -- leger, utilisable directement en Python
  • Qdrant -- en Rust, rapide
  • Weaviate -- version OSS
  • Milvus -- pour les grosses volumetries
  • pgvector -- extension PostgreSQL

Modeles d'embedding

  • OpenAI text-embedding-3 -- la valeur sure, peu chere
  • Voyage AI -- recommande par Anthropic
  • Cohere Embed v3 -- multilingue
  • BGE-M3 -- excellent en OSS

Services RAG no-code / manages

  • ChatGPT Projects / Custom GPTs -- la fonction RAG d'OpenAI
  • Claude Projects -- la fonction RAG d'Anthropic
  • Notion AI -- recherche dans vos documents Notion
  • Microsoft Copilot (Microsoft 365) -- recherche transverse SharePoint / Teams
  • Dify -- plateforme OSS no-code de construction d'IA
  • Vertex AI Agent Builder -- le service RAG de Google Cloud
  • Amazon Bedrock Knowledge Bases -- le RAG manage d'AWS

Outils d'evaluation

  • RAGAS -- framework OSS d'evaluation RAG
  • TruLens -- evaluation generale d'apps LLM
  • LangSmith -- tracing et evaluation officiels LangChain

FAQ

Q. Le RAG fonctionne-t-il aussi dans ChatGPT ?

Oui. Quand vous televersez des fichiers dans « Projects » ou « Custom GPTs », du RAG tourne en interne (OpenAI parle de « File Search »). En API, on utilise l'outil File Search d'OpenAI Assistants ou on construit son propre RAG (LangChain et autres). Cote Claude, la fonction « Projects » fait exactement la meme chose.

Q. Combien coute l'exploitation d'un RAG ?

Cela depend largement de l'echelle. En personnel ou petite structure (moins de 10 000 documents, environ 1 000 requetes / mois), Chroma + API OpenAI tient en quelques dizaines de dollars / mois. A taille moyenne (100 000 documents, 100 000 requetes / mois) avec Pinecone + GPT-4o, comptez quelques centaines a milliers de dollars / mois. En grand compte, on peut depasser les dizaines de milliers de dollars. Les trois postes principaux : « API d'embedding », « base vectorielle », « API LLM ».

Q. En quoi le RAG differe-t-il du fait d'uploader des fichiers dans ChatGPT ?

Au fond, c'est la meme technique de generation augmentee par recherche. L'upload ChatGPT fait deja tourner du RAG en interne. Differences : (1) ChatGPT prend en charge un nombre limite de fichiers (Projects en supporte beaucoup plus, mais reste limite) -- un RAG maison peut viser des millions de documents ; (2) ChatGPT est une boite noire, alors qu'un RAG maison permet de regler finement la recherche ; (3) ChatGPT vit chez OpenAI, un RAG maison peut tourner on-premise. Pour la production en entreprise, on construit en general son propre RAG.

Q. Le RAG fait-il completement disparaitre les hallucinations ?

Non, pas completement. Avec le RAG, on peut encore se tromper si (1) aucun document pertinent n'est trouve, (2) les chunks sont mal interpretes par le LLM, (3) il y a des contradictions dans les chunks. Quelques bonnes pratiques : ajouter dans le prompt « Si l'information n'est pas dans le contexte, reponds 'Information indisponible' », exiger les sources, evaluer en continu avec RAGAS. Aucune solution n'atteint 100 % : pour le medical, le juridique ou tout usage critique, une validation humaine reste indispensable.

Q. Comment bien gerer le francais ?

Trois axes : (1) choisir un embedding multilingue (OpenAI text-embedding-3, Cohere Multilingual, BGE-M3) ; (2) tenir compte de la ponctuation et des mots francais lors du decoupage ; (3) prendre un LLM a l'aise en francais (GPT-4o, Claude, Gemini, ou modeles europeens specialises). text-embedding-3 d'OpenAI est tres correct en francais, mais BGE-M3 ou Cohere offrent souvent une precision encore meilleure.

Q. Quelle difference entre RAG et agent IA ?

Le RAG est un mecanisme fixe : « rechercher, puis repondre ». Un agent est dynamique : « selectionner et executer des outils en autonomie pour atteindre un objectif ». Le RAG est souvent l'un des outils dont dispose l'agent. Un agent peut combiner « recherche interne (RAG) », « recherche web », « calcul », « envoi d'email », etc. selon le contexte. On voit aussi emerger l'« Agentic RAG », ou le LLM decide lui-meme de la strategie de recherche.

Q. Cote securite, mes donnees confidentielles sont-elles protegees ?

Plusieurs mesures sont possibles : (1) heberger la base vectorielle et l'embedding en on-premise ou dans un VPC (Qdrant, pgvector auto-heberges) ; (2) utiliser des LLM OSS executes en local (Llama 3, Qwen, etc.) ; (3) si vous passez par une API, signer un contrat « pas d'usage pour l'entrainement » avec OpenAI ou Azure OpenAI ; (4) ajouter des metadonnees de droits aux chunks et filtrer a la recherche. Le RAG 100 % on-premise est techniquement faisable et adopte dans la finance et la sante.

Q. Quelles competences et combien de temps pour monter un RAG ?

Un prototype tient en quelques heures a une journee pour un developpeur Python debutant (une trentaine de lignes Chroma + OpenAI). Pour un niveau production avec decoupage avance, recherche hybride, reranking, evaluation : compter 1 a 3 mois. Les competences requises : « Python de base », « usage des API LLM », « operations BDD basiques ». Pas besoin d'expertise ML poussee : les ingenieurs logiciels prennent en main le RAG plus facilement que les data scientists.

Article redige sur la base d'informations disponibles en avril 2026. L'ecosysteme RAG evolue rapidement : pensez a verifier la documentation officielle de chaque service au moment de l'implementation.