Todos los recursos

Cada cambio que le metes a tu RAG, tamaño de chunk, embedder, reranker, prompt, es una adivinanza hasta que le pones un número encima. Ragas puntúa fidelidad, relevancia de la respuesta y precisión/recall del contexto para que separes los problemas de recuperación de los de generación y respaldes tus cambios con un delta. Aquí te explico qué es, cuándo conviene frente a armarlo tú mismo o usar una suite de evals más pesada, un quickstart listo para pegar, y las concesiones honestas de poner un modelo a calificar a otro modelo.

Ragas: evalúa tu RAG con honestidad en vez de medirlo a ojo

En resumen

  • Ragas es una librería open-source de Python que puntúa pipelines RAG con métricas como fidelidad, relevancia de la respuesta y precisión/recall del contexto, casi todas las calcula un LLM que actúa de juez sobre tu set de evaluación.
  • Su valor real es la descomposición: las métricas de contexto te dicen si una mala respuesta vino de una mala recuperación o de una mala generación, para que arregles la capa que toca en vez de adivinar.
  • Échale mano antes y después de cualquier cambio en la recuperación, y déjalo como gate de CI, para que un cambio 'inofensivo' de prompt no te tumbe la calidad en silencio sin que nadie se dé cuenta.
  • El juez es a su vez un modelo, así que las puntuaciones traen ruido y cuestan dinero, fija el modelo y la versión del juez, corre suficientes muestras para que la señal le gane a la varianza, y calíbralo contra unos cuantos ejemplos revisados por humanos.
  • Arma primero un set pequeño, real y etiquetado: veinte preguntas representativas valen más que doscientas sintéticas, y un dataset limpio importa más que cuál métrica termines eligiendo.

Pregúntale a cualquiera que tenga un sistema con recuperación aumentada en producción cómo sabe que funciona, y casi siempre vas a oír alguna versión de "probé unas cuantas preguntas y se sintió mejor". Eso no es una medición, es una corazonada, y las corazonadas no aguantan un cambio de tamaño de chunk, un embedder nuevo, ni un ajuste de prompt que hiciste a las 11 de la noche. Ragas es una librería open-source que convierte ese "se siente mejor" en un delta que puedes defender, puntuando tu pipeline RAG con métricas como fidelidad y precisión del contexto, casi todas calculadas por un LLM que actúa de juez. Aquí va qué es en realidad, cuándo se gana su lugar frente a las alternativas, un quickstart listo para pegar, y las concesiones de calificar un modelo con otro modelo.

Nota

Ragas es una librería de evaluación, no un framework de RAG. No construye tu índice, no recupera tus chunks ni genera tus respuestas, puntúa las entradas y salidas que tú ya produces. Júzgalo por si te hace visibles las regresiones, no por si reemplaza tu stack de recuperación.

01 · Qué es en realidad

Ragas calcula métricas sobre un dataset en el que cada fila es una pregunta junto con los artefactos que tu pipeline produjo para ella: la pregunta, los contextos recuperados, la respuesta generada y, para algunas métricas, una referencia (la respuesta de ground-truth). No le pasas tu código; le pasas los resultados, y él los puntúa.

Las métricas se dividen en dos familias, y ahí está toda la gracia:

  • Métricas de generación juzgan la respuesta contra el contexto que recibió. La fidelidad pregunta si cada afirmación de la respuesta de verdad está respaldada por el contexto recuperado (la métrica anti-alucinación). La relevancia de la respuesta pregunta si la respuesta de verdad responde la pregunta en vez de irse por las ramas.
  • Métricas de recuperación juzgan el contexto en sí. La precisión del contexto pregunta si los chunks relevantes quedaron rankeados cerca del tope. El recall del contexto pregunta si el contexto traía todo lo necesario para responder, lo que exige una referencia con la cual comparar.

