Construisez des systèmes de génération augmentée par récupération qui fonctionnent réellement en production. Des décisions d'architecture aux cadres d'évaluation, ce guide couvre tout ce dont vous avez besoin pour livrer des systèmes RAG fiables.
Retrieval-Augmented Generation (RAG) est un modèle d'architecture qui enrichit les grands modèles de langage en leur fournissant un contexte pertinent issu de sources de connaissances externes. Au lieu de s'appuyer uniquement sur les données d'entraînement du modèle, le RAG récupère des documents pertinents au moment de l'inférence et les utilise pour ancrer les réponses du modèle.
Cette approche résout plusieurs limites fondamentales des LLM :
Cependant, les systèmes RAG ne valent que par leur implémentation. Un mauvais découpage, une récupération inadéquate ou des prompts mal alignés peuvent produire des systèmes qui hallucinent autant que des LLM classiques — mais avec une fausse assurance. Ce guide couvre les modèles qui fonctionnent.
Un système RAG de production se compose de six éléments fondamentaux, chacun avec ses propres considérations d'optimisation. Comprendre ces éléments est essentiel pour construire des systèmes qui passent à l'échelle.
Charger et prétraiter les documents sources de formats divers
Diviser les documents en fragments sémantiquement pertinents
Convertir les fragments de texte en représentations vectorielles denses
Stocker et indexer les embeddings pour une récupération efficace
Trouver les fragments pertinents pour une requête donnée
Générer des réponses à partir du contexte récupéré
Pour les systèmes de production, séparez votre pipeline d'ingestion de votre pipeline de requêtes. L'ingestion peut s'exécuter de manière asynchrone (traitement par lots, files d'attente), tandis que les requêtes nécessitent une exécution synchrone à faible latence. Cette séparation permet une mise à l'échelle indépendante.
Le découpage est souvent la décision décisive dans le RAG. Un mauvais découpage entraîne des récupérations non pertinentes et un contexte incomplet. La bonne stratégie dépend de vos types de documents et de vos modèles de requêtes.
| Stratégie | Idéal pour | Compromis | Complexité |
|---|---|---|---|
| Taille fixe | Documents simples, structure cohérente | Peut rompre des unités sémantiques | Low |
| Basé sur les phrases | Contenu en langage naturel | Tailles de fragments variables | Medium |
| Sémantique | Documents complexes, sujets variés | Coût de calcul plus élevé | High |
| Hiérarchique | Documents longs, récupération multi-niveaux | Implémentation complexe | High |
Les embeddings convertissent le texte en vecteurs numériques qui capturent le sens sémantique. Le choix du bon modèle d'embedding et de la bonne base de données vectorielle influe sur la qualité de la récupération, la latence et le coût.
| Modèle | Dimensions | Performance | Coût | Notes |
|---|---|---|---|---|
| OpenAI text-embedding-3-large | 3072 | Excellent | $$ | Meilleure qualité globale, prend en charge la réduction de dimension |
| Cohere embed-v3 | 1024 | Très bon | $$ | Multilingue, options de compression |
| Voyage AI | 1024 | Excellent | $$$ | Modèles spécifiques à un domaine disponibles |
| BGE-large | 1024 | Bon | Free | Open source, option auto-hébergée |
| Mistral Embed | 1024 | Très bon | $ | Fournisseur européen, conforme au RGPD |
Démarrage rapide, infrastructure gérée
Recherche hybride, API GraphQL
Performance, filtrage fin
Développement, prototypage
Infrastructure Postgres existante
La recherche sémantique de base n'est qu'un point de départ. Les systèmes de production utilisent plusieurs stratégies de récupération pour maximiser la pertinence.
Combinez la recherche vectorielle dense avec la recherche par mots-clés clairsemée (BM25). Cela capture à la fois les correspondances sémantiques et les correspondances exactes de mots-clés que la recherche vectorielle pourrait manquer.
Utilisez un modèle cross-encoder pour reclasser les résultats de récupération initiaux. Plus coûteux mais améliore considérablement la pertinence des résultats top-k.
Utilisez un LLM pour générer plusieurs variantes de requête ou décomposer des requêtes complexes en sous-requêtes. Récupérez pour chacune et fusionnez les résultats.
Pré-filtrez par métadonnées (date, source, catégorie) avant la recherche vectorielle. Essentiel pour les grandes collections de documents et les systèmes multi-locataires.
La phase de génération synthétise le contexte récupéré en une réponse cohérente. L'ingénierie des prompts et la mise en forme du contexte sont essentielles à la qualité.
Même avec des fenêtres de contexte de 128k+, plus de contexte n'est pas toujours mieux. Des études montrent que les LLM peinent avec les informations situées au « milieu » des longs contextes. Limitez le contexte récupéré à 3-5 fragments hautement pertinents, utilisez le reranking pour privilégier la qualité à la quantité.
On ne peut pas améliorer ce que l'on ne mesure pas. Les systèmes RAG de production nécessitent une évaluation continue sur plusieurs dimensions.
| Métrique | Description | Cible | Comment mesurer |
|---|---|---|---|
| Précision de récupération | % des fragments récupérés qui sont pertinents | > 80% | Étiquetage manuel des résultats de récupération |
| Rappel de récupération | % des fragments pertinents qui sont récupérés | > 90% | Comparaison avec un jeu de données de référence |
| Pertinence de la réponse | Dans quelle mesure la réponse traite la requête | > 85% | LLM-juge ou évaluation humaine |
| Fidélité | La réponse est ancrée dans le contexte récupéré | > 95% | Extraction et vérification des affirmations |
| Latence (P95) | Temps de réponse de bout en bout | < 3s | Surveillance des performances |
Cadre open source pour l'évaluation RAG avec des métriques de fidélité, de pertinence et de rappel du contexte.
Observabilité de production avec traçage, évaluations et versionnage des prompts.
Passer du prototype à la production exige de traiter la fiabilité, la sécurité et les préoccupations opérationnelles.
Au-delà du RAG de base, ces modèles répondent à des cas d'usage spécifiques et repoussent les limites du possible.
Utilisez une boucle d'agent pour affiner itérativement la récupération. L'agent peut décider quand chercher, quoi chercher, et quand il dispose de suffisamment de contexte pour répondre.
Idéal pour les questions complexes en plusieurs étapesConstruisez un graphe de connaissances à partir des documents et parcourez les relations lors de la récupération. Permet un raisonnement multi-sauts et des requêtes centrées sur les entités.
Idéal pour les domaines structurés avec des relationsEntraînez ou guidez le modèle pour décider quand la récupération est nécessaire, évaluer la pertinence de la récupération et autocritiquer les réponses générées.
Réduit les récupérations inutilesÉvaluez la qualité de la récupération et repliez-vous sur la recherche web ou d'autres sources lorsque les connaissances internes sont insuffisantes ou peu fiables.
Améliore la couverture des cas limites