J'ai construit un bot de Q&A de code avec RAG : ce qui a fonctionné et ce qui a échoué
Nos développeurs passaient des jours à chercher dans Slack et dans de vieilles documentations pour comprendre nos microservices. J'ai décidé de construire un chatbot pour répondre à ces questions en utilisant le RAG.
J'ai commis de nombreuses erreurs en cours de route. Voici ce que j'ai appris.
Les échecs
- J'ai essayé de mettre toute la documentation dans un seul prompt. Cela a atteint les limites de tokens, provoqué des hallucinations et coûté trop cher.
- J'ai utilisé un index TF-IDF basique. Il a échoué lorsque les utilisateurs utilisaient des synonymes ou des termes différents.
- J'ai essayé des segments simples de 500 caractères. Les résultats étaient aléatoires car les segments étaient souvent coupés en milieu de phrase.
La solution
J'ai arrêté de traiter le LLM comme un moteur de recherche. Je l'ai transformé en moteur de lecture pour un index de recherche dédié.
Voici le pipeline qui a fonctionné :
- Segmenter la documentation en morceaux de 300 tokens avec un chevauchement de 50 tokens.
- Transformer chaque segment en vecteur (embedding).
- Stocker les vecteurs dans un index de recherche par similarité.
- Au moment de la requête, trouver les 5 segments les plus similaires.
- Ne fournir que ces segments au LLM pour générer une réponse.
Ce changement a réduit les hallucinations de 80 % et a ramené les coûts à moins de 0,01 $ par requête.
Points clés à retenir
- La taille des segments est vitale. 150 tokens, c'est trop peu de contexte. 1000 tokens, c'est trop de bruit. 300 tokens est le juste milieu.
- Le chevauchement est obligatoire. Cela évite de perdre le contexte entre les segments.
- Utilisez des modèles légers pour la rapidité. Un petit modèle d'embedding a bien fonctionné pour nos besoins internes.
- Testez votre récupération (retrieval). Ne vous fiez pas à des vérifications manuelles. Construisez un jeu de tests pour mesurer la précision.
Le RAG n'est pas magique. C'est un casse-tête d'ingénierie. Si vos segments sont mauvais, votre récupération est mauvaise. Si votre récupération est mauvaise, vos réponses sont mauvaises.
Nous répondons désormais correctement à 80 % des questions d'onboarding. C'est beaucoup plus rapide que d'attendre qu'un humain réponde sur Slack.
Comment construisez-vous des assistants IA pour votre documentation ?
Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi