« Je voudrais que ChatGPT consulte les manuels de notre entreprise pour répondre aux questions. » « Je voudrais chercher de nouveaux articles scientifiques et les résumer. » Pour ces usages, les connaissances apprises par le modèle ne suffisent pas toujours. Il existe des méthodes pour lui fournir les documents nécessaires au moment de répondre.

L’une de ces méthodes est le RAG (Retrieval-Augmented Generation, ou génération augmentée par recherche). Le système recherche des informations pertinentes dans des documents externes et les ajoute au contexte utilisé pour générer la réponse. Des fonctions d’IA prêtes à l’emploi consultent aussi des documents, mais tous les téléversements de fichiers ne déclenchent pas le même traitement de recherche.

Cet article explique le fonctionnement du RAG en trois étapes illustrées, et détaille les bases vectorielles, l'implémentation avec LangChain et la comparaison avec le fine-tuning. L'objectif : un texte accessible aux débutants tout en restant techniquement juste.

RAG (Retrieval-Augmented Generation)

Génération augmentée par recherche — fournir des connaissances externes au LLM

Utilisateur
Saisit la question
Question
Base vectorielle
Retrieval (recherche)
Pinecone / Qdrant
Chroma / pgvector
LLM
Génération
GPT / Claude
Gemini / Llama
Réponse
Réponse accompagnée de sources
Réponse
Connaissances externes
Documents internes / PDF
Manuels / FAQ
Articles / actualités
Prompt enrichi
Résultats + question
↓ Transmis au LLM
Le RAG en 3 étapes
1. Retrieval (recherche) → 2. Augmented (enrichissement) → 3. Génération
Complète les connaissances du modèle par des documents. Recherche, réponses et droits d’accès restent à vérifier

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

Littéralement, RAG (Retrieval-Augmented Generation) signifie « génération (Generation) augmentée (Augmented) par recherche (Retrieval) ». En français on parle de génération augmentée par recherche.

En une phrase : le LLM (grand modèle de langage) utilise des informations pertinentes recherchées dans des sources externes pour générer sa réponse. Les schémas de cet article présentent la forme de base : rechercher d’abord, puis répondre. La source de recherche n’est pas nécessairement une base vectorielle : une base de données existante ou une recherche par mots-clés peut aussi convenir.

Une analogie culinaire

Un LLM seul, c'est « un chef qui cuisine de mémoire ». Très compétent, mais incapable de préparer une recette qu'il ne connaît 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 ingrédients du jour, en se basant sur les recettes pertinentes.

Le rôle de « Retrieval », « Augmented » et « Generation »

MotSensRôle dans un RAG
RetrievalRecherche / récupérationAller chercher dans la base les documents liés à la question
AugmentedAugmentation / enrichissementAjouter ces documents au prompt envoyé au LLM
GenerationGénérationLe LLM produit la réponse en s'appuyant sur les documents fournis

Le point clé, c'est qu'on ne réentraîne pas le LLM. À chaque question, on lui passe les connaissances nécessaires depuis l'extérieur. C'est la différence fondamentale avec le fine-tuning, sur lequel on reviendra.

Ce fonctionnement de base, ainsi que la possibilité de rechercher dans un système SQL ou documentaire existant, sont décrits dans le guide Retrieval de LangChain.

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

ChatGPT, Claude et leurs équivalents ont trois limites importantes qu'ils ne peuvent pas résoudre seuls.

Limite 1 : la date de coupure des connaissances (fraîcheur)

Les connaissances apprises par un LLM ne permettent pas à elles seules de vérifier les informations qui ont changé depuis son entraînement. La date de coupure des connaissances varie selon le modèle. Les événements ultérieurs doivent être vérifiés à l’aide de documents ou de recherches.

  • « Parle-moi du nouveau produit annoncé hier. » → Consulter l’annonce
  • « Que prévoient les conditions d’utilisation mises à jour la semaine dernière ? » → Consulter leur nouvelle version
  • « Quel est le taux de change aujourd’hui ? » → Consulter des données horodatées

Le RAG peut utiliser des informations provenant d’actualités, de bases de données ou d’API. Toutefois, une source obsolète peut conduire à une réponse obsolète. Il faut mettre à jour les documents et vérifier les résultats de la recherche.

Limite 2 : les hallucinations (mensonges convaincants)

Quand on pose au LLM une question dont il ignore la réponse, il a tendance à inventer une réponse crédible. C'est ce qu'on appelle une hallucination.

Par exemple, si vous demandez le nombre de jours de congé d’une entreprise sans fournir son règlement interne, le modèle peut donner un chiffre plausible qui ne figure dans aucun document. Il s’agit d’un exemple explicatif, et non d’une réponse exécutée ou observée pour cet article.

Le RAG recherche les documents réels afin de produire une réponse fondée sur des sources. Les références enregistrées, comme le nom du document ou le numéro de page, peuvent être présentées avec la réponse. Une citation affichée ne prouve toutefois pas l’exactitude du contenu. Des documents peuvent ne pas être retrouvés et le modèle peut mal les interpréter.

Limite 3 : pas d'accès aux données internes ou privées

