Qu'est-ce que mettre en place un RAG, et comment cela fonctionne-t-il ?

Mettre en place un RAG consiste à connecter un grand modèle de langage à vos propres connaissances, afin qu'il réponde à partir de vos documents plutôt que de sa mémoire. Au moment de la requête, le système cherche dans votre contenu indexé, sélectionne les passages les plus pertinents, les insère dans le prompt et demande au modèle de répondre avec des citations.

Une architecture RAG de production comporte deux pipelines :

  1. Pipeline d'ingestion : connecter les sources, analyser les fichiers, nettoyer le texte, le découper en chunks, créer les embeddings, stocker les chunks avec leurs métadonnées et leurs règles d'accès, et tout garder synchronisé.
  2. Pipeline de requête : comprendre la question, lancer une recherche hybride, reclasser les résultats, assembler le prompt, générer la réponse, joindre les citations et tout journaliser pour l'évaluation.

La plupart des échecs de RAG viennent du premier pipeline, pas du modèle. Si un tableau est analysé comme du bruit ou si une politique est coupée en deux, aucun modèle ne peut retrouver la réponse. Ce guide passe en revue chaque étape telle que nous l'abordons chez Lytvynov Production. Pour la partie réalisation, consultez nos services de développement RAG.

Comment ingérer et analyser les documents ?

L'ingestion doit transformer chaque source en texte propre, doté de structure et de métadonnées : titre, intertitres, URL source, auteur, dates, type de document, langue et personnes autorisées à le lire. Consacrez-y un vrai temps, car la qualité de l'analyse fixe le plafond de la qualité des réponses.

Sources courantes et ce qu'elles demandent :

  • PDF et fichiers Office : une analyse qui tient compte de la mise en page et conserve intertitres, listes et tableaux ; de l'OCR pour les pages scannées.
  • Wikis et centres d'aide (Confluence, Notion, Zendesk, Intercom) : des connecteurs API qui récupèrent aussi les permissions et les dates de mise à jour.
  • Tickets, conversations et e-mails : reconstitution des fils, déduplication des réponses citées et suppression des signatures.
  • Bases de données et catalogues produits : convertir les enregistrements en textes courts et lisibles, ou les interroger directement via des outils au lieu de les vectoriser.

Normaliser de nombreux formats désordonnés en une seule table propre est souvent la partie la plus difficile. Dans le projet AI Grief Companion, nous avons écrit des parseurs pour dix formats d'export de conversations (WhatsApp, Messenger, Instagram, Discord, iMessage depuis une sauvegarde d'iPhone, SMS Android et d'autres) et les avons tous normalisés dans une seule table de messages avant la moindre étape IA. La même leçon vaut pour les données d'entreprise : investissez d'abord dans un modèle normalisé unique. Notre plateforme de calendrier sportif montre la même rigueur hors IA, avec un moteur d'analyse qui unifie les données de centaines de calendriers externes.

Quelle stratégie de chunking adopter ?

Découpez d'abord selon la structure du document, puis selon la taille. Coupez sur les intertitres, les sections, les éléments de liste ou les fils de messages, puis plafonnez les chunks à une taille qui contient une idée complète, généralement 200 à 800 tokens avec un léger chevauchement.

Stratégie Fonctionnement Adaptée à Points de vigilance
Taille fixe avec chevauchement Découpe tous les N tokens, chevauchement de 10 à 20% Base de départ rapide, texte homogène Coupe les phrases, tableaux et listes en deux
Selon la structure Découpe sur les intertitres, sections, paragraphes Documentation, politiques internes, contrats Les sections très longues nécessitent une seconde découpe
Sémantique Découpe là où la similarité thématique chute Longs textes narratifs, transcriptions Plus de calcul à l'ingestion, plus difficile à déboguer
Parent et enfant Recherche sur de petits chunks, renvoi de la section parente plus large Recherche précise avec assez de contexte Plus de stockage, plus de tokens dans le prompt
Par enregistrement Un chunk par ticket, produit, entrée de FAQ ou fil de messages Données structurées ou semi-structurées Les enregistrements très courts peuvent manquer de contexte

Ajoutez du contexte à chaque chunk : faites-le précéder du titre du document et du chemin de section ("Politique de remboursement > Clients UE > Biens numériques") pour qu'il ait du sens isolément. Cette seule étape améliore souvent la recherche davantage qu'un changement de modèle d'embeddings.

Comment choisir un modèle d'embeddings ?

Choisissez un modèle d'embeddings qui gère vos langues et le vocabulaire de votre domaine, puis testez deux ou trois candidats sur votre propre jeu de référence. Les API d'embeddings hébergées d'OpenAI et d'autres fournisseurs sont un choix par défaut raisonnable ; les modèles d'embeddings à poids ouverts sont un bon choix lorsque les données doivent rester dans votre infrastructure.

Enregistrez le modèle d'embeddings et sa version avec chaque vecteur stocké. Changer de modèle plus tard implique de revectoriser tout le corpus : prévoyez-le comme une tâche de fond normale, pas comme une urgence. Pour un contenu multilingue, vérifiez qu'une question posée dans une langue retrouve des documents rédigés dans une autre si vos utilisateurs en ont besoin.

Quelle base vectorielle utiliser pour un RAG ?

Utilisez la base que votre équipe sait bien exploiter. Pour la plupart des systèmes RAG d'entreprise en dessous de plusieurs dizaines de millions de chunks, la qualité de la recherche dépend bien plus du chunking, de la recherche hybride et du reranking que du choix de la base vectorielle.

Option Type Points forts Contreparties Cas d'usage adapté
pgvector (PostgreSQL) Extension de votre base existante Une seule base pour les données, les vecteurs et les permissions ; transactions ; exploitation simple Réglages nécessaires à grande échelle ; recherche par mots-clés basique sans travail supplémentaire Produits SaaS déjà sur PostgreSQL, jusqu'à plusieurs millions de chunks
Qdrant Base vectorielle open source, auto-hébergée ou cloud Filtrage rapide sur les métadonnées, recherche hybride, usage mémoire efficace Un service de plus à exploiter et à sauvegarder Grands corpus, filtrage intensif sur les métadonnées
Weaviate Base vectorielle open source, auto-hébergée ou cloud Recherche hybride intégrée, modules de vectorisation Plus de concepts à maîtriser, plus lourde à exploiter Équipes qui veulent des fonctions de recherche prêtes à l'emploi
Pinecone Service entièrement managé Aucun travail d'infrastructure, montée en charge facile Dépendance à l'éditeur, données hors de votre cloud, coût à l'usage Équipes sans capacité d'exploitation
Elasticsearch / OpenSearch Moteur de recherche avec support vectoriel Recherche par mots-clés mature (BM25), agrégations, savoir-faire d'exploitation existant Gourmand en ressources ; fonctions vectorielles variables selon la version et la licence Entreprises qui les utilisent déjà pour la recherche

Notre choix par défaut pour les clients SaaS sur PostgreSQL est pgvector, car les permissions et les identifiants de tenant se trouvent à côté des vecteurs et il y a un système de moins à sécuriser. Nous passons à un moteur dédié lorsque le volume ou les besoins de filtrage le justifient.

Pourquoi utiliser la recherche hybride et le reranking ?

La recherche hybride combine la recherche par mots-clés (BM25) et la recherche vectorielle, car chacune trouve ce que l'autre manque. La recherche vectorielle comprend les reformulations ; la recherche par mots-clés capte les codes produits exacts, les messages d'erreur, les noms et les sigles. Un reranker reclasse ensuite les candidats combinés selon leur pertinence réelle pour la question.

Un flux de requête type : réécrire la question de l'utilisateur en requête de recherche autonome (en résolvant "il" et "cela" à partir de la conversation), lancer en parallèle la recherche par mots-clés et la recherche vectorielle avec les filtres de permissions, fusionner les résultats (la reciprocal rank fusion est une méthode simple), reclasser les 30 à 50 premiers candidats avec un cross-encoder ou une API de reranking, et garder les 5 à 10 premiers pour le prompt. Le reranking offre généralement l'un des plus gros gains de qualité par heure d'ingénierie dans un projet RAG.

Comment assembler le prompt et ajouter des citations ?

Assemblez le prompt en sections claires : règles système, passages récupérés étiquetés chacun avec un identifiant de source, historique de la conversation et question. Demandez au modèle de répondre uniquement à partir des passages, de citer les identifiants de source pour chaque affirmation et de dire clairement lorsque les sources ne contiennent pas la réponse.

Après la génération, validez les citations dans le code : chaque identifiant cité doit exister dans l'ensemble récupéré, et les réponses sans citation pour des affirmations factuelles peuvent être signalées ou régénérées. Affichez les citations dans l'interface sous forme de liens vers le document et la section d'origine. Les utilisateurs font confiance aux réponses qu'ils peuvent vérifier, et les équipes support peuvent corriger le document source au lieu de se disputer avec l'IA. Pour une vue plus large de l'intégration (streaming, garde-fous, coûts), consultez notre guide sur l'intégration de ChatGPT ou Claude dans votre produit.

Comment gérer les permissions et le contrôle d'accès dans un RAG ?

