Framework de Evaluación para el patrón RAG implementado en Justicio

Dario Lopez Padial
6 min readJul 17, 2024

--

Introducción a Justicio

Justicio es una aplicación diseñada para que los usuarios obtengan respuestas a preguntas de ámbito legal y jurídico, generadas en lenguaje natural. Además, Justicio proporciona las fuentes utilizadas para generar cada respuesta (leyes del BOE) y las presenta ordenadas por importancia.

Si no lo has probado aún, te animo a que lo hagas; es un servicio gratuito: https://justicio.es

Además, todo el código utilizado en la aplicación está disponible en GitHub. Invitamos a cualquier persona a contribuir con ideas, a mejorar el código o simplemente a aprender revisando el código fuente.

Creemos que puede ser muy útil tanto si estás estudiando una oposición, como si trabajas en el sector legal.

Estos artículos están en evolución. ¡Si tienes alguna sugerencia, dímela!

Introducción a RAG

En el ámbito de la inteligencia artificial y el procesamiento del lenguaje natural, uno de los desafíos más significativos es generar texto coherente y relevante a partir de grandes volúmenes de datos. El patrón RAG (Retrieval Augmented Generation), o Generación Aumentada por Recuperación, es una metodología innovadora que aborda este desafío combinando técnicas de recuperación de información con modelos generativos avanzados.

¿Qué es el patrón RAG?

RAG es una técnica híbrida que integra la recuperación de información con la generación de texto. Esta técnica se basa en dos componentes principales:

  1. Consulta: El usuario proporciona una entrada o pregunta.
  2. Recuperación (Retrieval): En esta fase, se utiliza un sistema de búsqueda para recuperar documentos relevantes de una base de datos de embeddings. El objetivo es encontrar información específica que pueda ser útil para responder una pregunta o generar un contenido particular.
  3. Generación (Generation): Una vez que se han recuperado los documentos relevantes, un modelo generativo (como Llama3) utiliza esta información para producir un texto coherente y contextualizado.
Imagen 1: Esquema gráfico de la implementación del patrón RAG (Imagen por cortesía de Gobierno de España)

Este enfoque permite que el modelo generativo tenga acceso a una cantidad significativa de información relevante, lo que mejora la precisión y relevancia de las respuestas generadas. Además, al combinar recuperación y generación, RAG puede aprovechar lo mejor de ambos mundos: la capacidad de búsqueda eficiente y el poder de generación de texto natural.

Necesidad de RAG en Justicio

Justicio es una aplicación diseñada para proporcionar respuestas a preguntas de ámbito legal y jurídico, basándose en información actualizada del Boletín Oficial del Estado (BOE). Dado que el BOE se actualiza diariamente, es fundamental que Justicio utilice un enfoque que garantice que las respuestas generadas reflejen las leyes y regulaciones más recientes.

  • Actualización Diaria del BOE: El BOE publica nuevas leyes, decretos y regulaciones a diario. Sin un mecanismo que permita la actualización continua de los datos utilizados por Justicio, las respuestas podrían volverse rápidamente obsoletas.
  • Confiabilidad de la Información: Al usar el patrón RAG, Justicio no solo genera respuestas basadas en datos preexistentes, sino que también verifica y recupera la información más reciente del BOE, garantizando así la precisión y relevancia de cada respuesta.
  • Transparencia y Referencias: RAG permite a Justicio mostrar las fuentes utilizadas para generar cada respuesta, ordenadas por importancia, lo que aumenta la transparencia y la confianza de los usuarios en las respuestas proporcionadas.

Modelo de Embeddings y Base de Datos de Embeddings

Para facilitar la recuperación de información relevante, RAG utiliza un modelo de embeddings que codifica la información de manera semántica. Este modelo transforma las consultas de los usuarios y los datos de la fuente en representaciones vectoriales que capturan el significado y la relevancia contextual. Además, RAG emplea una base de datos de embeddings que almacena estas representaciones semánticas, lo que permite una búsqueda eficiente y precisa de la información relevante en tiempo real.

Evaluación en un Sistema RAG

La evaluación de un sistema de generación aumentada por recuperación (RAG) es un proceso fundamental para asegurar que las respuestas generadas sean precisas, relevantes y estén basadas en información actualizada. Dado que el patrón RAG combina la recuperación de datos en tiempo real con la generación de texto, su evaluación debe considerar tanto la calidad de la información recuperada como la coherencia y precisión de la respuesta generada.

