Los sistemas de generación mejorada por recuperación o RAG (Retrieval-Augmented Generation) están demostrando una gran eficacia para optimizar el resultado que ofrece un modelo de lenguaje de gran tamaño (LLM) con referencias a información contenida en documentos externos sin la necesidad de reentrenar el modelo.
Mediante estos sistemas RAG, podemos aplicar las capacidades de un LLM a una base de documentos interna de una empresa, o completar el conocimiento del modelo con información específica de un dominio concreto. En este post trataremos los corpus orientados a sistemas de RAG, la metodología para su creación y la evaluación del modelo que puede realizarse gracias a ellos.
Corpus enfocados a sistemas RAG
A grandes rasgos, un corpus enfocado a un sistema de RAG estará compuesto de preguntas y respuestas, más los correspondientes contextos extraídos de los documentos y los propios documentos de base. Por supuesto, estos corpus podrían utilizarse para realizar un ajuste fino (fine-tuning) de un modelo ya entrenado, pero resultan especialmente útiles en el testeo de modelos.
Si tenemos un corpus que refleje el caso de uso con el que estamos trabajando, con preguntas idénticas a las que podría hacer un usuario medio del sistema de RAG, y respuestas completamente enfocadas en lo que buscaría dicho usuario, podemos medir de forma fiable el rendimiento del sistema si comparamos sus respuestas con las que aparecen en el corpus. Además, podemos medir la idoneidad de los contextos seleccionados, la comprensión de la pregunta y la relevancia de la respuesta. Más adelante trataremos una escala de evaluación que puede usarse junto con este tipo de corpus.
Cómo crear corpus enfocados a sistemas RAG
Para la creación de corpus enfocados a sistemas RAG, existen varias técnicas disponibles que conviene valorar según el propósito del corpus y los medios de los que dispongamos. Vamos a describir dos de estas técnicas:
- Creación manual de corpus: un equipo de lingüistas computacionales elabora el corpus asegurándose de que todas sus partes cumplan el objetivo requerido con la máxima calidad.
- Generación automática: el corpus (o parte de él) es elaborado por un modelo generativo, que realiza la tarea de generar preguntas y respuestas a partir de los documentos que se aporten.
Ambos métodos pueden combinarse, y podemos encontrarnos casos en los que las preguntas se elaboran manualmente pero las respuestas y los contextos se generan automáticamente. Para tener una visión más general de los distintos tipos de corpus y sus metodologías, podemos consultar Datasets for Large Language Models: A Comprehensive Survey.
Creación manual de corpus
El primer paso consiste en seleccionar los documentos que van a servir de base al corpus y sobre los que se va a trabajar. Estos documentos pueden ser un conjunto concreto, por ejemplo, en el caso de los documentos internos que utilice una empresa como información para sus trabajadores o clientes, mientras que en otros casos el conjunto será una selección de documentos representativos de uno o varios ámbitos, si deseamos crear un corpus específico de algún dominio.
Una vez hecha la selección de estos documentos, comienza el trabajo sobre ellos. Los lingüistas tendrán que familiarizarse con las características de los documentos y el objetivo del corpus para poder elaborarlo de forma adecuada. En base al objetivo, se elaborará una guía metodológica y se redactarán preguntas siguiendo los criterios que se hayan incluido en la guía. Estos criterios, obviamente, dependen del tipo de tarea que nos ocupe, pero es recomendable fijarlos claramente para que el trabajo realizado por los lingüistas tenga uniformidad y se adapte al estándar de calidad necesario.
Pero, ¿cómo podemos garantizar que el corpus sea de alta calidad? Al elaborar cualquier corpus, es fundamental asegurarse de que este está equilibrado y resulta representativo. Por tanto, debemos prestar atención a ambos conceptos para asegurar la excelencia del corpus.
En primer lugar, el equilibro de un corpus lo conseguiremos si las preguntas son suficientemente variadas, tanto en temáticas dentro de los documentos como en el tipo de respuesta que se espera (desarrollo largo, dato concreto, explicación de proceso o instrucciones, etc.). Si partimos de un conjunto concreto de documentos, deberían repartirse para cubrir en la medida de lo posible la totalidad del contenido de todos los documentos.
Un corpus en el que la mayoría de preguntas se centran en un número reducido de documentos o en un mismo tema de ellos no estaría equilibrado. Por el contrario, si las preguntas cubren adecuada y proporcionalmente el contenido de todos los documentos y se responden con distintos tipos de información, seguramente nos encontraremos ante un corpus equilibrado.
En segundo lugar, aunque existen varias maneras de entender la representatividad del corpus, en el tipo de corpus que estamos tratando, se consigue fundamentalmente prestando especial atención al tipo de preguntas que se incluyen y su redacción. El objetivo es que sean preguntas verosímiles, idénticas a las que podría hacer un usuario medio del sistema de RAG, para conseguir que una población grande de usuarios esté representada. Para ello, los lingüistas estudian cuidadosamente el caso concreto del que se ocupa el corpus y plasman los criterios acordados en la guía metodológica, puesto que de poco serviría elaborar un corpus en el que las preguntas no coincidan con las que harán los usuarios del sistema, o que no sean naturales.
Consejos para realizar preguntas para el corpus
Estos son algunos consejos para la redacción de las preguntas de un corpus representativo y equilibrado:
- Variedad lingüística en la redacción de preguntas
- Ampliar la diversidad de las preguntas
Variedad lingüística en la redacción de preguntas
Se recomienda que exista la mayor variedad lingüística posible en su redacción, tanto en ortografía (se pueden incluir erratas), como en nivel de cortesía (formal, informal, coloquial, etc.), vocabulario, estructura sintáctica (alternar frases simples y breves con otras complejas que pueden ser largas), tono, concreción (mayor o menor ambigüedad), tipo de respuesta que se requiere (preguntas que se contesten con un dato y otras que necesiten una explicación más elaborada, incluso preguntas cuya respuesta no esté en los documentos), etc.
Ampliar la diversidad de las preguntas
Una técnica muy útil para ampliar la diversidad es redactar distintas variantes de cada pregunta. Por ejemplo, si estamos redactando una pregunta sobre los horarios de una tienda, sería bueno incluir un número de variantes que cubran los posibles escenarios desde el más sintético («horarios de tienda c/ Paz«) hasta el más complejo o conversacional («hola, buenas, me gustaría saber cuándo abre la tienda de la calle Paz, gracias!!«). Dado que la respuesta puede ser la misma en ambos casos, no es necesario modificarla.
Respuestas para el corpus, contextos y revisión
Mientras que, como hemos visto, las preguntas se redactan intentando reflejar la mayor variedad posible, las respuestas deben ser siempre correctas, y mantener el mismo tono educado independientemente de la pregunta a la que respondan. Deben contener información precisa y exacta, y responder a la pregunta de forma totalmente coherente. En caso de que se incluyan preguntas cuya respuesta no esté en los documentos, esto se reflejará con una respuesta que lo explique, como por ejemplo «Lo siento, pero no hay información relevante a tu pregunta en los documentos de los que dispongo». De este modo nos aseguramos de que no se producen alucinaciones y en estos casos no se crean respuestas inventadas.
Por último, se recopilan los contextos pertinentes que recojan la información necesaria para responder a cada pregunta. En este punto hay que revisar de forma exhaustiva que no obviamos ningún dato relevante y a la vez que no estamos incluyendo información superflua que no contribuya a la respuesta. Es necesario matizar que no todos los contextos provendrán de un solo documento, y es por este motivo que el primer paso que hemos señalado es familiarizarse con el conjunto de documentos.
Si se estima necesario, establecer una revisión por pares es una buena práctica que ayuda a mejorar el resultado del corpus. De este modo, cada lingüista revisa que las preguntas, respuestas y contextos elaborados por otra persona se adecúen a los criterios descritos en la metodología. Así, se reduce enormemente la posibilidad de errores humanos y no solo se obtiene un corpus de mejor calidad, sino que se eliminan posibles sesgos personales.
Generación automática del corpus
Si optamos por una técnica de generación automática del corpus empleando modelos de IA generativa, la selección de los documentos se realizará de igual forma que en el caso anterior, pero los pasos posteriores difieren ya que tanto las preguntas como las respuestas y la búsqueda de contextos los llevará a cabo un modelo generativo. Para conseguir un resultado óptimo, es sumamente importante que además de seleccionar un modelo suficientemente potente, empleemos un prompt completo que guíe al modelo en los pasos de la tarea que debe realizar.
El área de prompt engineering es compleja y debe realizarse un prompt con cuidado, pero a modo de orientación general podemos ofrecer las siguientes indicaciones. El prompt debe destacar y explicar la tarea a realizar por el modelo de forma clara y precisa. Para ello, es recomendable listar los pasos que debe tomar y aportar ejemplos suficientes para que la tarea pueda entenderse por completo. Asimismo, las instrucciones deben ser inequívocas y concisas para facilitar el buen cumplimiento de la tarea (se recomienda evitar las negaciones en las instrucciones siempre que sea posible, evitar las frases excesivamente largas o enrevesadas, etc.).
Puesto que ningún modelo generativo es infalible, se recomienda encarecidamente que el corpus generado pase por un proceso de revisión humana. Es imprescindible que un equipo de lingüistas computacionales se cerciore de la adecuación de las preguntas y respuestas generadas, y comprueben que los contextos seleccionados son adecuados y precisos. En este punto de revisión se pueden reescribir o modificar algunas preguntas para aumentar la variedad en la expresión y dotar al corpus de mayor naturalidad.
Entre los principales problemas que se detectan habitualmente en el proceso de revisión humana destacan los siguientes:
- Alucinaciones del modelo, que inventa información que no aparece en los documentos.
- Estilo de redacción poco natural, especialmente cuando se quiere obtener un corpus verosímil que incluya erratas e incorrecciones comunes en los hablantes,
- Preguntas muy similares o repetitivas o preguntas centradas en una parte concreta de un documento en lugar de en su totalidad, lo que afecta al equilibro del corpus.
- Generación no deseada de respuestas para preguntas cuya respuesta no se encuentra en los documentos.
Una vez realizada la revisión, tendremos la certeza de que el corpus generado cuenta con la calidad suficiente para ser empleado en un proceso de evaluación.
Evaluación de un sistema RAG
Emplear corpus de calidad enfocados en sistemas de RAG es la mejor forma de comprobar que nuestro modelo produce los resultados que esperamos. Pero, ¿cómo se evalúa un sistema de RAG? Para que la evaluación sea completa, se puede seguir la denominada Tríada, que se centra en estos tres aspectos:
- Relevancia de la respuesta
- Relevancia del contexto
- Fundamentación de la respuesta en el contexto
Primero, el contexto o contextos que se hayan seleccionado deben ser relevantes para la pregunta planteada. No debería haber contextos no relacionados o improcedentes. Asimismo, la respuesta debe estar bien fundamentada en los contextos. Es decir, en la respuesta no puede haber datos incorrectos, contradictorios con el contexto o alucinados. Por último, evaluamos si la respuesta proporcionada por el modelo es relevante para la pregunta y la contesta adecuadamente.
Para entenderlo veamos un ejemplo muy sencillo., Imaginemos que estamos trabajando con documentos relacionados con los protocolos de actuación en una empresa.
Ante una pregunta relativa a cómo proceder en caso de que haya un incendio en las instalaciones, los contextos relevantes serían aquellos que contengan la información adecuada para responder. Si se recupera un contexto que explica cómo proceder en caso de haber sufrido acoso laboral, por ejemplo, obviamente no sería relevante. Si se recuperan contextos sobre cómo actuar en caso de un corte de electricidad, habría que valorar hasta qué punto pueden ser relevantes (si existe un protocolo común para emergencias de cualquier tipo, por ejemplo), o si se consideran no relevantes. Asimismo, la respuesta debe estar bien fundamentada en el contexto. Puesto que los modelos pueden inventar información que parezca verídica, es importante confirmar que la información que aporta realmente proviene de los contextos seleccionados, y no es un procedimiento estándar de actuación ante incendios, por ejemplo.
Por último, la respuesta que dé el modelo debe ser relevante. Ante la misma pregunta de antes, la respuesta tiene que contener la información correcta precisa y necesaria para saber cómo proceder en caso de incendio. Si contiene información incorrecta, o incluye datos innecesarios, será una respuesta no relevante.
Independientemente del enfoque y la técnica que se use en la elaboración del corpus, es imprescindible que se garantice la más alta calidad mediante una metodología detallada y revisiones rigurosas. Solo de este modo podremos estar seguros de que servirá para evaluar la eficacia de nuestro sistema de RAG con total confianza.