Appliquez les permissions au moment de la recherche, avant qu'un passage n'atteigne le modèle. Stockez les métadonnées d'accès (identifiant de tenant, équipe, rôle, ACL du document) avec chaque chunk et appliquez-les comme filtre dans la requête de recherche de l'utilisateur courant.

Ne comptez jamais sur le prompt pour masquer du contenu ("ne révèle pas les documents RH"), car on peut convaincre un modèle d'ignorer ses instructions. Synchronisez rapidement les changements de permissions depuis les systèmes sources et supprimez les chunks lorsque les documents sont supprimés. Dans un SaaS multi-tenant, un filtre par tenant sur chaque requête est obligatoire, et nous ajoutons des tests automatisés qui tentent de récupérer les données d'un autre tenant. Le contenu sensible peut aussi nécessiter un chiffrement au repos ; la plateforme AI Grief Companion chiffre chaque message dès l'ingestion en AES-256-GCM, message par message, et permet de tout supprimer en un clic.

Comment évaluer un système RAG ?

Évaluez la recherche et la génération séparément, à l'aide d'un jeu de référence de vraies questions. Sans jeu de référence, chaque changement est un pari, et les équipes finissent par ajuster les prompts sur le dernier exemple dont quelqu'un s'est plaint.

  • Jeu de référence : 100 à 300 vraies questions avec les réponses attendues et les documents sources qui devraient être trouvés. Incluez des questions dont la réponse ne figure pas dans le corpus.
  • Métriques de recherche : rappel à k (le bon passage apparaît-il dans les k premiers résultats ?) et qualité du classement.
  • Métriques de génération : fidélité (chaque affirmation est-elle étayée par les passages récupérés ?), pertinence de la réponse, complétude et exactitude des citations. Un second modèle peut les noter à l'aide d'une grille, avec une vérification humaine sur un échantillon.
  • Signaux de production : pouces vers le bas, reformulations successives, escalades vers un humain et questions restées sans réponse.

Rejouez le jeu à chaque changement d'analyse des documents, de chunking, d'embeddings, de paramètres de recherche, de prompts ou de modèles, et bloquez les mises en production qui font baisser les scores.

Comment garder un index RAG à jour ?

Gardez l'index à jour grâce à une synchronisation incrémentale : détectez les documents nouveaux, modifiés et supprimés dans chaque source et ne mettez à jour que les chunks concernés. Stockez une empreinte du contenu et une date de mise à jour par document pour ignorer les fichiers inchangés.

Les webhooks des systèmes sources permettent des mises à jour quasi temps réel ; des tâches planifiées (toutes les heures ou chaque nuit) suffisent pour les contenus qui évoluent lentement. Ajoutez des métadonnées de fraîcheur à la recherche pour que les nouvelles versions d'une politique passent devant les anciennes, et archivez les documents remplacés au lieu de les laisser en concurrence. Surveillez les tâches de synchronisation comme n'importe quel pipeline de production, car un échec silencieux rend l'assistant sûr de lui et dans l'erreur sur les changements du mois dernier.

Quels sont les modes d'échec les plus fréquents d'un RAG ?

Les échecs les plus fréquents sont des échecs de recherche qui ressemblent à des échecs du modèle. Lorsqu'une réponse est fausse, vérifiez d'abord si le bon passage a seulement été récupéré.

Symptôme Cause probable Correctif
Réponse vague ou "je ne sais pas" alors que la réponse existe Mauvaise analyse ou mauvais chunking, absence de recherche par mots-clés Chunking selon la structure, recherche hybride, en-têtes de contexte sur les chunks
La réponse mélange anciennes et nouvelles règles Documents obsolètes ou en double Synchronisation incrémentale, versioning, bonus de fraîcheur
Réponse assurée absente des sources Consignes d'ancrage faibles, aucun contrôle des citations Règle "répondre uniquement à partir du contexte", validation des citations, évaluation de la fidélité
L'utilisateur voit un contenu auquel il ne devrait pas avoir accès Permissions appliquées dans le prompt, pas dans la recherche Filtres ACL au moment de la requête, tests d'isolation des tenants
Bonne démo, mauvaise production Questions de test rédigées par l'équipe, pas par les utilisateurs Jeu de référence issu des vrais journaux, revue hebdomadaire des échecs
Les coûts augmentent avec l'usage Trop de passages ou des passages trop longs par appel Reranking, moins de passages, cache de prompts

RAG, fine-tuning ou contexte long : que choisir ?

Choisissez le RAG pour les connaissances, le fine-tuning pour le comportement et le contexte long pour un contenu réduit propre à chaque requête. Ces approches sont complémentaires, pas concurrentes, et beaucoup de systèmes en production en combinent deux.