A casi todas las calcula un LLM juez: Ragas le pide a un modelo que descomponga la respuesta en afirmaciones, verifique cada una contra el contexto y devuelva una puntuación. Unas pocas se basan en embeddings. En cualquier caso, no estás escribiendo la rúbrica desde cero, Ragas trae los prompts y la agregación ya hechos.

Esa división en dos familias es justo lo que hace que Ragas le gane a una sola puntuación de punta a punta del tipo "¿esta respuesta es buena?". Una puntuación general baja te dice que algo se rompió; la descomposición te dice dónde.

02 · Por qué importa: separar recuperación de generación

Lo más útil que hace Ragas es que dejas de mezclar dos fallas completamente distintas. Cuando una respuesta de RAG sale mal, sale mal por una de dos razones, y cada una pide un arreglo opuesto:

  1. Falló la recuperación. El chunk correcto nunca llegó al contexto, así que el modelo respondió sin nada en la mano, o alucinó para tapar el hueco. Ningún ajuste de prompt arregla esto; arreglas el chunking, los embeddings, el reranker o el top-k.
  2. Falló la generación. El contexto correcto estaba ahí, pero el modelo lo ignoró, lo leyó mal o metió afirmaciones sin respaldo. Ningún cambio en la recuperación arregla esto; arreglas el prompt, el modelo o cómo se formatea el contexto.

Sin métricas, las dos se ven iguales desde afuera, una mala respuesta es una mala respuesta y punto. Ragas las separa: recall de contexto bajo con fidelidad alta apunta de lleno a la recuperación; recall de contexto alto con fidelidad baja apunta de lleno a la generación.

Consejo

Lee las métricas como un 2×2, no como un ranking. La señal que importa está en la combinación: buena recuperación + mala fidelidad significa que el problema es tu prompt o tu modelo; mala recuperación + buena fidelidad significa que tus respuestas son honestas pero les falta de qué agarrarse. Perseguir un solo número aislado te tapa justo el diagnóstico que viniste a buscar.

Me apoyo en esta división todo el tiempo. En la capa de recuperación del CME Platform, una caída de calidad en las respuestas no me dice nada hasta que sé de qué lado de esa línea cayó, y Ragas es lo que me lo dice, en vez de ponerme a releer transcripciones y adivinar.

03 · Cuándo usarlo (y cuándo no)

Usa Ragas cuando:

  • Estás por cambiar cualquier cosa en el camino de recuperación, tamaño de chunk, solapamiento, embedder, reranker, top-k, y quieres un delta de antes/después en vez de una corazonada.
  • Quieres un gate de CI para que un ajuste de prompt o un bump de dependencia no degrade la calidad en silencio. Corre el set de evaluación en cada cambio y haz fallar el build si una métrica cae por debajo de un umbral.
  • Estás comparando opciones, dos embedders, dos rerankers, tres estrategias de chunking, y necesitas un scorecard consistente para decidir.

No lo uses cuando:

  • Todavía no tienes un set etiquetado. Ragas sin un dataset real es puro teatro; arma primero el dataset (mira la sección 5).
  • Tu pipeline no es RAG. Ragas está pensado para pregunta → contexto → respuesta. Para un agente general o una tarea de clasificación, te encaja mejor una rúbrica simple de LLM-como-juez o un eval específico de la tarea.
  • Necesitas un pass/fail sobre una sola respuesta en producción. Ragas es para evaluación offline sobre un set, no un guardrail en tiempo real sobre un solo request, el juez es demasiado lento y demasiado ruidoso para eso.

Cómo se compara

  • vs. armar tu propio LLM-como-juez, claro que puedes, y para una sola métrica quizá hasta deberías. Ragas se gana su lugar porque trae prompts de juez ya probados, la lógica para descomponer en afirmaciones y la agregación, para que no estés reinventando "qué significa fidelidad" desde cero. El costo es una dependencia más y algo de opacidad sobre cómo se calcula cada puntuación.
  • vs. una plataforma de evals más pesada (DeepEval, TruLens, Phoenix), esas vienen con tracing, dashboards y tipos de prueba más amplios. Ragas es más acotado y ligero: una librería de métricas enfocada que llamas desde un script o un test. Si lo único que quieres son números en CI, ese enfoque acotado es una ventaja, no una carencia.
  • vs. revisión humana, los humanos son el ground-truth y la calibración, no el caballito de batalla del día a día. No puedes meter a un humano en CI en cada commit. Usa Ragas para el loop por cada cambio, y a los humanos para verificar de vez en cuando que la métrica sigue pegada a la realidad.

04 · Quickstart

Instálalo junto a lo que ya estés usando para llamar a tu modelo:

pip install ragas

El flujo central es este: armas un dataset de pregunta/contexto/respuesta (más una referencia cuando la métrica la pide), eliges métricas y llamas a «evaluate». Aquí va una corrida mínima que puntúa fidelidad y precisión del contexto sobre un set de evaluación muy pequeño:

from ragas import evaluate
from ragas.dataset_schema import EvaluationDataset, SingleTurnSample
from ragas.metrics import Faithfulness, LLMContextPrecisionWithReference

# Cada sample = una fila de evaluación de la salida de tu pipeline.
samples = [
    SingleTurnSample(
        user_input="¿En qué puerto escucha el proxy?",
        retrieved_contexts=["Traefik escucha en el 443 para tráfico HTTPS."],
        response="El proxy escucha en el puerto 443.",
        reference="443",
    ),
    # ... idealmente ~20 preguntas reales y representativas ...
]

dataset = EvaluationDataset(samples=samples)

result = evaluate(
    dataset=dataset,
    metrics=[Faithfulness(), LLMContextPrecisionWithReference()],
    # Fija el juez de forma explícita, nunca lo dejes flotar a un default.
    # llm=tu_modelo_juez_envuelto,
)

print(result)               # puntuaciones agregadas por métrica
df = result.to_pandas()     # puntuaciones por fila, para leer los fallos

La línea más importante es justo la que descomentas: fija el modelo y la versión del juez de forma explícita. Si el juez por defecto te cambia por debajo, tus puntuaciones se mueven por razones que no tienen nada que ver con tu pipeline, y tu "regresión" en realidad es un upgrade del juez.

Importante

Siempre revisa «result.to_pandas()», no solo el agregado. El promedio te esconde la historia. Dos pipelines pueden sacar el mismo promedio aunque uno sea mediocre en todo y el otro sea excelente en casi todas las preguntas y un desastre en unas pocas, y esas pocas suelen ser las que importan. Ordena por la puntuación de cada fila y lee el fondo de la lista.

05 · El dataset es la parte difícil

Esto es lo que el README no te cuenta bien: Ragas es el 20% fácil. El 80% difícil y valioso es el set de evaluación. Una corrida de métricas sobre un dataset malo te da números muy convincentes que no significan nada.

Arma el set con intención:

  1. Usa preguntas reales. Sácalas de queries reales de usuarios, de tickets de soporte, o de las preguntas que tú y tu equipo de verdad le hacen al sistema. Las preguntas sintéticas prueban una distribución de fantasía.
  2. Mantenlo pequeño y representativo, y luego hazlo crecer. Veinte preguntas que cubran tus modos de falla reales le ganan a doscientas casi calcadas. Agrega una fila cada vez que descubras una forma nueva en que se rompe, tu set de evaluación debería ir acumulando cada bug pasado como test de regresión.
  3. Escribe referencias donde la métrica las pida. El recall del contexto y la precisión basada en referencia necesitan una respuesta de ground-truth o el contexto relevante etiquetado. Esta es la parte tediosa; también es de donde sale la señal.
  4. Fija todo. Mismo modelo de juez, misma versión, mismo set de métricas, mismo dataset entre corridas. Un eval que no puedes reproducir no es un eval.

Atención

Ragas puede generarte un set de prueba sintético, y es una forma decente de arrancar cuando no tienes nada, pero no lo dejes como tu juez de referencia. Las preguntas sintéticas heredan los puntos ciegos del generador y su forma de redactar, así que se saltan sistemáticamente las queries reales, ambiguas y enredadas que de verdad rompen tu sistema. Usa data sintética para empezar y reemplázala con data real etiquetada lo más rápido que puedas.

06 · Concesiones honestas

Ragas es genuinamente útil, pero no es una máquina de la verdad, y creer que lo es te va a salir caro:

  • El juez es un modelo, así que las puntuaciones traen ruido. La misma respuesta puede sacar 0.82 en una corrida y 0.76 en la siguiente. Corre suficientes muestras para que la señal se imponga sobre esa varianza, y mira con desconfianza los deltas pequeños, un movimiento de dos puntos lo más probable es que sea ruido, no progreso.
  • Juzgar cuesta tokens y tiempo. La fidelidad descompone cada respuesta en afirmaciones y verifica cada una, o sea, varias llamadas al juez por cada fila. Unos cientos de filas por varias métricas se traducen en una factura real y un paso de CI lento. Cachea donde puedas y no corras la suite completa en cada commit trivial.
  • Una puntuación baja es una invitación a investigar, no un veredicto. Una fidelidad baja puede significar que tu respuesta alucinó, o que el juez leyó mal una respuesta correcta pero escueta. Lee las filas que fallan antes de creerte el número, sobre todo al principio.
  • Tienes que calibrar contra humanos. Cada cierto tiempo pon a una persona a calificar un puñado de filas y verifica que el ranking humano y el de Ragas coincidan. Si se separan, tu métrica se despegó de la realidad y tu gate de CI ahora está frenando builds por la razón equivocada.

La disciplina que hace que Ragas valga la pena es aburrida e innegociable: un set real etiquetado, un juez fijo, suficientes muestras para ganarle a la varianza, y un loop de calibración humana. Hazlo bien y la calidad de tu RAG deja de ser una discusión y pasa a ser un número que puedes defender en un PR. Sáltatelo y lo que armaste es una forma muy convincente de mentirte a ti mismo con decimales.

Puntos clave

  • Ragas convierte el 'se siente mejor' en un delta que puedes defender, puntuando tu RAG en fidelidad, relevancia de la respuesta y precisión/recall del contexto sobre un set etiquetado.
  • Su fuerza real es la descomposición: lee las métricas como un 2×2 para separar las fallas de recuperación de las de generación y arreglar la capa que toca.
  • Fija el modelo y la versión del juez, corre suficientes muestras para ganarle a la varianza, y lee siempre los fallos fila por fila, nunca confíes solo en el agregado.
  • El dataset es la parte difícil: arranca con veinte preguntas reales, hazlo crecer agregando cada bug como test de regresión, y no dejes un set sintético como tu juez de referencia.
  • Calibra contra humanos cada cierto tiempo; el juez es un modelo, las puntuaciones traen ruido y cuestan dinero, y una puntuación baja es una invitación a investigar, no un veredicto.

Preguntas frecuentes

¿Ragas necesita respuestas de ground-truth para cada métrica?

No, depende de la métrica. La fidelidad y la relevancia de la respuesta juzgan la respuesta solo contra el contexto recuperado, así que funcionan sin ninguna referencia. El recall del contexto y la precisión basada en referencia sí necesitan una respuesta de ground-truth (o el contexto relevante etiquetado) con la cual comparar, porque están midiendo si tu recuperación encontró lo que de verdad hacía falta. Lo práctico es arrancar con las métricas que no piden referencia, para poder correr sobre la salida cruda del pipeline, y después invertir en etiquetar referencias para las métricas de recuperación una vez que ya decidiste que es ahí donde tienes que escarbar.

¿Por qué cambian mis puntuaciones cuando vuelvo a correr el mismo dataset?

