Comment Évaluer et Optimiser Votre Système RAG : Métriques et Méthodes Essentielles

Regardez la vidéo (avec beaucoup plus de visuels!):

Bon matin ! Ici Louis-François, cofondateur de Towards AI, et aujourd'hui, nous allons aborder un point essentiel : si vous implémentez des systèmes RAG, vous passez probablement à côté de certaines améliorations faciles à mettre en place. La plupart des projets n'ont même pas de système d'évaluation. Comment peuvent-ils savoir si leur système est optimal ou s'il s'améliore avec chaque changement ? La réponse réside dans l'évaluation, qui est différente de l’évaluation des LLM eux-mêmes. Plongeons dans les principales métriques et méthodes d'évaluation que nous avons trouvées utiles chez Towards AI lors du développement de systèmes RAG.

Le RAG combine des mécanismes de récupération (comme la recherche Google) avec des modèles génératifs (par exemple, GPT-4) pour améliorer la qualité et la pertinence des réponses. 

Avant de plonger dans les détails, faisons un petit rappel de ce qu’est un système RAG... Le RAG, c'est simplement le processus d’ajout de connaissances à un LLM existant via l’invite d’entrée (ou le prompt en anglais). Cela est particulièrement utile pour les données privées ou les sujets avancés que le LLM n’a peut-être pas rencontrés pendant son entraînement. Dans le RAG, la configuration la plus basique consiste à "injecter" des informations supplémentaires avec notre invite afin de formuler une meilleure réponse.

Alors, pourquoi l'évaluation est-elle importante ? Évaluer et optimiser efficacement les systèmes basés sur des LLM peut faire la différence entre une simple démonstration et un outil ou produit LLM fiable et véritablement utile. Que vous développiez un bot de service client ou un outil de recherche, une bonne évaluation vous aidera à créer des solutions d'IA plus fiables et efficaces, prêtes pour la production.

Par exemple, si vous développez un outil de recherche juridique avec du RAG, il devra être contextuellement approprié et à jour. Vous ne pouvez pas simplement supposer qu'il fonctionnera bien. Une évaluation appropriée est nécessaire pour garantir une bonne interprétation du jargon juridique et des informations pertinentes.

Vous vous dites peut-être : "J'ai testé l'application, et les réponses sont bonnes !" Tester l’application vous-même est très important, on appelle cela une sorte de "vibe checking", mais cela ne raconte pas toute l’histoire. Nous avons besoin de méthodes et de métriques plus rigoureuses pour nous assurer que les applications basées sur les LLM fonctionnent de manière optimale.

Comme nous l'avons dit, les systèmes RAG ont deux composants distincts qui nécessitent une évaluation : le composant de récupération de l’information nécéssaire et le composant de génération de réponses. Discutons des façons d’évaluer ces deux aspects, en commençant par les métriques les plus pertinentes... Nous parlerons du système global, y compris du jeu de données nécessaire, dans quelques minutes.

Les métriques de récupération se concentrent sur la capacité du système à récupérer des informations pertinentes à partir de sa base de connaissances. Vous avez donc votre jeu de données, et vous voulez savoir si le système est capable de trouver les informations les plus pertinentes pour répondre à une question d’utilisateur. Voici quatre métriques que vous pouvez utiliser pour cela :

La première est la précision. La précision mesure la proportion de documents pertinents parmi les documents récupérés. C’est particulièrement utile lorsque vous voulez vous assurer que les informations récupérées par votre système sont hautement pertinentes, comme dans un outil de diagnostic médical où les faux positifs pourraient être dangereux.

Ensuite, vous avez le rappel. Le rappel mesure la proportion de documents pertinents qui ont été récupérés avec succès. C’est crucial dans des scénarios où manquer des informations importantes pourrait coûter cher, comme dans la recherche juridique, où ignorer un précédent pertinent pourrait affecter l'issue d’un dossier.

Ensuite, nous avons le taux de succès : il mesure la proportion de requêtes pour lesquelles au moins un document pertinent est récupéré parmi les premiers résultats, reflétant la capacité du système de récupération à trouver des documents pertinents.

L’une des métriques les plus utilisées est le MRR (Mean Reciprocal Rank) : cette métrique évalue à quelle hauteur apparaît le premier document pertinent dans les résultats de recherche. Elle est précieuse pour les systèmes où les utilisateurs se concentrent généralement sur les quelques premiers résultats, comme dans un moteur de recherche.

Enfin, on peut utiliser le NDCG (Gain cumulatif actualisé normalisé) : cette métrique prend en compte à la fois la pertinence et le classement des documents récupérés. C’est particulièrement utile pour les systèmes de recommandation ou toute application où l'ordre des résultats est important.

Ici, le MRR est utile pour évaluer les systèmes où le rang du premier document pertinent est le plus important, comme les moteurs de recherche (par exemple, les 1 à 3 premiers résultats sur Google). Le NDCG offre une mesure plus globale de la qualité du classement, en prenant en compte la pertinence et l'ordre de tous les documents, ce qui en fait une option idéale pour des applications comme les systèmes de recommandation où la liste entière est importante (par exemple, les 10 meilleurs résultats de Pizzeria).

Vous pouvez utiliser ces cinq métriques pour mesurer la capacité de votre système RAG à trouver des informations pertinentes à ajouter au prompt du LLM. La deuxième étape consiste à évaluer la réponse du LLM avec des métriques de génération. Nous avons trois principales métriques pour cela :

Fidélité : La fidélité mesure l'intégrité de la réponse par rapport aux contextes récupérés. Elle garantit que la réponse générée reflète fidèlement les informations des documents récupérés sans introduire de fausses informations ou des informations non pertinentes. 

Pertinence de la réponse : Elle évalue la pertinence de la réponse générée par rapport à la requête initiale. Elle permet de s'assurer que le système ne se contente pas de récupérer des documents pertinents, mais utilise également ces informations pour générer des réponses pertinentes. 

Exactitude de la réponse : Cette métrique évalue si la réponse générée correspond à la réponse de référence pour une requête donnée. Elle est particulièrement utile lorsque vous disposez d’un ensemble de réponses de vérité terrain (votre ground truth) pour effectuer des comparaisons.

Ok, c'est bien beau, nous avons des métriques pour évaluer notre LLM, mais il nous faut ensuite un jeu de données pour les exécuter. Un jeu de données d'évaluation peut être créé en faisant appel à des experts du domaine, en utilisant votre propre expertise si vous êtes un expert dans le domaine, ou même en utilisant un LLM puissant pour générer des questions complexes et riches en contexte à partir de vos données indexées. N'oubliez pas de revoir et d'affiner ces questions pour qu’elles reflètent les cas d’usage réels. L’idée est de générer des questions artificielles, ou idéalement réelles, où la réponse se trouve dans vos données. Vous pouvez alors vérifier si la réponse fournie utilise les bonnes données et donne la réponse attendue en utilisant les métriques que nous venons de voir.

Maintenant, qu’en est-il des réponses ? En supposant que nous ayons les bonnes informations pour répondre à la question, comment juger si la génération est bonne ? L’une des nouvelles approches intéressantes pour évaluer la génération est d’utiliser un autre LLM comme juge guidé par des métriques de génération. Cette approche peut être très efficace, mais il est important de suivre quelques bonnes pratiques :

Tout d'abord, lorsque vous utilisez un LLM pour évaluer des sorties, il est souvent plus efficace de lui faire comparer deux réponses plutôt que d’évaluer une seule réponse isolément. Cela lui donne une sorte de référence pour ensuite voir si la deuxième réponse est meilleure. C'est ce qu'on appelle la comparaison par paires, et cela fournit généralement un point de référence plus clair pour évaluer la qualité.

Mais ensuite, lorsque vous présentez des paires de réponses au LLM juge, vous devez randomiser l'ordre dans lequel vous les donnez. Les LLM ont tendance à avoir un biais de position, favorisant toujours la première option.

De même, vous devez permettre des égalités. Il est possible que deux réponses soient tout aussi bonnes. Donnez au LLM juge la possibilité de déclarer les réponses comme étant également bonnes. Cela permet d’obtenir des évaluations plus nuancées.

Le meilleur conseil est d’utiliser une approche de "chaîne de pensée" (Chain-of-Thought), en demandant au LLM d'expliquer son raisonnement avant de prendre une décision finale. Cela peut conduire à des évaluations plus fiables et plus interprétables. Comme les LLMs génèrent un jeton ou un mot à la fois, ils ne pensent pas comme nous. Ils n’ont pas une sorte de carte mentale de ce qu’ils vont dire et de la façon dont la réponse sera structurée. Ils le font à la volée. Leur demander de procéder étape par étape ou même d’écrire un plan d’action d’abord leur permet d’avoir ce plan dans leur contexte, agissant comme une sorte de réflexion artificielle avant de générer la réponse finale, ce qui améliore beaucoup les résultats et l’évaluation.