Il ne faut pas supposer qu’un modèle public connaît les manuels ou contrats non publics de votre entreprise. Avant de lui faire consulter des documents, vérifiez les droits d’utilisation et les destinataires des données.

Le RAG sélectionne les passages pertinents à transmettre ; il ne garantit pas à lui seul la protection des données confidentielles. Même avec une base de données interne, les API externes d’embedding ou de génération reçoivent des documents, des questions ou des résultats de recherche. Vérifiez les droits de l’utilisateur à l’étape de recherche, les destinataires, le stockage et les journaux. La FAQ détaille ces distinctions.

3. Fonctionnement — le RAG en 3 étapes

Le RAG comporte deux phases : « la préparation (indexation) » et « l'exécution (réponse à la question) ».

Vue d'ensemble du pipeline RAG

De la question à la réponse — flux complet

▶ Phase d'exécution : réponse à la question
1. Question
"Combien de jours ?"
Question de l’utilisateur
2. Vectorisation
Modèle d'embedding
[0.12, -0.45, ...]
3. Recherche
Plus proches voisins
Similarité cosinus
4. Fragments récupérés
3 à 5 documents
Article 15 : congés...
↓
5. LLM + contexte (prompt enrichi)
« Réponds en te basant sur ce qui suit : [fragment] Question : [requête utilisateur] »
GPT / Claude / Gemini répondent en s'appuyant sur les sources
↓
6. Réponse (avec source)
"10 jours après 6 mois (cf. art. 15 du règlement)"
▶ Phase de préparation : vectorisation des documents
Document
PDF / Word
Découpage
500-1000 car.
Embedding
Vectorisation
Base vectorielle
Stockage / index
À exécuter lors d’ajouts ou de mises à jour

Phase de préparation — vectoriser les documents

  1. Collecter les documents : PDF, Word, HTML, Markdown, etc.
  2. Découpage en fragments (chunks) : couper en morceaux (par exemple 500 à 1 000 caractères)
  3. Vectorisation (embedding) : passer chaque fragment dans un modèle d'embedding (ex. OpenAI text-embedding-3-small) pour le transformer en vecteur (par exemple 1 536 dimensions)
  4. Stockage en base vectorielle : sauvegarder les fragments et leurs vecteurs dans une BDD spécialisée (Pinecone, Qdrant, etc.)

Cette étape se relance lors d'ajouts ou de mises à jour de documents.

Phase d'exécution — répondre en 3 étapes

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

  1. Étape 1 : Retrieval (recherche)
    • La question est elle aussi vectorisée avec le même modèle d'embedding
    • On récupère dans la base vectorielle les K fragments proches de la question (3 dans cet exemple)
    • La proximité est calculée, par exemple, par similarité cosinus
  2. Étape 2 : Augmented (enrichissement)
    • Les fragments récupérés sont injectés dans le prompt comme « informations de référence »
    • Format type : « En t'appuyant sur les informations suivantes, réponds à la question : [fragments] Question : [question utilisateur] »
  3. Étape 3 : Génération
    • Le LLM (GPT, Claude, Gemini, etc.) génère sa réponse en se référant à ces informations
    • Au besoin, il cite explicitement les sources utilisées

Exemple concret : interroger ChatGPT sur le règlement intérieur

Les durées, les nombres de jours et les numéros d’articles ci-dessous proviennent du règlement d’une entreprise fictive, choisi pour expliquer le mécanisme. Ils ne décrivent pas un régime réel de congés.

Pour la question « Combien de jours de congés payés ai-je ? », le flux est le suivant :

  1. La question est vectorisée : [0.12, -0.45, 0.78, ...]
  2. 3 fragments liés aux mots « congés » et « payés » sont récupérés
  3. Les fragments obtenus sont par exemple : « Article 15 — Congés payés annuels : 10 jours octroyés après 6 mois d'ancienneté... », « Jusqu'à 20 jours selon l'ancienneté... »
  4. Le prompt est construit : « Référence : article 15... Question : Combien de jours de congés payés ai-je ? »
  5. Le LLM répond : « 10 jours après 6 mois d'ancienneté, jusqu'à 20 jours selon l'ancienneté (cf. article 15 du règlement intérieur) »

4. Les composants principaux du RAG

Un RAG repose sur cinq composants.

(1) Le modèle d'embedding

Un modèle d'IA qui transforme du texte en vecteur. Il est entraîné de telle sorte que « deux textes au sens proche se retrouvent voisins dans l'espace vectoriel ».

ModèleÉditeurParticularité
text-embedding-3-smallOpenAI1 536 dimensions par défaut ; réduction possible avec le paramètre dimensions
text-embedding-3-largeOpenAI3 072 dimensions par défaut ; réduction possible avec le paramètre dimensions
voyage-4Voyage AIPrésenté dans la documentation d'Anthropic ; existe aussi en version légère et à poids ouverts
Cohere EmbedCohereCandidat pour rechercher dans des documents multilingues
multilingual-e5-largeMicrosoft (modèle publié)Candidat à l’exécution locale ; vérifier les conditions d’utilisation et les ressources nécessaires
BGE-M3BAAI (OSS)Multilingue ; candidat à l’exécution locale