Porque el juez es a su vez un modelo no determinista. La misma respuesta puede puntuar un poco distinto entre corridas, y esa varianza es real, no un bug. Dos defensas: fija el modelo y la versión del juez para que un cambio aguas arriba no se disfrace de regresión, y corre suficientes muestras para que la señal agregada le gane al ruido de cada fila. Toma un delta pequeño, digamos dos puntos, como probable ruido y no como un resultado, y busca un movimiento lo bastante grande y consistente como para que aguante una segunda corrida antes de actuar sobre él.

¿Puedo correr Ragas en CI sin que sea lento y caro?

Sí, con algo de disciplina. Mantén el set de evaluación pequeño y representativo, de veinte a cincuenta preguntas reales, no cientos, para que una corrida completa te tome unos minutos y no una hora. No corras la suite completa en cada commit trivial; reserva el gate para los cambios que tocan el camino de recuperación o de prompt, o córrelo de forma programada y en las ramas de release. Elige las dos o tres métricas que de verdad atrapan tus modos de falla, en vez de disparar todas las que Ragas ofrece. La idea del gate es atrapar regresiones reales, no maximizar la cantidad de llamadas al juez por cada pull request.

¿Una puntuación baja de fidelidad prueba que mi modelo alucinó?

No es prueba, es una pista fuerte que vale la pena investigar. La fidelidad funciona descomponiendo la respuesta en afirmaciones y verificando cada una contra el contexto, y el juez puede equivocarse en alguna: puede marcar una respuesta correcta pero escueta, o no ver un respaldo que está redactado distinto a la respuesta. Así que lee las filas que fallan antes de creerte el veredicto. Sobre todo al principio, échale el ojo a una muestra de filas con puntuación baja para confirmar que el juez está atrapando afirmaciones realmente sin respaldo y no castigando un estilo que no le gusta. Una vez que ya calibraste y confías en la métrica, puedes apoyarte más en el número, pero nunca dejes de revisar el fondo de la distribución.

¿Debería usar Ragas para generar mi set de prueba?

Solo para arrancar, nunca como tu juez de referencia. Ragas puede sintetizar un set de prueba, y es genuinamente útil cuando no tienes nada y necesitas empezar por algún lado hoy mismo. Pero las preguntas sintéticas heredan los puntos ciegos del generador y su forma de redactar, así que se saltan sistemáticamente las queries reales, ambiguas y enredadas que de verdad rompen tu sistema, justo los casos que un set de evaluación existe para atrapar. Usa el set sintético para echar a andar y luego reemplázalo lo más rápido que puedas con preguntas reales sacadas de logs, tickets y tu propio uso. La calidad de tus conclusiones está topada por la de tu dataset, y un dataset de fantasía te da números seguros e inútiles.

¿En qué se diferencia Ragas de un prompt genérico de LLM-como-juez?

Un LLM-como-juez genérico le pide a un modelo que califique la salida de otro contra una rúbrica que tú escribes. Ragas es esa misma idea pero especializada para RAG, con las rúbricas ya hechas y descompuestos en preguntas con forma de RAG: la fidelidad verifica las afirmaciones contra el contexto recuperado, la precisión del contexto verifica el ranking, y así. La ganancia es que no estás reinventando qué significa 'fiel' o 'relevante' ni cómo descomponer una respuesta en afirmaciones verificables, Ragas trae prompts y agregación ya probados para el caso RAG. La concesión es algo de opacidad y una dependencia más; si tu tarea no es RAG, suele encajar mejor una rúbrica hecha a mano que controlas por completo. Son la misma familia, Ragas es el integrante que ya viene con las pilas puestas para RAG.

Abrir recurso (abre en pestaña nueva)

¿Prefieres que lo hagamos por ti?

Esto mismo lo construimos para negocios como el tuyo. La primera conversación es gratis y sin compromiso.

Escríbenos por WhatsApp

Escríbenos por WhatsApp

Escanéalo con tu teléfono para escribirnos por WhatsApp.

Escanéalo con tu teléfono para escribirnos por WhatsApp.

¿Estás desde el teléfono y no puedes escanear? Escríbenos a info@ilustrari.com

Primera conversación gratis. Te responde el fundador.

Recursos relacionados