Notre dernier conseil est d’essayer de vous assurer que les réponses comparées sont de longueur similaire. Cela aide à créer une comparaison plus équitable, car le nombre de mots seulement peut parfois influencer de manière injuste la qualité perçue.

En incorporant ces évaluations basées sur les LLM aux côtés des métriques traditionnelles de récupération, nous obtenons une vue plus complète des performances de notre système RAG, en abordant à la fois les aspects de récupération et de génération. Ensuite, toute modification, fonctionnalité ou invite peut être liée à un changement quantitatif, avec une vérification qualitative nécessaire pour toujours vérifier le "vibe" du système.

Cependant, ces métriques et votre propre "vibe-checking" ne suffisent pas. Nous devons prendre en compte le contexte plus large de l'utilisation de notre système RAG. Cela nous amène à un point critique souvent négligé : l'importance de comprendre les besoins réels de vos utilisateurs.

L'une des méthodes les plus efficaces pour cela est la journalisation et l'analyse des requêtes utilisateur. En implémentant un système de journalisation, vous pouvez capturer chaque question posée à votre système RAG. Ensuite, à l’aide de techniques comme le regroupement thématique, vous pouvez analyser ces questions pour identifier les thèmes et motifs communs.

Par exemple, nous avons développé une application LLM pour un client. Après avoir analysé les requêtes des utilisateurs, ils ont finalement découvert que 80 % des questions portaient sur un sous-ensemble spécifique de sujets. Cette information leur a permis de concentrer leurs efforts d’optimisation là où ils auraient le plus d’impact. Vous pouvez adapter vos jeux de données d’évaluation à ces sujets à haute fréquence, garantissant que votre système fonctionne de manière exceptionnelle sur les requêtes les plus importantes pour vos utilisateurs. C’est aussi bien plus facile à vérifier soi-même que d’essayer de vérifier l’ensemble des questions possibles.

Vous avez maintenant votre raison d’évaluer, vos métriques et des façons de le faire automatiquement, alors qu’est-ce qui reste ? La prochaine étape est de l'implémenter.

Nous vous suggérons d’utiliser des bibliothèques comme Ragas pour automatiser et mettre à l'échelle votre processus d'évaluation. Ne codez pas tout vous-même ! Ces outils peuvent vous aider à mesurer divers aspects des performances de votre système RAG, y compris la qualité de la récupération et de la génération, ainsi que toutes les métriques mentionnées dans l’article.

Et enfin, n’oubliez pas l’évaluation humaine. Bien que les métriques automatisées et les évaluations basées sur les LLM soient précieuses et plus évolutives, le jugement humain reste la référence, en particulier pour évaluer des facteurs tels que la fluidité, le naturel des réponses et leur utilité globale dans des scénarios réels. Et comme nous l’avons dit, vos utilisateurs sont les mieux placés pour évaluer cela, ce qui peut se faire via des tests A/B ou en rémunérant des personnes pour le faire.

Vous avez désormais les outils pour aller au-delà des simples métriques et vraiment comprendre comment votre système RAG fonctionne dans des scénarios réels, en vous concentrant sur les sujets qui comptent le plus pour vos utilisateurs.

Je vous invite à consulter notre cours sur les architectures RAG avancées et notre livre “Building LLMs for Production” qui sont tous deux seulement disponible en anglais pour le moment. Nous y discutons de techniques comme le reranking, l’expansion des requêtes, et bien plus encore pour construire des systèmes RAG de pointe, de l'implémentation de base aux techniques d’optimisation avancées.

Louis-François Bouchard

Hello! Je suis Louis-François Bouchard, de Montréal, Canada, aussi connu sous le nom de 'What's AI' et j'essaie de partager et de vulgariser tout ce qui est en lien avec l'intelligence artificielle. Mon objectif est de démystifier la «boîte noire» de l'IA pour tous et de sensibiliser les gens aux risques de son utilisation.

https://www.youtube.com/channel/UCIUgms0TE2WhQijbU-IMYyw
Précédent
Précédent

Ajustement d’un Modèle d’Embedding

Suivant
Suivant

Le Meilleur Système RAG Open-Source !