Pour les dimensions par défaut des modèles OpenAI et leur réduction, consultez le guide officiel des embeddings. Pour comparer les modèles, évaluez les résultats de recherche sur vos propres documents, au-delà du seul nombre de dimensions.

(2) La base vectorielle

Une base de données ou une extension stocke les vecteurs et recherche les vecteurs similaires. La section suivante détaille ces possibilités.

(3) Le moteur de recherche (Retriever)

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

(4) Le LLM (côté génération)

Le grand modèle de langage qui produit la réponse finale : GPT, Claude, Gemini, Llama... Cela peut être une API commerciale ou un modèle OSS exécuté en local. Toutes ces familles renouvellent leurs versions sans cesse : vérifiez les noms de modèles actuels dans notre liste des principaux modèles d'IA.

(5) Le modèle de prompt

Le canevas qui combine résultats de recherche et question utilisateur avant l'envoi au LLM. C'est une pièce centrale de la qualité du RAG.

Tu es un assistant qui maîtrise les règles internes.
Réponds en t’appuyant uniquement sur les informations ci-dessous.
Si la réponse ne s’y trouve pas, réponds "Information indisponible".

[Informations de référence]
{retrieved_chunks}

[Question]
{user_question}

[Réponse]

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

Une base vectorielle dispose d’index ou de fonctions pour stocker des vecteurs de grande dimension et rechercher ceux qui sont similaires. Vous pouvez utiliser un service spécialisé ou ajouter ces fonctions à une base existante, par exemple avec pgvector pour PostgreSQL. La vitesse et la précision dépendent de l’index, du volume de données et des réglages.

Comparatif des principales bases vectorielles

BaseTypeParticularitéTarif
PineconeManagée (SaaS)Gestion de l’infrastructure confiée au serviceStarter gratuit ; Builder à 20 $/mois forfaitaires. Standard : minimum de 50 $/mois, puis facturation à l’usage au-delà (tarifs officiels)
WeaviateOSS + cloudAPI GraphQL, recherche hybrideLogiciel OSS gratuit. Cloud : offre Free et Flex à partir de 45 $/mois (tarifs officiels)
QdrantOSS + cloudRecherche vectorielle et filtrage des métadonnéesAuto-hébergement ou Cloud ; ressources d’exécution et tarifs Cloud distincts
ChromaOSSUtilisable depuis PythonRessources et exploitation de l’auto-hébergement à prévoir séparément
pgvectorExtension PostgreSQLS'intègre à un PostgreSQL existantVérifier les conditions de l’extension et le coût d’exploitation de la base
MilvusOSS + cloudConstruction d’un système de recherche vectorielleAuto-hébergement ou Zilliz Cloud ; conditions tarifaires distinctes
ElasticsearchMoteur de rechercheRecherche vectorielle et recherche par mots-clésSelon la distribution, les fonctions et le contrat ; services managés disponibles
Vertex AI Vector SearchGoogle CloudIntégré à l'écosystème GCPÀ l'usage

Laquelle choisir ?

Les tarifs de Pinecone et Weaviate ont été vérifiés sur leurs pages officielles le 9 octobre 2026. Même avec un logiciel gratuit, les serveurs et la maintenance de l’auto-hébergement ont un coût distinct. Dans le cloud, le total dépend notamment du stockage, des recherches, des fonctions d’IA supplémentaires et des sauvegardes.

  • Tester la recherche en Python : Chroma, par exemple (préparer les paquets et les modèles nécessaires)
  • Réutiliser PostgreSQL : pgvector (tout reste dans la même BDD)
  • Confier l’infrastructure à un service : Pinecone ou un autre service managé (les index, la capacité et les droits restent à configurer)
  • Auto-héberger : Qdrant, Weaviate ou une autre solution (gérer l’exploitation et les droits)
  • Traiter de nombreux documents : envisager Milvus ou d’autres candidats et évaluer les index, la capacité et la recherche sur les données réelles

Pour le choix de l'hébergement, voir aussi PaaS (Vercel, etc.) vs hébergement mutualisé, VPS et cloud.

6. Principaux cas d'usage

Le RAG peut servir à répondre à partir de documents internes ou d’informations produit. Voici des exemples d’usages.

Cas 1 : Questions-réponses sur la documentation interne (base de connaissances)

Règlements internes, manuels, spécifications techniques, comptes rendus ou supports commerciaux peuvent être recherchés pour répondre aux salariés. Il faut définir les documents accessibles à chaque utilisateur et répercuter leurs modifications dans l’index.

Cas 2 : automatisation du support client

La FAQ et l’historique des demandes de support alimentent un système RAG pour automatiser le premier niveau via chatbot. Les opérateurs humains prennent en charge les cas complexes.

Cas 3 : Questions-réponses spécialisées (juridique, médical)

La recherche dans la jurisprudence, les articles médicaux ou les recommandations peut aider à réunir des informations que des professionnels examineront. Le système doit afficher les sources et prévoir la vérification humaine de leur applicabilité et du contenu des réponses. La présence de citations ne garantit pas la justesse ni la sécurité d’une décision.

