Retour au blog
20 janvier 2024
Tech
IA

Architecture RAG en production : leçons apprises

Les défis techniques d'un système RAG en production : chunking, embeddings, et optimisation des performances.

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 :

  1. 1Indexer vos documents en embeddings
  2. 2Pour chaque question, trouver les documents pertinents
  3. 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-small d'OpenAI : Bon rapport qualité/coût
  • text-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.

Envie d'en savoir plus ?

Découvrez mes autres articles

Retrouvez tous mes articles sur le développement, le product management et l'IA.