Sommaire
- 1. Le RAG, c'est quoi ? — Retrieval-Augmented Generation
- 2. Pourquoi en a-t-on besoin ? — les 3 limites du LLM seul
- 3. Fonctionnement — le RAG en 3 étapes
- 4. Les composants principaux du RAG
- 5. Qu'est-ce qu'une base vectorielle ?
- 6. Principaux cas d'usage
- 7. RAG vs fine-tuning — que choisir ?
- 8. Avant de construire le vôtre — testez avec vos propres documents
- 9. Implémentation — un RAG en LangChain
- 10. Défis du RAG et solutions
- 11. Outils et services principaux
- FAQ
« 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
Chroma / pgvector
Gemini / Llama
Manuels / FAQ
Articles / actualités
↓ Transmis au LLM
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 »
| Mot | Sens | Rôle dans un RAG |
|---|---|---|
| Retrieval | Recherche / récupération | Aller chercher dans la base les documents liés à la question |
| Augmented | Augmentation / enrichissement | Ajouter ces documents au prompt envoyé au LLM |
| Generation | Génération | Le 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 de préparation — vectoriser les documents
- Collecter les documents : PDF, Word, HTML, Markdown, etc.
- Découpage en fragments (chunks) : couper en morceaux (par exemple 500 à 1 000 caractères)
- 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)
- 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.
- É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
- É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] »
- É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 :
- La question est vectorisée : [0.12, -0.45, 0.78, ...]
- 3 fragments liés aux mots « congés » et « payés » sont récupérés
- 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é... »
- Le prompt est construit : « Référence : article 15... Question : Combien de jours de congés payés ai-je ? »
- 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 | Éditeur | Particularité |
|---|---|---|
| text-embedding-3-small | OpenAI | 1 536 dimensions par défaut ; réduction possible avec le paramètre dimensions |
| text-embedding-3-large | OpenAI | 3 072 dimensions par défaut ; réduction possible avec le paramètre dimensions |
| voyage-4 | Voyage AI | Présenté dans la documentation d'Anthropic ; existe aussi en version légère et à poids ouverts |
| Cohere Embed | Cohere | Candidat pour rechercher dans des documents multilingues |
| multilingual-e5-large | Microsoft (modèle publié) | Candidat à l’exécution locale ; vérifier les conditions d’utilisation et les ressources nécessaires |
| BGE-M3 | BAAI (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
| Base | Type | Particularité | Tarif |
|---|---|---|---|
| Pinecone | Managée (SaaS) | Gestion de l’infrastructure confiée au service | Starter gratuit ; Builder à 20 $/mois forfaitaires. Standard : minimum de 50 $/mois, puis facturation à l’usage au-delà (tarifs officiels) |
| Weaviate | OSS + cloud | API GraphQL, recherche hybride | Logiciel OSS gratuit. Cloud : offre Free et Flex à partir de 45 $/mois (tarifs officiels) |
| Qdrant | OSS + cloud | Recherche vectorielle et filtrage des métadonnées | Auto-hébergement ou Cloud ; ressources d’exécution et tarifs Cloud distincts |
| Chroma | OSS | Utilisable depuis Python | Ressources et exploitation de l’auto-hébergement à prévoir séparément |
| pgvector | Extension PostgreSQL | S'intègre à un PostgreSQL existant | Vérifier les conditions de l’extension et le coût d’exploitation de la base |
| Milvus | OSS + cloud | Construction d’un système de recherche vectorielle | Auto-hébergement ou Zilliz Cloud ; conditions tarifaires distinctes |
| Elasticsearch | Moteur de recherche | Recherche vectorielle et recherche par mots-clés | Selon la distribution, les fonctions et le contrat ; services managés disponibles |
| Vertex AI Vector Search | Google Cloud | Inté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
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ère | RAG | Fine-tuning |
|---|---|---|
| Approche | Transmettre des informations au moment de l’exécution | Réentraîner le modèle en amont |
| Mise à jour des connaissances | Mettre à jour les documents et l’index, puis intégrer les changements | Entraînement supplémentaire pour modifier les connaissances apprises |
| Travail de mise en place | Préparation des documents, index, recherche, droits et évaluation | Préparation des exemples, entraînement et évaluation |
| Coûts d’exploitation | Recherche, stockage, génération, mise à jour et évaluation | Génération, nouvel entraînement, stockage et évaluation ; selon le mode de fourniture |
| Réponses erronées | Des documents peuvent être manqués ou mal interprétés | Des réponses erronées restent possibles après l’entraînement |
| Citation des sources | Les sources des documents obtenus peuvent être affichées ; leur exactitude reste à vérifier | L’entraînement seul ne garantit pas l’obtention ni la vérification des sources |
| Style et ton | Fournir des instructions et des exemples, sans modifier les poids | Ajuster le comportement à partir des exemples d’entraînement |
| Informations qui changent | Prévoir la récupération de documents mis à jour | Sans recherche ou autre outil, les changements postérieurs à l’entraînement ne peuvent pas être vérifiés |
| Données confidentielles | Examiner les circuits de recherche, d’embedding, de génération et de journalisation | Examiner 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.
- La réponse est-elle correcte ?
- Le passage cité comme preuve est-il le bon ?
- 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é
| Signe | Points à vérifier pour comparer les options |
|---|---|
| Nombreux documents ou mises à jour quotidiennes | Vé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 documents | Vé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 applications | Vérifier les API, les intégrations, l’authentification et les tarifs |
| La recherche rate souvent le bon passage | Vé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
| Framework | Langage | Particularité |
|---|---|---|
| LangChain | Python / JS | Intégration de la recherche, des modèles et des sources de données |
| LlamaIndex | Python | Spécialisé dans la connexion aux données et l'indexation |
| Haystack | Python | Entreprise, contrôle fin |
| Semantic Kernel | C# / Python | Développé par Microsoft, intégration avec .NET |
| DSPy | Python | Optimisation automatique de prompts |
| Implémentation maison | Au choix | Combiner 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.