Cas 4 : recherche et résumé d'articles scientifiques

La recherche dans des articles ou résumés dont l’utilisation est autorisée peut fournir des informations pour des questions comme « Quelles sont les tendances de ce domaine ? » ou « Quelles recherches sont liées à cette méthode ? ». Indiquez la portée et la date des documents obtenus, puis vérifiez les résultats et les conditions de l’étude dans le texte original.

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

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

Cas 6 : chat de documentation pour développeurs

Rechercher dans la documentation officielle d’une bibliothèque permet de répondre à des questions comme « Existe-t-il un exemple pour ce traitement ? ». Incluez la version visée dans les critères de recherche pour éviter de mélanger des documentations de versions différentes.

Cas 7 : recherche et explication dans une base de code interne

Le code et les documents de conception peuvent être recherchés pour répondre à « Comment utiliser cette fonction ? » ou « Quels fichiers contiennent un traitement similaire ? ». Consulter le code peut aussi aider GitHub Copilot Chat et Cursor, Claude Code et d’autres outils de développement assisté par IA, mais leur traitement interne n’est pas nécessairement identique au schéma présenté ici.

Cas 8 : nouvelles optimisations IA comme llms.txt

llms.txt propose de fournir un guide textuel vers les documents d’un site. Ce fichier peut servir de point de départ à la recherche ou à la collecte de documents, mais ce n’est pas une norme garantissant que l’IA le lira ou citera correctement les documents.

7. RAG vs fine-tuning — que choisir ?

Pour donner du savoir spécifique à un LLM, le fine-tuning est l'autre approche fréquemment évoquée. RAG et fine-tuning sont fondamentalement différents.

RAG vs Fine-tuning

Deux approches radicalement différentes pour donner du savoir au LLM

RAG
Récupère les informations dans une base externe au moment de l’exécution
Approche
À chaque question, on cherche les passages pertinents dans une base et on les transmet au LLM
Avantages
+ Mettre à jour les documents et l’index sans réentraîner le modèle
+ Sources citables (justification claire)
+ Chercher à produire des réponses fondées sur les sources
+ Tester la consultation de documents sans tâche d’entraînement
+ Données dynamiques / temps réel possibles
Inconvénients
- Le RAG ne modifie pas les poids du modèle
- Qualité dépendante de la recherche
- Prompts longs, coût d'inférence accru
Cas d'usage adaptés
Questions-réponses internes / FAQ / droit / médecine / actualités
Fine-tuning
Ajuster le comportement du modèle à partir d’exemples d’entraînement
Approche
Préparer des exemples d’entrées et de sorties attendues, puis ajuster les poids du modèle par un entraînement supplémentaire
Avantages
+ Apprend le style, le ton et la voix de marque
+ Peut permettre de raccourcir les prompts nécessaires
+ Maîtrise du vocabulaire métier
+ Ajuster les réponses pour une tâche particulière
+ Choisir l’exploitation selon le modèle et la méthode employés
Inconvénients
- Préparer les exemples, entraîner et évaluer
- Modifier les connaissances apprises nécessite un nouvel entraînement
- L’entraînement seul ne recherche ni ne vérifie les sources actuelles
Cas d'usage adaptés
Style spécifique / langage métier / inférence optimisée

Consulter des documents et ajuster le comportement répondent à des objectifs distincts. Combinez-les si nécessaire et évaluez le résultat.

Différences fondamentales

CritèreRAGFine-tuning
ApprocheTransmettre des informations au moment de l’exécutionRéentraîner le modèle en amont
Mise à jour des connaissancesMettre à jour les documents et l’index, puis intégrer les changementsEntraînement supplémentaire pour modifier les connaissances apprises
Travail de mise en placePréparation des documents, index, recherche, droits et évaluationPréparation des exemples, entraînement et évaluation
Coûts d’exploitationRecherche, stockage, génération, mise à jour et évaluationGénération, nouvel entraînement, stockage et évaluation ; selon le mode de fourniture
Réponses erronéesDes documents peuvent être manqués ou mal interprétésDes réponses erronées restent possibles après l’entraînement
Citation des sourcesLes sources des documents obtenus peuvent être affichées ; leur exactitude reste à vérifierL’entraînement seul ne garantit pas l’obtention ni la vérification des sources
Style et tonFournir des instructions et des exemples, sans modifier les poidsAjuster le comportement à partir des exemples d’entraînement
Informations qui changentPrévoir la récupération de documents mis à jourSans recherche ou autre outil, les changements postérieurs à l’entraînement ne peuvent pas être vérifiés
Données confidentiellesExaminer les circuits de recherche, d’embedding, de génération et de journalisationExaminer les circuits d’entraînement, de génération, de stockage et de journalisation

Quand le RAG est préférable

  • Connaissances mises à jour souvent (actu, docs internes, catalogue produits)
  • Nécessite de citer des sources (juridique, médical, finance)
  • Les documents nécessaires changent selon la question et vous voulez envisager la recherche de passages pertinents plutôt que transmettre systématiquement tous les documents
  • Commencer un prototype qui consulte les documents sans réentraîner le modèle

