Qu'est-ce que RAG ?
RAG (Retrieval-Augmented Generation) permet d'ancrer les réponses d'un LLM dans vos propres données. C'est la solution pour éviter les hallucinations et personnaliser les réponses.
Le principe est simple :
- 1Indexer vos documents en embeddings
- 2Pour chaque question, trouver les documents pertinents
- 3Passer ces documents au LLM avec la question
Les composants clés
Chunking
Découper vos documents en morceaux de taille optimale est crucial.
Trop petit : Perte de contexte, le LLM n'a pas assez d'information
Trop grand : Bruit dans les résultats, dilution du signal pertinent
J'utilise généralement des chunks de 500-1000 tokens avec un overlap de 100-200 tokens.
Embeddings
Transformer le texte en vecteurs numériques. Plusieurs options :
text-embedding-3-smalld'OpenAI : Bon rapport qualité/coûttext-embedding-3-large: Meilleure qualité, plus cher- Modèles open source (sentence-transformers) : Gratuit mais moins performant
Vector DB
Stocker et rechercher efficacement ces vecteurs :
- Supabase pgvector : Simple, intégré à Postgres
- Pinecone : Spécialisé, scalable
- Weaviate : Open source, fonctionnalités avancées
Prompt engineering
Construire des prompts qui utilisent bien le contexte :
```
Voici du contexte pertinent :
{chunks}
En utilisant uniquement ce contexte, réponds à la question suivante :
{question}
Si l'information n'est pas dans le contexte, dis-le clairement.
```
Optimisation des performances
Chunking intelligent
Plutôt qu'un découpage arbitraire, essayez :
- Chunking par sections/paragraphes
- Chunking sémantique (clusters de phrases similaires)
- Chunking hiérarchique (résumé + détails)
Retrieval hybride
Combinez plusieurs méthodes :
- Recherche sémantique (embeddings)
- Recherche par mots-clés (BM25)
- Re-ranking des résultats
Caching
Les embeddings ne changent pas. Cachez-les agressivement.
Les questions similaires donnent des résultats similaires. Cachez aussi.
En production
Monitoring
Suivez ces métriques :
- Latence du retrieval
- Nombre de chunks retournés
- Score de similarité moyen
- Qualité perçue (feedback utilisateurs)
Versioning
Quand vous modifiez vos documents :
- Réindexez les chunks modifiés
- Gardez une version du corpus pour le cache
- Invalidez le cache des réponses associées
Graceful degradation
Si le retrieval échoue :
- Fallback sur une réponse générique
- Log l'erreur pour investigation
- Ne bloquez jamais l'utilisateur
Conclusion
RAG est puissant mais demande de l'ingénierie. Commencez simple (pgvector + chunking basique), mesurez, puis optimisez les points douloureux.
La clé est de traiter le système RAG comme n'importe quel système de production : monitoring, tests, itération continue.