Qu’est-ce que le RAG ?
Le RAG est une architecture qui combine deux composants distincts :- Un système de retrieval (récupération) : une base vectorielle ou un moteur de recherche qui identifie les documents les plus pertinents pour une requête donnée
- Un modèle de génération : le LLM qui produit la réponse finale en s’appuyant sur les documents récupérés
Pourquoi utiliser le RAG ?
Le RAG répond à plusieurs limitations fondamentales des LLMs :- Dépasser la date de coupure : vos données sont mises à jour indépendamment du modèle
- Utiliser des données privées : documentation interne, contrats, bases clients, etc.
- Réduire les hallucinations : le modèle s’appuie sur des sources vérifiables
- Citer les sources : vous pouvez tracer d’où vient chaque information
- Éviter le fine-tuning : pas besoin de ré-entraîner le modèle pour chaque mise à jour de données
Le pipeline RAG en 3 grandes étapes
1
Indexation (offline)
Préparez et stockez vos documents dans une base vectorielle. Cette étape se fait une fois (puis en incrémental lors des mises à jour).
- Chargement : importez vos documents (PDF, Word, HTML, base de données, etc.)
- Chunking : découpez chaque document en segments (chunks) de taille adaptée
- Embedding : convertissez chaque chunk en vecteur numérique via un modèle d’embedding
- Stockage : indexez les vecteurs dans une base vectorielle (Pinecone, Weaviate, Chroma, pgvector…)
2
Récupération (retrieval, online)
Lorsqu’une question est posée, retrouvez les chunks les plus pertinents.
- Embedding de la requête : convertissez la question en vecteur avec le même modèle d’embedding
- Recherche par similarité : calculez la distance cosinus entre le vecteur requête et tous les vecteurs indexés
- Sélection : récupérez les k chunks les plus proches (typiquement 3 à 10)
- Reranking (optionnel) : affinez la sélection avec un modèle de reranking pour améliorer la précision
3
Génération (online)
Construisez le contexte et obtenez la réponse finale.
- Assemblage du contexte : injectez les chunks récupérés dans le prompt
- Prompt structuré : encadrez les documents avec des délimiteurs clairs (voir la page sur la structuration)
- Génération : le LLM produit une réponse en se basant sur les documents fournis
- Post-traitement : extrayez les sources citées et formatez la réponse
Le chunking : découper intelligemment
Le chunking est l’étape la plus sous-estimée du pipeline RAG. Un mauvais découpage dégrade directement la qualité de récupération.Il n’existe pas de taille de chunk universelle. Un chunk trop petit perd le contexte local (une phrase isolée peut être ambiguë) ; un chunk trop grand dilue le signal de pertinence et consomme beaucoup de tokens. La taille typique se situe entre 256 et 1024 tokens, avec un chevauchement (overlap) de 10 à 20 % pour éviter de couper des idées en deux.
Les embeddings pour la recherche sémantique
Un embedding est une représentation numérique dense d’un texte dans un espace vectoriel à haute dimension. Des textes sémantiquement proches ont des vecteurs proches dans cet espace : c’est ce qui permet de retrouver des documents pertinents même si la question n’utilise pas exactement les mêmes mots que le document. Modèles d’embedding populaires :text-embedding-3-large(OpenAI) : haute qualité, 3072 dimensionsembed-v3(Cohere) : excellent pour le multilinguismeall-MiniLM-L6-v2(open source, via HuggingFace) : léger et rapidemultilingual-e5-large(open source) : fort sur le français et les langues européennes
Outils et frameworks RAG
LlamaIndex
Framework spécialisé dans l’ingestion, le chunking et la récupération de données. Idéal pour construire rapidement un pipeline RAG robuste avec de nombreux connecteurs de données natifs.
LangChain
Framework généraliste pour les applications LLM. Propose des composants RAG modulaires (loaders, splitters, retrievers) facilement combinables avec d’autres chaînes.
Haystack
Framework orienté recherche et question-réponse. Particulièrement adapté aux cas d’usage documentaires d’entreprise avec pipeline de retrieval avancé.
Bases vectorielles
Pinecone (managed, scalable), Weaviate (open source, hybride), Chroma (léger, local), pgvector (extension PostgreSQL). Le choix dépend de votre infrastructure existante.
RAG vs Fine-tuning : quand choisir quoi ?
Ces deux approches répondent à des besoins différents et sont souvent complémentaires :
En règle générale : utilisez le RAG pour injecter des connaissances, et le fine-tuning pour modifier le comportement du modèle.