Quand le fine-tuning est préférable

  • Imposer un style / ton (voix de marque, personnage)
  • Apprendre des tournures spécifiques à un domaine (vocabulaire médical, style juridique)
  • Évaluer les économies éventuelles liées à des prompts plus courts ou à un modèle plus petit, en incluant le coût de l’entraînement
  • Vous pouvez préparer des exemples de réponses attendues et des données d’évaluation

Les conditions d’accès à l’entraînement supplémentaire varient selon le service. Dans la documentation officielle d’OpenAI consultée le 9 octobre 2026, le fine-tuning n’est pas proposé aux nouveaux utilisateurs. Vérifiez d’abord les modèles disponibles et les conditions contractuelles.

Combiner et évaluer si nécessaire

Le RAG et le fine-tuning peuvent être combinés. Vous pouvez, par exemple, ajuster le format des réponses par un entraînement supplémentaire et fournir les documents mis à jour au moyen de la recherche. Combiner les deux ne garantit toutefois pas une amélioration de la qualité.

Définissez d’abord les réponses attendues et la méthode d’évaluation, puis testez si des instructions ou des documents supplémentaires suffisent. Envisagez le RAG pour consulter des sources et le fine-tuning pour ajuster le comportement. Comparez les coûts, la vitesse et la qualité sur vos entrées réelles. La démarche d’amélioration d’OpenAI passe aussi par l’évaluation et l’amélioration des instructions avant d’envisager un entraînement pour les usages qui en ont besoin. L’exécution locale d’un modèle ajusté dépend de la distribution de ses poids, de sa licence et de l’environnement d’exécution.

8. Avant de construire le vôtre — testez avec vos propres documents

Avant de construire votre propre RAG, vérifiez avec vos documents si le schéma « chercher puis répondre » est vraiment utile. Cela évite des détours et, dans la plupart des cas, le premier test ne demande aucun code.

Étape 1 : estimez si vous pouvez transmettre tous les documents

Si tous les documents tiennent dans la fenêtre de contexte du modèle choisi, vous pouvez aussi les transmettre sans étape de recherche. Dans son explication de Contextual Retrieval publiée en 2024, Anthropic proposait de placer directement dans le prompt une base de moins de 200 000 tokens (environ 500 pages) et d’utiliser la mise en cache pour améliorer l’efficacité (explication officielle). Ce nombre n’est pas un seuil universel pour tous les modèles. Décidez selon la limite d’entrée du modèle actuel, la longueur des documents, la qualité des réponses et le coût.

Étape 2 : mettez les documents dans une fonction « Projets » prête à l’emploi et posez des questions

Les Projects de Claude basculent automatiquement en RAG lorsque les connaissances du projet approchent la limite de contexte, et peuvent contenir jusqu'à 10 fois plus de contenu. C'est une fonction des offres payantes ; une fois activée, un indicateur s'affiche et Claude utilise un outil « project knowledge search » pour répondre (Centre d'aide Claude). Les Projects de ChatGPT permettent aussi d'ajouter des fichiers et de les interroger, avec des limites, comme le nombre de fichiers, fixées selon l'offre.

Étape 3 : testez avec 10 questions dont vous connaissez déjà la réponse

Rédigez 10 questions dont vous savez où se trouve la réponse dans les documents, et notez trois points.

  1. La réponse est-elle correcte ?
  2. Le passage cité comme preuve est-il le bon ?
  3. Quand vous posez une question dont la réponse n'est pas dans les documents, le dit-il ?

Si la troisième vérification produit des réponses inventées, répétez la consigne « Indique que l’information ne figure pas dans les documents lorsqu’elle est absente », puis vérifiez à nouveau. Dix questions sont un exemple de premier essai. Réussir la plupart d’entre elles ne prouve ni l’aptitude à la production ni la sécurité. Élargissez l’évaluation aux questions importantes, aux documents similaires, aux contradictions et aux droits de consultation.

Étape 4 : si vous avez besoin de contrôle, comparez construction interne et service managé

SignePoints à vérifier pour comparer les options
Nombreux documents ou mises à jour quotidiennesVérifier la capacité, l’ingestion automatique et la mise à jour de l’index
Tout le monde n'a pas le droit de voir les mêmes documentsVérifier le filtrage des droits d’accès de l’utilisateur à l’étape de recherche (voir « sécurité » dans la FAQ)
Vous voulez appeler les réponses depuis des systèmes internes ou des applicationsVérifier les API, les intégrations, l’authentification et les tarifs
La recherche rate souvent le bon passageVérifier si la recherche, le reclassement et l’évaluation peuvent être ajustés

À titre d’exemple d’amélioration de la recherche, Anthropic rapporte que Contextual Embeddings et Contextual BM25 ont réduit de 49 % le taux d’échec de recherche parmi les 20 premiers fragments, et de 67 % avec le reclassement (conditions et résultats de son expérience). Il s’agit d’une mesure de recherche sur les données d’évaluation de l’entreprise, pas d’une garantie que vos réponses erronées diminueront dans les mêmes proportions.