Approche Idéale pour Mises à jour Profil de coût Limites
RAG Connaissances volumineuses, changeantes, soumises à permissions ; réponses avec citations Immédiates, il suffit de réindexer un document Indexation plus recherche et tokens de prompt à chaque requête Qualité bornée par l'analyse des documents et la recherche
Fine-tuning (par ex. LoRA) Style, ton, format ou comportement ciblé constants Nécessite un réentraînement Sessions d'entraînement plus hébergement du modèle ajusté Peu adapté au stockage de faits qui changent ; pas de citations
Contexte long Un contrat, une partie de codebase ou un rapport par requête Rien à mettre à jour Coût en tokens élevé par requête, sauf mise en cache Plus lent, coûteux à grande échelle, l'attention peut dériver sur des entrées très longues

La plateforme AI Grief Companion est un exemple réel de combinaison d'approches. Elle construit un profil de personnalité, un graphe de faits dans Neo4j et une préparation RAG à partir de l'historique de conversations de l'utilisateur, et entraîne des adaptateurs LoRA (SFT et CPT sur Qwen2.5-7B avec QLoRA 4 bits) pour la voix d'une personne précise, vLLM chargeant le bon adaptateur au moment de la requête. La conversation s'appuie sur l'étape déjà prête, si bien qu'on peut échanger avant la fin de l'entraînement. Le fine-tuning gère la façon dont la personne écrit ; la recherche gère ce qu'elle a dit.

Comment nous menons les projets RAG

Chez Lytvynov Production, nous commençons les projets RAG par un court appel de cadrage : nous examinons un échantillon de vos vrais documents et les questions que posent les utilisateurs, puis vous remettons un devis ferme pour le développement. Le premier jalon construit un jeu de référence et y teste l'analyse et la recherche. Nous livrons ensuite par jalons, avec les scores d'évaluation communiqués à chacun d'eux. Si vous prévoyez un assistant de connaissances ou un chatbot IA sur les données de votre entreprise, contactez-nous.

Études de cas

Questions fréquemment posées

La génération augmentée par la recherche (RAG, retrieval-augmented generation) est un schéma dans lequel un système IA commence par chercher dans vos propres documents les passages pertinents pour une question, puis transmet ces passages à un grand modèle de langage avec la question. Le modèle rédige une réponse fondée sur vos sources et peut les citer. Le RAG permet à un modèle généraliste de répondre à des questions sur des informations privées, récentes ou propres à l'entreprise sans le réentraîner.

Il n'y a pas de meilleur choix unique. Si vous utilisez déjà PostgreSQL, pgvector suffit souvent jusqu'à plusieurs millions de chunks et garde données et permissions au même endroit. Qdrant et Weaviate conviennent aux charges plus importantes ou très orientées recherche, Pinecone aux équipes qui veulent un service entièrement managé, et Elasticsearch ou OpenSearch se justifient si vous vous en servez déjà pour la recherche par mots-clés. La qualité de la recherche dépend davantage du chunking et de la recherche hybride que de la base.

Un assistant RAG ciblé sur une seule source de connaissances bien structurée, comme un centre d'aide ou une bibliothèque de politiques internes, demande généralement 4 à 8 semaines pour atteindre la production avec évaluation et monitoring. Plusieurs sources, des PDF scannés, des permissions par utilisateur et des intégrations avec un outil de ticketing ou un CRM portent en général ce délai à 8 à 16 semaines. L'essentiel de l'effort porte sur l'analyse des documents, le contrôle d'accès et l'évaluation.

Constituez un jeu de référence de 100 à 300 vraies questions avec les réponses attendues et les documents qui devraient être retrouvés. Mesurez la recherche (les bons passages apparaissent-ils dans les premiers résultats ?) séparément de la génération (la réponse est-elle fidèle à ces passages, complète et correctement citée ?). Rejouez le jeu à chaque changement de chunking, d'embeddings, de prompts ou de modèles, et ajoutez-y chaque semaine les questions de production qui ont échoué.

Utilisez le RAG lorsque les réponses dépendent de connaissances volumineuses, changeantes ou soumises à des permissions. Utilisez le fine-tuning lorsque vous avez besoin d'un style, d'un format ou d'un comportement ciblé et constant que les prompts ne permettent pas d'obtenir. Utilisez le contexte long lorsque le contenu pertinent est réduit, tient dans la fenêtre et change à chaque requête, comme un contrat unique. Beaucoup de systèmes en production combinent le RAG avec un fine-tuning léger ou un contexte long.

Commençons votre projet
Réservez un appel