Construire soi-même un RAG simple
Chunking, embeddings, recherche vectorielle, contexte dans le prompt – les quatre étapes derrière tout système RAG, plus le moment où une longue fenêtre de contexte suffit tout simplement.
Les quatre étapes
Le RAG (Retrieval-Augmented Generation) va chercher des extraits de texte pertinents dans ta propre base de connaissances avant chaque réponse, et les fournit au modèle dans le prompt. Le déroulement compte quatre étapes :
- Chunking : découper la base de connaissances en petits morceaux de texte, généralement quelques centaines de tokens.
- Embeddings : convertir chaque chunk en un vecteur qui capture son sens, avec un modèle d'embedding.
- Recherche vectorielle : pour une requête, trouver les chunks dont les vecteurs sont les plus proches de la requête.
- Contexte dans le prompt : insérer les chunks trouvés dans le prompt avant que le modèle ne réponde.
RAG vs. longue fenêtre de contexte
Si toute ta base de connaissances tient largement dans la fenêtre de contexte, le RAG est souvent un effort superflu – mettre simplement tout dans le prompt est plus simple et moins sujet aux erreurs. Le RAG devient intéressant quand la base de connaissances est plus grande que la fenêtre de contexte, change fréquemment, ou quand seul un petit extrait changeant est pertinent par requête.
Sources d'erreurs classiques
Chunks trop gros : du contenu accessoire prend la place de ce qui est pertinent. Chunks trop petits : le contexte se perd. Une recherche purement vectorielle rate les correspondances exactes de termes (jargon technique, noms de code) – la combiner avec une recherche par mots-clés classique rattrape ce problème.
EXEMPLE
Squelette de prompt après la recherche : « Réponds à la question suivante uniquement à partir des extraits ci-dessous. Si la réponse ne s'y trouve pas, dis-le. EXTRAITS : [Chunk 1] [Chunk 2] [Chunk 3] QUESTION : Comment résilier mon abonnement ? »
🛠️ EXERCICE — À TOI DE JOUER
Construis un tout petit système RAG pour une poignée de tes propres fichiers texte (par exemple 5 à 10 notes) et teste s'il trouve la bonne source.
- Découpe 5 à 10 courts fichiers texte en chunks d'environ 200-300 tokens.
- Génère des embeddings pour chaque chunk et pour 3 questions de test dont tu connais la réponse.
- Compare la similarité cosinus et vérifie si le chunk contenant la bonne réponse arrive effectivement en tête.
✅ AUTO-VÉRIFICATION
- ☐ La recherche vectorielle a-t-elle trouvé le bon chunk pour les 3 questions de test ?
- ☐ Y a-t-il eu un cas où un chunk incorrect, mais sémantiquement proche, l'a emporté ?
- ☐ Qu'est-ce qu'un chunking plus petit ou plus grand aurait changé à ce résultat ?
QUIZ RAPIDE
Dans quel cas un système RAG simple est-il le meilleur choix, plutôt que de simplement mettre toute la base de connaissances dans la fenêtre de contexte ?
SOURCES
- Anthropic Engineering: Contextual Retrieval ↗ www.anthropic.com
- Claude Platform Doku: Embeddings ↗ platform.claude.com
- OpenAI Doku: Embeddings ↗ platform.openai.com