La version minimale à construire soi-même est dans la section suivante ; les améliorations pour la production, comme la recherche hybride et le reranking, sont traitées dans le guide d'implémentation du RAG et des bases vectorielles.

9. Implémentation — un RAG en LangChain

Après un tour des principaux frameworks, voici un exemple minimal en Python.

Frameworks principaux

FrameworkLangageParticularité
LangChainPython / JSIntégration de la recherche, des modèles et des sources de données
LlamaIndexPythonSpécialisé dans la connexion aux données et l'indexation
HaystackPythonEntreprise, contrôle fin
Semantic KernelC# / PythonDéveloppé par Microsoft, intégration avec .NET
DSPyPythonOptimisation automatique de prompts
Implémentation maisonAu choixCombiner recherche et génération selon les besoins

Exemple minimal de RAG avec LangChain

Cet exemple pédagogique recherche les passages pertinents d’un PDF et les fournit au modèle pour qu’il réponde. LangChain 1.x nécessite Python 3.10 ou une version ultérieure. Configurez la clé API dans la variable d’environnement OPENAI_API_KEY et préparez un environnement ayant accès au modèle choisi dans l’API d’OpenAI. Ne placez pas la clé dans le code ni dans un dépôt public.

Cet exemple envoie le texte du PDF et la question à l’API d’embedding, puis les résultats de recherche et la question à l’API du LLM. Exécuter Chroma sur votre ordinateur ne rend pas tout le traitement local. L’API a des tarifs et des conditions distincts de l’abonnement ChatGPT ; testez avec des documents non confidentiels que vous êtes autorisé à transmettre. Ce code est un exemple pédagogique dont le fonctionnement n’a pas été vérifié. Avant de l’exécuter, comparez-le avec la documentation officielle de la version de la bibliothèque que vous utilisez.

# pip install -U langchain-openai langchain-chroma langchain-text-splitters langchain-community pypdf
from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_chroma import Chroma

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

# 2. Découpage 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)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})

# 4. Recherche (les 3 chunks les plus proches de la question)
question = "Combien de jours de congés payés ai-je ?"
found = retriever.invoke(question)
context = "\n\n".join(d.page_content for d in found)

# 5. Transmettre les sources et générer la réponse
llm = ChatOpenAI(model="gpt-6-luna")
answer = llm.invoke([
    {"role": "system", "content": "Réponds uniquement à partir du document ci-dessous. Si la réponse n'y figure pas, dis-le.\n\n" + context},
    {"role": "user", "content": question},
])
print(answer.content)
print("Sources :", [d.metadata for d in found])

Cet exemple recherche les passages pertinents du PDF, puis transmet les informations de référence à GPT-6 Luna pour générer la réponse. Il affiche également les métadonnées des documents obtenus. Les informations telles que les numéros de page dépendent des documents et du chargeur ; l’exactitude des citations dans la réponse doit être vérifiée séparément.

gpt-6-luna est un identifiant vérifié le 9 octobre 2026 sur la page officielle du modèle. Avant utilisation, consultez la liste officielle des modèles pour vérifier les API compatibles, les conditions d’accès et les tarifs. Comparez les candidats sur les mêmes documents et questions : lecture des sources, qualité des réponses, vitesse et coût.

Le code utilise la structure des paquets LangChain 1.x. Dans LangChain 1.0, langchain.chains (qui contenait notamment RetrievalQA) a été déplacé vers le paquet séparé langchain-classic. Ici, le découpage est importé depuis langchain_text_splitters et la structure appelée « 2-Step RAG » par la documentation officielle est écrite en deux étapes : rechercher, puis fournir les sources au modèle pour répondre. Vérifiez les chemins d’import et les exigences Python dans le guide officiel de migration. Pour votre implémentation, enregistrez les versions des paquets et vérifiez le fonctionnement dans un environnement reproductible.

Pour une mise en production

  • Découpage optimisé (sémantique, hiérarchique, etc.)
  • Recherche hybride (recherche vectorielle + BM25)
  • Reranking (Cohere Rerank, voyage-rerank, etc.)
  • Reformulation des requêtes (HyDE, Multi-Query, etc.)
  • Pipeline d'évaluation (RAGAS pour évaluer automatiquement)

10. Défis du RAG et solutions

En production, les points suivants doivent être vérifiés.

Défi 1 : découper les fragments

La façon de découper change radicalement la précision. Trop court, on perd le contexte ; trop long, la recherche se dégrade.

Solutions :

  • Découpage sémantique (par unités de sens)
  • Chevauchement entre fragments (overlap)
  • Fragments hiérarchiques (rechercher les fragments enfants, fournir le fragment parent)

Défi 2 : la qualité de la recherche

La recherche peut renvoyer un fragment qui semble pertinent mais ne l’est pas, ou manquer le bon passage.

Solutions :

  • Recherche hybride (recherche vectorielle + BM25)
  • Reranking après la recherche
  • Générer plusieurs requêtes (reformulations)

Défi 3 : la fenêtre de contexte

