Hasina Razafintsalama

Hasina RAZAFINTSALAMA

← Retour au Blog
AI & RAG

RAG en production : monitoring, coûts et maintenance

Faire fonctionner un pipeline RAG en démo est la partie facile. Le faire tourner de façon fiable en production est un autre métier : visibilité sur les coûts, maintenance de l'index, migration du modèle d'embedding, et alertes sur les échecs silencieux de récupération.

2026-07-11·11 min

Les patterns d'architecture (recherche hybride, re-ranking, RAG agentique) font fonctionner un système correctement. Le faire tourner de façon fiable est un ensemble de problèmes distinct : savoir ce que coûte chaque requête, garder l'index au pas d'un corpus qui change, et attraper les échecs qui ne lèvent aucune erreur mais retournent silencieusement quelque chose d'inutile.

Le principal mode de défaillance : l'échec silencieux de récupération

La plupart des incidents RAG en production ne sont pas le LLM qui se trompe. C'est l'étape de récupération qui retourne un ensemble vide ou des chunks non pertinents, après quoi le modèle répond depuis ses propres données d'entraînement ou botte en touche, et rien dans les logs ne semble cassé. Traitez la santé de la récupération comme un signal de premier ordre : alertez sur les ensembles de résultats vides, sur une baisse du score moyen de récupération, et sur un changement soudain de la fréquence à laquelle le modèle dit qu'il ne sait pas.

Les métriques à suivre

Mesurez récupération et génération séparément, par requête, attribuées à un utilisateur ou un tenant. Une requête lente ou coûteuse est soit une recherche vectorielle lente, soit un appel LLM lent, et sans chiffres séparés vous devinez quelle étape corriger.

MétriqueCe qu'elle révèleAlerter quand
Latence p95 de récupérationSanté de la recherche vectorielle ou de l'indexElle monte sans changement de trafic
Latence p95 de générationSanté du fournisseur LLMElle monte sur toutes les requêtes
Taux de récupération videIndex obsolète ou filtre casséIl dépasse votre référence
Tokens par requête (moy.)Régression de chunking ou de promptIl bondit après un déploiement
Coût par requêteEfficacité globaleIl dérive à la hausse semaine après semaine
Taux de "je ne sais pas"Qualité de la récupérationIl bouge fortement dans un sens ou l'autre

Où part l'argent, et les leviers

Trois centres de coût : les embeddings à l'ingestion (ponctuel par document, peu cher), la base vectorielle (fixe, auto-hébergée ou managée), et par requête un appel d'embedding plus un appel de génération. L'appel de génération domine. Les leviers, par ordre d'impact : mettre en cache les questions fréquentes et quasi identiques, raccourcir le contexte récupéré et le prompt, utiliser un modèle plus petit pour les requêtes simples et réserver le gros pour les difficiles, et plafonner le nombre de chunks récupérés.

Maintenance de l'index : le corpus change, l'index aussi

Ré-embeddez de façon incrémentale quand les documents changent ; ne ré-embeddez jamais tout le corpus à chaque mise à jour, ce coût ne scale pas bien. Retirez les documents supprimés de l'index plutôt que de laisser des résultats obsolètes, et planifiez une reconstruction complète périodique comme filet de sécurité contre la dérive silencieuse entre la source et l'index.

Migrer le modèle d'embedding sans coupure

Les vecteurs de modèles d'embedding différents ne sont pas comparables, donc changer de modèle implique de ré-embedder tout le corpus. Faites-le en bascule blue-green : construisez le nouvel index en parallèle, validez-le face à votre jeu d'évaluation, puis basculez le trafic avec un changement de config. Ne mutez jamais l'index en service en place.

python
# Nom d'index versionné, basculé via la config, jamais muté en place
ACTIVE_INDEX = "documents_v2"  # était "documents_v1" avant le changement de modèle

def get_collection():
    return vector_store.get_collection(ACTIVE_INDEX)

Rate limiting, backpressure et circuit breaker

Protégez le quota de votre fournisseur avec des limites de débit par utilisateur et par clé, et renvoyez un 429 clair. Mettez en file le trafic en burst plutôt que de le rejeter. Ajoutez un circuit breaker qui bascule vers une réponse en cache ou dégradée quand le fournisseur lui-même est en panne ou vous throttle, pour qu'une panne amont ne devienne pas votre panne.

L'évaluation ne s'arrête pas au lancement

Gardez un petit jeu de questions canari avec des bonnes réponses connues et exécutez-le régulièrement contre la production. Elles attrapent la dérive que les métriques agrégées ratent : un document tombé hors de l'index, un changement de chunking qui a discrètement dégradé un sujet, une mise à jour du modèle du fournisseur qui a déplacé le comportement.

La plupart des incidents RAG en production, c'est le pipeline de récupération qui retourne silencieusement quelque chose d'inutile, pas le LLM qui se trompe. Alertez sur la santé de la récupération aussi sérieusement que sur l'uptime de l'API.

FAQ

Quel est le principal mode de défaillance d'un RAG en production ?
L'échec silencieux de récupération : l'étape de récupération retourne un ensemble vide ou non pertinent, et le modèle répond alors depuis ses données d'entraînement ou botte en touche, sans que rien dans les logs ne semble cassé. Surveillez le taux de résultats vides, le score moyen de récupération, et le taux auquel le modèle dit qu'il ne sait pas.
Combien coûte un RAG en production ?
Les embeddings à l'ingestion sont un ponctuel peu cher. Les coûts récurrents sont la base vectorielle (fixe) et, par requête, un appel d'embedding plus un appel de génération, la génération dominant. À volume modeste, c'est de quelques dizaines à quelques centaines de dollars par mois ; le cache et le raccourcissement des prompts le gardent stable quand l'usage grandit.
Comment réduire les coûts d'un système RAG ?
Par ordre d'impact : mettre en cache les questions fréquentes et quasi identiques, raccourcir le contexte récupéré et le prompt, router les requêtes simples vers un modèle plus petit et garder le gros pour les questions difficiles, et plafonner le nombre de chunks récupérés. Le choix de modèle et le cache bougent le plus la facture.
Comment maintenir l'index d'un RAG à jour ?
Ré-embeddez de façon incrémentale à mesure que les documents changent, retirez les documents supprimés de l'index plutôt que de laisser des entrées obsolètes, et lancez une reconstruction complète planifiée comme filet de sécurité contre la dérive entre la source et l'index.
Comment changer de modèle d'embedding sans tout casser ?
Les vecteurs de modèles différents ne sont pas comparables, il faut donc ré-embedder tout le corpus. Construisez un nouvel index versionné en parallèle, validez-le face à votre jeu d'évaluation, puis basculez le trafic avec un changement de config. Ne mutez jamais l'index en service en place.

Un système RAG qui fonctionne en démo et un système RAG qui survit en production sont deux problèmes d'ingénierie différents. L'écart entre les deux tient presque entièrement au monitoring, à la maintenance de l'index, au contrôle des coûts et à la gestion des échecs, pas à des prompts plus intelligents.

Besoin d'aide sur ce sujet ? Intégration IA & RAG

Découvrir ce service