Outils d’évaluation RAG : comment évaluer les applications de génération augmentée par récupération
RAG)), ou génération augmentée par récupération, est un framework d’IA majeur à l’ère des grands modèles de langage (LLM))) comme ChatGPT. Il améliore les capacités de ces modèles en intégrant des connaissances externes, garantissant des réponses plus précises et à jour. Un système RAG standard comprend un LLM, une base de données vectorielle comme Milvus, et quelques prompts sous forme de code, qui peuvent tous être évalués à l’aide d’un framework complet d’évaluation RAG.
À mesure que de plus en plus de développeurs et d’entreprises adoptent RAG pour créer des applications GenAI, l’évaluation de leur efficacité devient de plus en plus importante. Dans un article précédent, nous avons évalué les performances de deux systèmes RAG différents construits avec OpenAI Assistants et la base de données vectorielle Milvus, ce qui a apporté un éclairage sur l’évaluation des systèmes RAG. Cet article approfondira le sujet et abordera les méthodologies utilisées pour évaluer les applications RAG. Nous présenterons également quelques outils d’évaluation puissants et mettrons en avant des métriques standard.
Évaluer les applications RAG ne se limite pas à comparer quelques exemples. L’essentiel consiste à utiliser des métriques convaincantes, quantitatives et reproductibles pour évaluer ces applications. Dans ce parcours, nous présenterons trois catégories de métriques :
Métriques basées sur la vérité terrain
Métriques sans vérité terrain
Métriques basées sur les réponses des LLM
La vérité terrain désigne des réponses bien établies ou des segments de documents de connaissance dans un jeu de données correspondant aux requêtes des utilisateurs. Lorsque la vérité terrain correspond aux réponses, nous pouvons comparer directement la vérité terrain avec les réponses RAG, ce qui facilite une mesure de bout en bout à l’aide de métriques telles que la similarité sémantique des réponses et l’exactitude des réponses.
Voici un exemple d’évaluation des réponses basée sur leur exactitude.
Vérité terrain : Einstein est né en 1879 en Allemagne.
Exactitude élevée de la réponse : En 1879, en Allemagne, Einstein est né.
Faible exactitude de la réponse : En Espagne, Einstein est né en 1879.
Lorsque la vérité terrain correspond à des segments du document de connaissance, nous pouvons évaluer la corrélation entre les segments de document et les contextes récupérés à l’aide de métriques traditionnelles telles que Exact Match (EM), Rouge-L et F1. En substance, nous évaluons l’efficacité de la récupération des applications RAG.
Nous avons maintenant établi l’importance d’utiliser des jeux de données avec une vérité terrain pour évaluer les applications RAG. Cependant, que faire si vous souhaitez évaluer une application RAG à l’aide de vos jeux de données privés sans vérité terrain annotée ? Comment générer la vérité terrain requise pour vos jeux de données ?
La méthode la plus simple consiste à demander à un LLM comme ChatGPT de générer des exemples de questions et de réponses à partir de votre jeu de données propriétaire. Des outils comme Ragas et LlamaIndex fournissent également des méthodes pour générer des données de test adaptées à vos documents de connaissance.
_Les exemples de questions et de réponses générés par l’outil d’évaluation Ragas (source: https://docs.ragas.io/en/latest/concepts/testset_generation.html)
Ces jeux de données de test générés, comprenant des questions, du contexte et les réponses correspondantes, facilitent une évaluation quantitative sans dépendre de jeux de données de référence externes sans lien. Cette approche permet aux utilisateurs d’évaluer les systèmes RAG à l’aide de leurs propres données, garantissant un processus d’évaluation plus personnalisé et plus significatif.
Métriques sans vérité terrain
Nous pouvons toujours évaluer les applications RAG sans vérité terrain pour chaque requête. TruLens-Eval, un outil d’évaluation open source, innove avec le concept de la Triade RAG, qui se concentre sur l’évaluation de la pertinence des éléments dans les triplets requête, contexte et réponse. Les trois métriques correspondantes sont :
Pertinence du contexte : Mesure dans quelle mesure le contexte récupéré soutient la requête.
Ancrage : Évalue dans quelle mesure la réponse du LLM s’aligne sur le contexte récupéré.
Pertinence de la réponse : Évalue la pertinence de la réponse finale par rapport à la requête.
Vous trouverez ci-dessous un exemple d’évaluation des réponses en fonction de leur pertinence par rapport à la question.
Question : Où se trouve la France et quelle est sa capitale ?
Réponse peu pertinente : La France est en Europe occidentale.
Réponse très pertinente : La France est en Europe occidentale et Paris est sa capitale.
Triade RAG, source : https://www.trulens.org/getting_started/core_concepts/rag_triad/
De plus, ces métriques de triade peuvent être davantage subdivisées, ce qui améliore la granularité de l’évaluation. Par exemple, Ragas (un framework open source dédié à l’évaluation des performances des systèmes RAG) a divisé la pertinence du contexte en trois métriques plus détaillées : précision du contexte, pertinence du contexte et rappel du contexte.
Cette catégorie de métriques évalue les réponses des LLM, en tenant compte de facteurs tels que la convivialité, la nocivité et la concision. Par exemple, propose des métriques telles que la concision, la pertinence, l’exactitude, la cohérence, la nocivité, la malveillance, l’utilité, le caractère controversé, la misogynie, la criminalité et l’insensibilité.
Vous trouverez ci-dessous un exemple d’évaluation des réponses en fonction de leur concision.
Question : Combien font 2+2 ?
Réponse peu concise : Combien font 2+2 ? C’est une question élémentaire. La réponse que vous cherchez est que deux et deux font quatre.
Réponse très concise : 4
Utiliser les LLM pour noter les métriques
La plupart des métriques mentionnées précédemment nécessitent de saisir du texte pour obtenir un score, ce qui demande du travail. La bonne nouvelle est que ce processus devient plus facile à gérer avec l’arrivée de LLM comme GPT-4, où il suffit de concevoir un prompt approprié.
L’article "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" propose une conception de prompt pour que GPT-4 juge la qualité de la réponse d’un assistant IA à une question d’utilisateur. Voici un exemple rapide :
[System]
Please act as an impartial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should consider factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Begin your evaluation by providing a short explanation. Be as objective as possible. After providing your explanation, please rate the response on a scale of 1 to 10 by strictly following this format: "[[rating]]", for example: "Rating: [[5]]".
[Question]
{question}
[The Start of Assistant's Answer]
{answer}
[The End of Assistant's Answer]
Ce prompt demande à GPT-4 d’évaluer la qualité de la réponse et de la noter sur une échelle de 1 à 10.
Il est important de noter que GPT-4, comme tout juge, n’est pas infaillible et peut avoir des biais et des erreurs potentielles. La conception du prompt est donc cruciale. Des techniques avancées d’ingénierie de prompts, telles que le multi-shot ou le Chain-of-Thought (CoT), peuvent être nécessaires. Heureusement, nous n’avons pas à nous soucier de ce problème, car de nombreux outils d’évaluation pour les applications RAG ont déjà intégré des prompts bien conçus.
Maintenant que nous avons couvert l’évaluation d’une application RAG, explorons quelques outils pour évaluer les applications RAG, en donnant un aperçu de leur fonctionnement et des cas d’utilisation auxquels ces outils conviennent le mieux.
Ragas : évaluation RAG simplifiée
Ragas est un outil d’évaluation open source pour évaluer les applications RAG. Avec une interface simple, Ragas simplifie le processus d’évaluation. En créant une instance de dataset au format requis, les utilisateurs peuvent rapidement lancer des évaluations et obtenir des métriques telles que 'ragas_score,' 'context_precision,' 'faithfulness,' et 'answer_relevancy.'
from ragas import evaluate
from datasets import Dataset
# prepare your huggingface dataset in the format
# Dataset({
# features: ['question', 'contexts', 'answer', 'ground_truths'],
# num_rows: 25
# })
dataset: Dataset
results = evaluate(dataset)
# {'ragas_score': 0.860, 'context_precision': 0.817,
# 'faithfulness': 0.892, 'answer_relevancy': 0.874}
Ragas prend en charge une variété de métriques et n’impose aucune exigence de framework spécifique, offrant ainsi une flexibilité dans l’évaluation de différentes applications RAG. Ragas permet la surveillance en temps réel des évaluations via LangSmith, offrant des informations sur les raisons de chaque évaluation et la consommation de clés API.
Comprendre les systèmes RAG
Les systèmes de génération augmentée par récupération (RAG) sont un type de technologie d’intelligence artificielle (AI) qui combine les atouts des grands modèles de langage (LLMs) avec la récupération de connaissances externes. Les systèmes RAG se composent de trois composants principaux : Index, Retrieve et Generate. Le composant Index crée une base de données de connaissances qui peut être recherchée et récupérée. Le composant Retrieve récupère les informations pertinentes à partir de la base de données indexée. Le composant Generate crée un nouveau texte à partir des informations récupérées.
Les systèmes RAG sont couramment utilisés pour les chatbots et les systèmes de questions-réponses. Ils offrent une approche robuste et dynamique des conversations AI et du traitement de l’information. En exploitant des connaissances externes, les systèmes RAG permettent des réponses plus précises, contextuelles, pertinentes et à jour. Cela les rend inestimables dans divers domaines, notamment le service client et les chatbots de connaissances internes, où des informations précises et opportunes sont cruciales.
Métriques d’évaluation pour RAG
L’évaluation des performances des systèmes RAG est cruciale pour leur fiabilité et leurs performances. Il existe plusieurs métriques d’évaluation pour les systèmes RAG, notamment :
Pertinence du contexte : Mesure la pertinence du contexte récupéré par rapport à la requête de l’utilisateur.
Rappel du contexte : Mesure la proportion de contexte pertinent récupéré par le système.
Fidélité : Mesure l’exactitude du texte généré à partir du contexte récupéré.
Pertinence de la réponse : Évalue la pertinence du texte généré par rapport à la requête de l’utilisateur.
Exactitude de la réponse : Évalue l’exactitude du texte généré.
Ces métriques fournissent un cadre complet pour évaluer les performances des systèmes RAG. En analysant ces aspects, les développeurs peuvent identifier les axes d’amélioration et s’assurer que le système fournit des réponses de haute qualité, pertinentes et exactes.
LlamaIndex : créer et évaluer facilement
LlamaIndex est un framework AI robuste pour créer des applications RAG, comprenant un outil d’évaluation RAG. Il est pratique pour évaluer les applications créées au sein de son framework.
from llama_index.evaluation import BatchEvalRunner
from llama_index.evaluation import (
FaithfulnessEvaluator,
RelevancyEvaluator,
)
service_context_gpt4 = ...
vector_index = ...
question_list = ...
faithfulness_gpt4 = FaithfulnessEvaluator(service_context=service_context_gpt4)
relevancy_gpt4 = RelevancyEvaluator(service_context=service_context_gpt4)
runner = BatchEvalRunner(
{"faithfulness": faithfulness_gpt4, "relevancy": relevancy_gpt4},
workers=8,
)
eval_results = runner.evaluate_queries(
vector_index.as_query_engine(), queries=question_list
)
TruLens-Eval : évaluation intégrée pour divers frameworks
TruLens Eval fournit un moyen simple d’évaluer les applications RAG créées avec LangChain et LlamaIndex. L’extrait de code suivant montre comment configurer l’évaluation pour une application RAG basée sur LangChain.
from trulens_eval import TruChain, Feedback, Tru,Select
from trulens_eval.feedback import Groundedness
from trulens_eval.feedback.provider import OpenAI
import numpy as np
tru = Tru()
rag_chain = ...
# Initialize provider class
openai = OpenAI()
grounded = Groundedness(groundedness_provider=OpenAI())
# Define a groundedness feedback function
f_groundedness = (
Feedback(grounded.groundedness_measure_with_cot_reasons)
.on(Select.RecordCalls.first.invoke.rets.context)
.on_output()
.aggregate(grounded.grounded_statements_aggregator)
)
# Question/answer relevance between overall question and answer.
f_qa_relevance = Feedback(openai.relevance).on_input_output()
tru_recorder = TruChain(rag_chain,
app_id='Chain1_ChatApplication',
feedbacks=[f_qa_relevance, f_groundedness])
tru.run_dashboard()
Trulens-Eval peut évaluer les applications RAG construites avec d’autres frameworks, mais sa mise en œuvre dans le code peut être complexe. Consultez la documentation officielle pour plus de détails.
En outre, Trulens-Eval propose également une surveillance visuelle dans le navigateur pour analyser les raisons d’évaluation et observer l’utilisation des clés API.
Phoenix : évaluer les LLM avec flexibilité
Phoenix fournit un ensemble complet de métriques pour évaluer les LLM, y compris la qualité des embeddings générés et les réponses du LLM. Il peut également évaluer les applications RAG, mais inclut moins de métriques que les autres outils d’évaluation mentionnés. L’extrait de code suivant montre comment utiliser Phoenix pour évaluer une application RAG construite avec LlamaIndex.
import phoenix as px
from llama_index import set_global_handler
from phoenix.experimental.evals import llm_classify, OpenAIModel, RAG_RELEVANCY_PROMPT_TEMPLATE, \
RAG_RELEVANCY_PROMPT_RAILS_MAP
from phoenix.session.evaluation import get_retrieved_documents
px.launch_app()
set_global_handler("arize_phoenix")
print("phoenix URL", px.active_session().url)
query_engine = ...
question_list = ...
for question in question_list:
response_vector = query_engine.query(question)
retrieved_documents = get_retrieved_documents(px.active_session())
retrieved_documents_relevance = llm_classify(
dataframe=retrieved_documents,
model=OpenAIModel(model_name="gpt-4-1106-preview"),
template=RAG_RELEVANCY_PROMPT_TEMPLATE,
rails=list(RAG_RELEVANCY_PROMPT_RAILS_MAP.values()),
provide_explanation=True,
)
Outre les outils mentionnés ci-dessus, d’autres plateformes comme DeepEval, LangSmith et OpenAI Evals offrent également des capacités pour évaluer les applications RAG. Leurs méthodologies sont similaires, mais la conception des prompts et les spécificités de mise en œuvre varient ; veillez donc à choisir l’outil qui vous convient le mieux.
En conclusion, nous avons passé en revue quelques méthodologies, métriques et outils d’évaluation d’applications RAG. En particulier, nous avons exploré trois catégories de métriques :
celles basées sur une vérité terrain,
celles sans vérité terrain,
et celles basées sur les réponses de grands modèles de langage (LLM).
Les métriques de vérité terrain consistent à comparer les réponses RAG à des réponses établies. En revanche, les métriques sans vérité terrain, comme la Triade RAG, se concentrent sur l’évaluation de la pertinence entre les requêtes, le contexte et les réponses. Les métriques basées sur les réponses des LLM prennent en compte la convivialité, la nocivité et la concision.
Nous avons également exploré l’utilisation des LLM pour noter les métriques au moyen de prompts bien conçus et présenté un ensemble d’outils d’évaluation RAG, notamment Ragas, LlamaIndex, TruLens-Eval et Phoenix, pour aider dans cette tâche.
Dans le monde de l’IA en évolution rapide, évaluer et améliorer régulièrement les applications RAG est essentiel pour garantir leur fiabilité. En utilisant les méthodologies, métriques et outils abordés ici, les développeurs et les entreprises peuvent prendre des décisions éclairées sur les performances et les capacités de leurs systèmes RAG, favorisant ainsi les progrès des applications d’IA.
Création d’un jeu de données de référence Gold Standard
La création d’un jeu de données de référence est une étape essentielle dans l’évaluation des systèmes RAG. Un jeu de données de référence est un ensemble d’exemples utilisés comme référence pour évaluer les performances du système. Le jeu de données doit inclure un ensemble de questions, de réponses et de contextes pertinents pour le domaine du système RAG.
Pour créer un jeu de données de référence, vous pouvez suivre ces étapes :
Identifier un ensemble de questions et de réponses pertinentes pour le domaine du système RAG.
Créer un ensemble de contextes pertinents pour les questions et les réponses.
Faire annoter les contextes et les réponses par des évaluateurs humains afin de créer un jeu de données de vérité terrain.
Utiliser le jeu de données de vérité terrain pour évaluer les performances du système RAG.
Ce processus garantit que l’évaluation repose sur des données exactes et pertinentes, fournissant une référence fiable pour évaluer les performances du système.
Bonnes pratiques pour l’évaluation RAG
L’évaluation des systèmes RAG nécessite de prendre soigneusement en compte plusieurs facteurs. Voici quelques bonnes pratiques pour l’évaluation RAG :
Utiliser un jeu de données de référence pour évaluer les performances du système RAG.
Utiliser une combinaison de métriques d’évaluation pour obtenir une compréhension complète des performances du système.
Tenir compte des compromis entre différentes métriques d’évaluation et choisir celles qui conviennent le mieux à votre cas d’utilisation.
Examiner et affiner régulièrement vos métriques d’évaluation afin de garantir qu’elles restent pertinentes et efficaces.
Utiliser des outils d’évaluation automatisés pour rationaliser le processus d’évaluation et réduire la charge pesant sur les évaluateurs humains.
En suivant ces bonnes pratiques, vous pouvez garantir une évaluation approfondie et efficace de votre système RAG, conduisant à une amélioration continue et à des performances optimales.
Conclusion
Les systèmes RAG sont une technologie puissante pour créer des chatbots et des systèmes de questions-réponses. L’évaluation des performances des systèmes RAG est cruciale pour leur fiabilité et leurs performances. En comprenant les systèmes RAG, en utilisant des métriques d’évaluation, en créant un jeu de données de référence et en suivant les bonnes pratiques pour l’évaluation RAG, vous pouvez vous assurer que votre système RAG fonctionne de manière optimale et fournit des réponses exactes et pertinentes aux utilisateurs.
Dans le monde de l’IA en évolution rapide, il est crucial d’évaluer et d’améliorer régulièrement les applications RAG afin d’assurer leur fiabilité. En utilisant les méthodologies, les métriques et les outils présentés ici, les développeurs et les entreprises peuvent prendre des décisions éclairées concernant les performances et les capacités de leurs systèmes RAG, favorisant ainsi les progrès des applications d’IA.
Continuer à lire

Announcing the General Availability of Single Sign-On (SSO) on Zilliz Cloud
SSO is GA on Zilliz Cloud, delivering the enterprise-grade identity management capabilities your teams need to deploy vectorDB with confidence.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.