Le nombre de tokens acceptés par le LLM est limité : on ne peut pas lui transmettre tous les fragments.

Solutions :

  • Limiter K (3 à 5 fragments)
  • Résumer en amont
  • Utiliser un LLM à long contexte (la limite varie selon le modèle, et certains acceptent aujourd'hui de l'ordre d'un million de tokens ; vérifiez celle de votre modèle dans la documentation officielle)

Défi 4 : évaluer le RAG

Mesurer objectivement la qualité des réponses est difficile. Comment construire le jeu de réponses de référence ?

Solutions :

  • Utiliser RAGAS (framework OSS d'évaluation RAG)
  • Indicateurs automatiques : précision de la réponse, pertinence, fidélité au contexte récupéré
  • LLM-as-a-Judge (un autre LLM évalue les réponses)

Défi 5 : multilingue et multimodal

Documents mêlant plusieurs langues, PDF avec images, tableaux, graphiques : la prise en charge demande un traitement adapté.

Solutions :

  • Embeddings multilingues (BGE-M3, Cohere Multilingual)
  • Convertir les images et tableaux en texte avant la recherche (OCR + VLM)
  • Embeddings multimodaux (CLIP, Nomic, etc.)

11. Outils et services principaux

Récapitulatif des principaux outils utiles pour bâtir un RAG, classés par catégorie.

Frameworks et bibliothèques

  • LangChain — intégration de la recherche, des modèles et des sources de données
  • LlamaIndex — spécialiste de la connexion aux données
  • Haystack — orienté entreprise
  • DSPy — optimisation automatique des prompts

Bases vectorielles managées

  • Pinecone — recherche vectorielle managée
  • Weaviate Cloud — API GraphQL
  • Qdrant Cloud — service managé de Qdrant
  • Zilliz Cloud — version managée de Milvus

Bases vectorielles OSS auto-hébergées

  • Chroma — recherche vectorielle accessible depuis Python
  • Qdrant — recherche vectorielle et filtres
  • Weaviate — version OSS
  • Milvus — base de données vectorielle
  • pgvector — extension PostgreSQL

Modèles d'embedding

  • OpenAI text-embedding-3 — génération d’embeddings par API
  • Voyage AI — présenté dans la documentation d'Anthropic
  • Cohere Embed — multilingue
  • BGE-M3 — modèle multilingue candidat à l’exécution locale

Services RAG no-code / managés

  • ChatGPT Projects / Custom GPTs existants — fonctions prêtes à l’emploi pour consulter des documents supplémentaires ; vérifier le traitement et les conditions de chaque fonction
  • Claude Projects — la fonction RAG d'Anthropic
  • Notion AI — recherche dans vos documents Notion
  • Microsoft Copilot (Microsoft 365) — candidat pour consulter les documents internes ; vérifier le contrat, les connexions et les droits
  • 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 managé d'AWS

Outils d'évaluation

  • RAGAS — framework OSS d'évaluation RAG
  • TruLens — évaluation générale d’applications utilisant des LLM
  • LangSmith — suivi des exécutions et évaluation dans l’écosystème LangChain

Pour approfondir le fine-tuning, lisez aussi qu'est-ce que le fine-tuning : ce guide pour débutants explique quand l’utiliser plutôt que le RAG et présente des méthodes comme LoRA/QLoRA.

FAQ

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

Les fonctions comme Projects de ChatGPT peuvent consulter les documents ajoutés, mais tous les fichiers ne sont pas nécessairement traités de la même manière. L’explication officielle pour Enterprise distingue l’ajout de texte au contexte et la recherche, le traitement des feuilles de calcul en Python et l’interprétation des images. Cette explication concerne Enterprise et ne garantit pas le fonctionnement interne de toutes les offres.

Pour les développeurs, OpenAI propose dans la Responses API l’outil File Search : recherche sémantique et par mots-clés dans les documents téléversés. Ce service API est distinct des fonctions prêtes à l’emploi de ChatGPT. Vous pouvez aussi construire votre système avec LangChain. La section 8 décrit les conditions de passage au RAG dans Claude Projects.

Pour créer de nouveaux Custom GPTs, les instructions officielles actuelles indiquent que les comptes personnels Free, Go, Plus et Pro ne peuvent pas en créer ni en publier de nouveaux. L’utilisation et la modification de GPTs existants, ainsi que la création dans des comptes d’organisation, répondent à des conditions distinctes.

Q. Combien coûte l'exploitation d'un RAG ?

Le nombre de documents et de questions ne suffit pas à déterminer le coût mensuel. La longueur des documents, les mises à jour, le volume transmis après la recherche, la longueur des réponses, le modèle et les tarifs de la base interviennent. Les principaux postes sont l’embedding des documents et des questions, le stockage et la recherche, les entrées et sorties du LLM, et la mise à jour de l’index. Prévoyez aussi les serveurs, l’évaluation, la surveillance et la maintenance.

Commencez avec des documents non confidentiels : relevez les tokens d’entrée et de sortie ainsi que le volume de recherche par question, puis extrapolez au nombre prévu de questions. Ajoutez les minimums de facturation de la base et les mises à jour, à partir des tarifs officiels de l’API et des bases.

Q. En quoi le RAG diffère-t-il du téléversement de fichiers dans ChatGPT ?

Le téléversement de ChatGPT est une fonction prête à l’emploi pour consulter des documents. Selon le format et la fonction, le traitement peut utiliser la recherche, la lecture directe ou du code. Avec un RAG construit en interne, vous concevez la recherche, les mises à jour de l’index, les droits par utilisateur, l’évaluation et les destinataires des données ; cela nécessite du développement et de l’exploitation. Un service RAG managé est une autre option.

Évaluez les fonctions existantes selon la capacité, la fréquence des mises à jour, les droits et les intégrations API. Une construction interne peut prévoir de nombreux documents ou un hébergement sur vos propres serveurs, sans garantir automatiquement la capacité ou la sécurité.

Q. Le RAG fait-il complètement disparaître les hallucinations ?

Non, pas complètement. Avec le RAG, on peut encore se tromper si (1) aucun document pertinent n’est trouvé, (2) les fragments sont mal interprétés par le LLM, (3) il y a des contradictions entre les fragments. Quelques bonnes pratiques : ajouter dans le prompt « Si l'information n'est pas dans le contexte, réponds 'Information indisponible' », exiger les sources, évaluer en continu avec RAGAS. Ces mesures ne garantissent pas une réponse correcte à chaque question : pour le médical, le juridique ou tout usage critique, une validation humaine reste indispensable.

Q. Comment bien gérer le français ?

Envisagez des modèles d’embedding multilingues tels qu’OpenAI text-embedding-3, Cohere Embed ou BGE-M3. Lors du découpage, tenez compte de la ponctuation et des limites entre les mots français. Évaluez aussi le modèle de réponse sur les documents et les questions visés.

La prise en charge du français ne détermine pas à elle seule le classement des modèles. Comparez, sur les mêmes documents et questions, les passages manqués, la concordance des sources, l’exactitude des réponses et le coût. Réévaluez après un changement de version ou de réglage.

Q. Quelle différence entre RAG et agent IA ?

Le RAG transmet au modèle des documents trouvés par la recherche pour qu’il génère une réponse. L’exemple de base est un RAG en deux étapes : rechercher, puis générer, mais le RAG ne se limite pas à un traitement fixe. Dans un Agentic RAG, un agent décide s’il doit rechercher et quels outils employer. Un Hybrid RAG peut inclure la vérification des résultats ou une nouvelle recherche.

Un agent peut choisir et exécuter des outils, tels que la recherche ou le calcul, selon son objectif. Le RAG peut en faire partie, mais tous les agents ne l’utilisent pas. Le guide de recherche de LangChain distingue ces architectures.

Q. Côté sécurité, mes données confidentielles sont-elles protégées ?

Il ne suffit pas d’affirmer « c’est du RAG, donc c’est sûr » ou « la base est locale, donc aucune donnée ne sort ». Examinez les informations et leurs destinataires à chaque étape : lecture des documents, embedding, recherche, génération, journaux et évaluation. Pour éviter l’envoi externe, il faut exécuter localement non seulement la base, mais aussi les modèles d’embedding et de réponse, et gérer les journaux et les circuits d’évaluation.

Par défaut, OpenAI n’utilise pas les entrées et sorties de son API pour entraîner ses modèles, sauf partage explicitement accepté. Toutefois, absence d’utilisation pour l’entraînement ne signifie pas absence de stockage. Consultez la documentation officielle de gestion des données pour les journaux habituels de surveillance des abus, le stockage d’état des fichiers et des bases vectorielles, les conditions de suppression et les contrôles de conservation disponibles. Azure décrit aussi séparément l’entraînement, le stockage et la surveillance.

Vérifiez les droits de l’utilisateur à l’étape qui limite les résultats aux documents autorisés. Rechercher des documents confidentiels puis demander au modèle de ne pas les révéler ne suffit pas. Ce sont des points de conception à vérifier : cet article ne démontre pas la protection de données confidentielles dans un environnement particulier.

Q. Quelles compétences et combien de temps pour monter un RAG ?

Un prototype pédagogique nécessite des bases de Python, la gestion des clés et des tarifs API, le chargement de documents et la vérification des résultats de recherche. Un code court ne signifie pas que la préparation de la production sera rapide.

En production, ajoutez la préparation et la mise à jour des documents, l’authentification et les droits de recherche, les données d’évaluation, la surveillance, la gestion des incidents, des journaux et des coûts. Le délai dépend des documents et des exigences : testez d’abord un petit périmètre, puis estimez les étapes restantes et les personnes nécessaires. Si vous ajoutez du fine-tuning, vérifiez aussi les conditions d’accès décrites dans la section 7.

Le 9 octobre 2026, les tarifs, les conditions de disponibilité des produits et le traitement des données API ont été revus à partir des documents officiels. L’exécution du code ou des API, les montants facturés et la protection de données confidentielles en situation réelle n’ont pas été vérifiés. Consultez les conditions les plus récentes de chaque service avant votre implémentation.