Herramientas de evaluación de RAG: cómo evaluar aplicaciones de generación aumentada por recuperación
RAG)), o Generación Aumentada por Recuperación, es un marco de IA destacado en la era de los grandes modelos de lenguaje (LLMs))) como ChatGPT. Mejora las capacidades de estos modelos al integrar conocimiento externo, garantizando respuestas más precisas y actuales. Un sistema RAG estándar incluye un LLM, una base de datos vectorial como Milvus, y algunos prompts como código, todo lo cual puede evaluarse utilizando un marco integral de evaluación rag.
A medida que cada vez más desarrolladores y empresas adoptan RAG para crear aplicaciones GenAI, evaluar su eficacia se vuelve cada vez más importante. En una publicación anterior, evaluamos el rendimiento de dos sistemas RAG diferentes creados con OpenAI Assistants y la base de datos vectorial Milvus, lo que aportó algo de claridad sobre la evaluación de sistemas RAG. Esta publicación profundizará más y analizará las metodologías utilizadas para evaluar aplicaciones RAG. También presentaremos algunas herramientas de evaluación potentes y destacaremos métricas estándar.
Evaluar aplicaciones RAG es más que simplemente comparar unos pocos ejemplos. La clave está en utilizar métricas convincentes, cuantitativas y reproducibles para evaluar estas aplicaciones. En este recorrido, presentaremos tres categorías de métricas:
Métricas basadas en la verdad fundamental
Métricas sin la verdad fundamental
Métricas basadas en respuestas de LLM
La verdad fundamental se refiere a respuestas bien establecidas o fragmentos de documentos de conocimiento en un conjunto de datos que corresponden a consultas de usuarios. Cuando la verdad fundamental son las respuestas, podemos comparar directamente la verdad fundamental con las respuestas de RAG, facilitando una medición de extremo a extremo mediante métricas como la similitud semántica de la respuesta y la corrección de la respuesta.
A continuación se muestra un ejemplo de evaluación de respuestas en función de su corrección.
Verdad fundamental: Einstein nació en 1879 en Alemania.
Alta corrección de la respuesta: En 1879, en Alemania, nació Einstein.
Baja corrección de la respuesta: En España, Einstein nació en 1879.
Cuando la verdad fundamental son fragmentos del documento de conocimiento, podemos evaluar la correlación entre los fragmentos del documento y los contextos recuperados utilizando métricas tradicionales como Exact Match (EM), Rouge-L y F1. En esencia, estamos evaluando la eficacia de recuperación de las aplicaciones RAG.
Ahora hemos establecido la importancia de utilizar conjuntos de datos con la verdad fundamental para evaluar aplicaciones RAG. Sin embargo, ¿qué ocurre si quieres evaluar una aplicación RAG utilizando tus conjuntos de datos privados sin una verdad fundamental anotada? ¿Cómo generas la verdad fundamental requerida para tus conjuntos de datos?
El método más sencillo es pedir a un LLM como ChatGPT que genere preguntas y respuestas de muestra basadas en tu conjunto de datos propietario. Herramientas como Ragas y LlamaIndex también proporcionan métodos para generar datos de prueba adaptados a tus documentos de conocimiento.
_Las preguntas y respuestas de muestra generadas por la herramienta de evaluación Ragas (fuente: https://docs.ragas.io/en/latest/concepts/testset_generation.html)
Estos conjuntos de datos de prueba generados, compuestos por preguntas, contexto y respuestas correspondientes, facilitan la evaluación cuantitativa sin depender de conjuntos de datos de referencia externos no relacionados. Este enfoque permite a los usuarios evaluar sistemas RAG utilizando sus datos únicos, garantizando un proceso de evaluación más personalizado y significativo.
Métricas sin la verdad fundamental
Aún podemos evaluar aplicaciones RAG sin una verdad fundamental para cada consulta. TruLens-Eval, una herramienta de evaluación de código abierto, innova el concepto de la Tríada RAG, que se centra en evaluar la relevancia de los elementos en los tripletes de consulta, contexto y respuesta. Tres métricas correspondientes son:
Relevancia del contexto: Mide qué tan bien el contexto recuperado respalda la consulta.
Fundamentación: Evalúa en qué medida la respuesta del LLM se alinea con el contexto recuperado.
Relevancia de la respuesta: Mide la relevancia de la respuesta final con respecto a la consulta.
A continuación se muestra un ejemplo de evaluación de respuestas en función de su relevancia para la pregunta.
Pregunta: ¿Dónde está Francia y cuál es su capital?
Respuesta de baja relevancia: Francia está en Europa occidental.
Respuesta de alta relevancia: Francia está en Europa occidental y París es su capital.
Tríada RAG, fuente: https://www.trulens.org/getting_started/core_concepts/rag_triad/
Además, estas métricas de la tríada pueden subdividirse aún más, lo que mejora la granularidad de la evaluación. Por ejemplo, Ragas (un framework de código abierto dedicado a evaluar el rendimiento de los sistemas RAG) ha dividido la relevancia del contexto en tres métricas más detalladas: precisión del contexto, relevancia del contexto y recuperación del contexto.
Esta categoría de métricas evalúa las respuestas de los LLM, considerando factores como amabilidad, nocividad y concisión. Por ejemplo, propone métricas como concisión, relevancia, corrección, coherencia, nocividad, malicia, utilidad, controversialidad, misoginia, criminalidad e insensibilidad.
A continuación se muestra un ejemplo de evaluación de respuestas en función de su concisión.
Pregunta: ¿Cuánto es 2+2?
Respuesta de baja concisión: ¿Cuánto es 2+2? Esa es una pregunta elemental. La respuesta que buscas es que dos más dos son cuatro.
Respuesta de alta concisión: 4
Uso de LLMs para puntuar las métricas
La mayoría de las métricas mencionadas anteriormente requieren introducir texto para obtener una puntuación, lo cual requiere trabajo. La buena noticia es que este proceso se vuelve más manejable con la llegada de LLMs como GPT-4, donde todo lo que necesitas hacer es diseñar un prompt adecuado.
El artículo "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" propone un diseño de prompt para que GPT-4 juzgue la calidad de la respuesta de un asistente de IA a una pregunta de usuario. A continuación se muestra un ejemplo rápido:
[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]
Este prompt le pide a GPT-4 que evalúe la calidad de la respuesta y la califique en una escala del 1 al 10.
Es importante señalar que GPT-4, como cualquier juez, no es infalible y podría tener sesgos y posibles errores. Por lo tanto, el diseño del prompt es crucial. Pueden ser necesarias técnicas avanzadas de ingeniería de prompts, como multi-shot o Chain-of-Thought (CoT). Afortunadamente, no tenemos que preocuparnos por este problema porque muchas herramientas de evaluación para aplicaciones RAG ya han integrado prompts bien diseñados.
Ahora que hemos cubierto la evaluación de una aplicación RAG, exploremos algunas herramientas para evaluar aplicaciones RAG, ofreciendo información sobre cómo funcionan y qué caso de uso se adapta mejor a estas herramientas.
Ragas: evaluación RAG simplificada
Ragas es una herramienta de evaluación de código abierto para evaluar aplicaciones RAG. Con una interfaz sencilla, Ragas simplifica el proceso de evaluación. Al crear una instancia de conjunto de datos en el formato requerido, los usuarios pueden iniciar evaluaciones rápidamente y obtener métricas como 'ragas_score,' 'context_precision,' 'faithfulness,' y 'answer_relevancy.'
from ragas import evaluate
from datasets import Dataset
# prepara tu dataset de huggingface en el formato
# 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 admite una variedad de métricas y no impone requisitos específicos de framework, ofreciendo flexibilidad al evaluar diferentes aplicaciones RAG. Ragas permite el monitoreo en tiempo real de las evaluaciones mediante LangSmith, ofreciendo información sobre las razones de cada evaluación y el consumo de claves API.
Comprender los sistemas RAG
Los sistemas de generación aumentada por recuperación (RAG) son un tipo de tecnología de inteligencia artificial (IA) que combina las fortalezas de los modelos de lenguaje grandes (LLMs) con la recuperación de conocimiento externo. Los sistemas RAG constan de tres componentes principales: Index, Retrieve y Generate. El componente Index crea una base de datos de conocimiento que puede buscarse y recuperarse. El componente Retrieve recupera información relevante de la base de datos indexada. El componente Generate crea texto nuevo basado en la información recuperada.
Los sistemas RAG se usan comúnmente para chatbots y sistemas de preguntas y respuestas. Proporcionan un enfoque robusto y dinámico para las conversaciones de IA y el procesamiento de información. Al aprovechar el conocimiento externo, los sistemas RAG permiten respuestas más precisas, contextuales, relevantes y actualizadas. Esto los hace invaluables en diversos dominios, incluidos el servicio al cliente y los chatbots de conocimiento interno, donde la información precisa y oportuna es crucial.
Métricas de evaluación para RAG
Evaluar el rendimiento de los sistemas RAG es crucial para su fiabilidad y rendimiento. Existen varias métricas de evaluación para los sistemas RAG, incluidas:
Relevancia del contexto: Mide la relevancia del contexto recuperado para la consulta del usuario.
Recuperación del contexto: Mide la proporción de contexto relevante recuperado por el sistema.
Fidelidad: Mide la precisión del texto generado con base en el contexto recuperado.
Relevancia de la respuesta: Evalúa la relevancia del texto generado para la consulta del usuario.
Corrección de la respuesta: Evalúa la precisión del texto generado.
Estas métricas proporcionan un marco integral para evaluar el rendimiento de los sistemas RAG. Al analizar estos aspectos, los desarrolladores pueden identificar áreas de mejora y garantizar que el sistema ofrezca respuestas de alta calidad, relevantes y precisas.
LlamaIndex: construir y evaluar con facilidad
LlamaIndex es un framework de IA robusto para crear aplicaciones RAG, incluida una herramienta de evaluación RAG. Es útil para evaluar aplicaciones creadas dentro de su 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: evaluación integrada para diversos frameworks
TruLens Eval proporciona una forma sencilla de evaluar aplicaciones RAG creadas con LangChain y LlamaIndex. El siguiente fragmento de código muestra cómo configurar la evaluación para una aplicación RAG basada en 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 puede evaluar aplicaciones RAG creadas con otros frameworks, pero implementarlo en código puede ser complejo. Consulta la documentación oficial para obtener más detalles.
Además, Trulens-Eval también ofrece monitoreo visual en el navegador para analizar las razones de evaluación y observar el uso de claves API.
Phoenix: evaluación de LLM con flexibilidad
Phoenix proporciona un conjunto completo de métricas para evaluar LLMs, incluida la calidad de los embeddings generados y las respuestas del LLM. También puede evaluar aplicaciones RAG, pero incluye menos métricas que las otras herramientas de evaluación mencionadas. El siguiente fragmento de código muestra cómo usar Phoenix para evaluar una aplicación RAG creada con 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,
)
Además de las herramientas mencionadas anteriormente, otras plataformas como DeepEval, LangSmith y OpenAI Evals también ofrecen capacidades para evaluar aplicaciones RAG. Sus metodologías son similares, pero el diseño de prompts y los detalles de implementación varían, así que asegúrate de elegir la herramienta que mejor funcione para ti.
En conclusión, revisamos algunas metodologías, métricas y herramientas de evaluación de aplicaciones RAG. En particular, exploramos tres categorías de métricas:
aquellas basadas en una verdad de referencia,
aquellas sin una verdad de referencia,
y aquellas basadas en las respuestas de modelos de lenguaje grandes (LLMs).
Las métricas de verdad de referencia implican comparar las respuestas RAG con respuestas establecidas. En cambio, las métricas sin verdad de referencia, como la Tríada RAG, se centran en evaluar la relevancia entre las consultas, el contexto y las respuestas. Las métricas basadas en respuestas de LLM consideran la amabilidad, la nocividad y la concisión.
También exploramos el uso de LLMs para puntuar métricas mediante prompts bien diseñados e introdujimos un conjunto de herramientas de evaluación RAG, incluidas Ragas, LlamaIndex, TruLens-Eval y Phoenix para ayudar en esta tarea.
En el mundo de la IA, que cambia rápidamente, evaluar y mejorar regularmente las aplicaciones RAG es crucial para su fiabilidad. Al utilizar las metodologías, métricas y herramientas analizadas aquí, los desarrolladores y las empresas pueden tomar decisiones informadas sobre el rendimiento y las capacidades de sus sistemas RAG, impulsando el progreso de las aplicaciones de IA.
Creación de un conjunto de datos de referencia dorado
Crear un conjunto de datos de referencia es un paso fundamental para evaluar sistemas RAG. Un conjunto de datos de referencia es un conjunto de ejemplos que se utilizan como referencia para evaluar el rendimiento del sistema. El conjunto de datos debe incluir un conjunto de preguntas, respuestas y contextos que sean relevantes para el dominio del sistema RAG.
Para crear un conjunto de datos de referencia, puedes seguir estos pasos:
Identificar un conjunto de preguntas y respuestas relevantes para el dominio del sistema RAG.
Crear un conjunto de contextos que sean relevantes para las preguntas y respuestas.
Hacer que evaluadores humanos anoten los contextos y las respuestas para crear un conjunto de datos de verdad fundamental.
Usar el conjunto de datos de verdad fundamental para evaluar el rendimiento del sistema RAG.
Este proceso garantiza que la evaluación se base en datos precisos y relevantes, proporcionando un punto de referencia fiable para evaluar el rendimiento del sistema.
Mejores prácticas para la evaluación de RAG
Evaluar sistemas RAG requiere considerar cuidadosamente varios factores. Estas son algunas mejores prácticas para la evaluación de RAG:
Usar un conjunto de datos de referencia para evaluar el rendimiento del sistema RAG.
Usar una combinación de métricas de evaluación para obtener una comprensión integral del rendimiento del sistema.
Considerar las compensaciones entre diferentes métricas de evaluación y elegir las que mejor se adapten a tu caso de uso.
Revisar y refinar regularmente tus métricas de evaluación para garantizar que sigan siendo relevantes y efectivas.
Usar herramientas de evaluación automatizadas para agilizar el proceso de evaluación y reducir la carga sobre los evaluadores humanos.
Al seguir estas mejores prácticas, puedes garantizar una evaluación exhaustiva y efectiva de tu sistema RAG, lo que conduce a una mejora continua y un rendimiento óptimo.
Conclusión
Los sistemas RAG son una tecnología poderosa para crear chatbots y sistemas de preguntas y respuestas. Evaluar el rendimiento de los sistemas RAG es crucial para su fiabilidad y rendimiento. Al comprender los sistemas RAG, usar métricas de evaluación, crear un conjunto de datos de referencia y seguir las mejores prácticas para la evaluación de RAG, puedes garantizar que tu sistema RAG funcione de manera óptima y proporcione respuestas precisas y relevantes a los usuarios.
En el mundo de la IA, que cambia rápidamente, evaluar y mejorar regularmente las aplicaciones RAG es crucial para su fiabilidad. Utilizando las metodologías, métricas y herramientas analizadas aquí, los desarrolladores y las empresas pueden tomar decisiones informadas sobre el rendimiento y las capacidades de sus sistemas RAG, impulsando el progreso de las aplicaciones de IA.
Sigue leyendo

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

What Is a Vector Lakebase?
A Vector Lakebase is a unified, lake-native data architecture for AI that combines vector-database-grade serving with open lake storage, reusable lake-level indexes, and a shared semantic layer.

Creating Collections in Zilliz Cloud Just Got Way Easier
We've enhanced the entire collection creation experience to bring advanced capabilities directly into the interface, making it faster and easier to build production-ready schemas without switching tools.