Importancia de la Evaluación en RAG

  1. Garantía de Precisión: Es crucial asegurar que las respuestas generadas por el sistema se basen en la información más reciente.
  2. Medición de Impacto de Cambios: Evaluar el sistema permite medir el impacto de cualquier cambio implementado, ya sea en el modelo de generación, el motor de recuperación, o la integración de nuevas fuentes de datos.
  3. Detección de Errores: La evaluación continua ayuda a identificar y corregir errores o inconsistencias en las respuestas generadas.
  4. Mejora Continua: Proporciona un ciclo de retroalimentación que facilita la mejora continua del sistema, asegurando que se mantenga alineado con los objetivos y necesidades del usuario.

Métricas de Evaluación usadas en RAG

Para evaluar un sistema RAG, es esencial utilizar métricas que puedan medir tanto la relevancia del contexto como la similitud semántica de las respuestas. En este contexto, el framework Ragas ofrece herramientas específicas para esta evaluación.

Context Relevancy

La métrica de context relevancy mide cuán relevante es la información recuperada de la base de datos de embeddings para la pregunta formulada. Esta métrica evalúa la calidad de la recuperación de datos, asegurando que las fuentes utilizadas sean pertinentes y adecuadas para la generación de una respuesta precisa.

  • Objetivo: Garantizar que los datos recuperados del BOE o cualquier otra fuente sean relevantes para la consulta del usuario.
  • Evaluación: Se evalúa comparando las fuentes recuperadas con la pregunta original para determinar su pertinencia.
  • Link

Answer Semantic Similarity

La métrica de answer semantic similarity (SAS) mide la similitud semántica entre la respuesta generada por el sistema y una respuesta de referencia ideal. Esta métrica se enfoca en la calidad y coherencia del texto generado, asegurando que la respuesta no solo sea correcta sino también clara y coherente.

  • Objetivo: Verificar que la respuesta generada mantenga una alta similitud semántica con una respuesta de referencia, reflejando precisión y claridad.
  • Evaluación: Se utiliza para comparar la respuesta generada con una respuesta de referencia utilizando técnicas de procesamiento del lenguaje natural para medir la similitud.
  • Link

Construcción de un dataset sintético

Un componente vital para la construcción del framework de evaluación será el dataset sintético de preguntas y respuestas de referencia basadas en la Constitución Española. Con este conjunto de respuestas de referencia, se puede evaluar la coherencia y la calidad del texto generado utilizando métricas objetivas, como la similitud semántica.

Para la generación del dataset, la Constitución se ha dividido en párrafos, y se ha generado una pregunta y una respuesta para cada uno de ellos. Para generar las preguntas y respuestas, se ha utilizado el modelo Llama-3–70B proporcionado por Groq a través de su API gratuita.

Notebooks usados para la generación

  1. https://github.com/bukosabino/justicio/blob/f46f11c8ed38ee071dee7e2551f0ae47b58f32a0/evaluation/qa_synthetic_dataset/embedding_model/1_a_Build-constitucion-by-articles.ipynb
  2. https://github.com/bukosabino/justicio/blob/f46f11c8ed38ee071dee7e2551f0ae47b58f32a0/evaluation/qa_synthetic_dataset/embedding_model/2_a_Generate-constitucion-by-articles.ipynb

Dataset generado

https://huggingface.co/datasets/dariolopez/justicio-BOE-A-1978-31229-constitucion-by-articles-qa

Como resultado, hemos obtenido un dataset de 515 preguntas y respuestas a partir de la Constitución Española. Las respuestas obtenidas serán usadas como “ground truth” en el futuro.

Conclusiones

Cada proyecto tiene requisitos y características que lo hacen único. En nuestro caso, Justicio trabaja en un ámbito muy específico, el dominio legal y jurídico, y, además, usa el lenguaje español, que no es el más común en el mundo de la inteligencia artificial.

Por esta razón, hemos querido evitar el uso de benchmarks generales. Al implementar nuestro propio framework de evaluación, nos aseguramos de que los resultados obtenidos sean relevantes para compararlos entre sí y de que el sistema funcione de la manera esperada.

En los siguientes artículos, usaremos el framework de evaluación para comparar los diferentes componentes del sistema y responderemos a preguntas como estas:

  • ¿Qué modelo de embeddings funciona mejor en Justicio?
  • ¿Tiene sentido fine-tunear un modelo de embeddings en lenguaje español y ámbito legal?
  • ¿Qué tamaño de chunk deberíamos elegir para dividir el BOE?
  • ¿Tiene sentido aplicar técnicas avanzadas como Hybrid Search, Re-ranking o GraphRAG?

--

--