Generación mejorada por recuperación (RAG) es el patrón preferido por nuestros equipos para mejorar la calidad de las respuestas generadas por un modelo de lenguaje de gran tamaño (LLM). Lo hemos utilizado con éxito en muchos proyectos, incluyendo la plataforma de IA Jugalbandi. Con RAG, la información sobre documentos relevantes y confiables se almacena en una base de datos. Para un prompt dado, se consulta la base de datos, se recuperan los documentos relevantes y se amplía el prompt con el contenido de los documentos, proporcionando así un contexto más completo al LLM. Esto resulta en una salida de mayor calidad y reduce considerablemente las alucinaciones. La ventana de contexto —que determina el tamaño máximo de la entrada del LLM— ha crecido significativamente con los modelos más nuevos, pero seleccionar los documentos más relevantes sigue siendo un paso crucial. Nuestra experiencia indica que un contexto más pequeño y cuidadosamente construido puede generar mejores resultados que un contexto amplio y grande. Utilizar un contexto grande también es más lento y costoso. Antes dependíamos únicamente de incrustaciones almacenadas en una base de datos vectorial para identificar el contexto adicional. Ahora estamos viendo re-ranking y búsqueda híbrida: herramientas de búsqueda como Elasticsearch Relevance Engine, así también enfoques como GraphRAG que utilizan grafos de conocimiento creados con la ayuda de un LLM. El enfoque basado en grafos ha funcionado particularmente bien en nuestro trabajo sobre la comprensión de bases de código heredado con GenAI.
Generación mejorada por recuperación (RAG por sus siglas en inglés) es el patrón preferido por nuestros equipos para mejorar la calidad de las respuestas generadas por un modelo lingüístico grande (LLM por sus siglas en inglés). Lo hemos utilizado con éxito en varios proyectos, incluyendo el popular Jugalbandi AI Platform. Con RAG, la información sobre documentos relevantes y fiables -en formatos como HTML y PDF- se almacena en una base de datos que admita un tipo de datos vectorial o una búsqueda eficiente de documentos, como pgvector, Qdrant o Elasticsearch Relevance Engine. Para una consulta determinada, la base de datos se consulta para recuperar documentos relevantes, que luego se combinan con la consulta para proporcionar un contexto más enriquecido al LLM. De este modo se obtienen resultados de mayor calidad y se reducen considerablemente las alucinaciones. La ventana de contexto -que determina el tamaño máximo de entrada del LLM- es limitada, lo que significa que seleccionar los documentos más relevantes es crucial. Mejoramos la relevancia del contenido que se añade a la consulta mediante re-ranking. Del mismo modo, los documentos suelen ser demasiado grandes para calcular una incrustación, lo que significa que deben dividirse en fragmentos más pequeños. Suele ser un problema difícil, y una solución es que los fragmentos se solapen hasta cierto punto.
Retrieval-Augmented Generation (RAG) es una técnica que combina memoria paramétrica y no-paramétrica, previamente entrenadas, para la generación de lenguaje. Nos permite tomar el conocimiento que poseen los LLMs pre-entrenados y aumentarlo con el conocimiento privado y contextual de nuestro dominio o industria. Con RAG, primero obtenemos un conjunto de documentos relevantes a partir de la memoria no-paramétrica (usualmente a través de una búsqueda similar en un almacenamiento de datos vectorial) para después usar la memoria paramétrica de los LLMs y generar una salida que es consistente con los documentos obtenidos inicialmente. Concluimos que RAG es una técnica efectiva para una variedad de tareas que requieren un intenso conocimiento sobre procesamiento de lenguaje natural – incluyendo responder preguntas, resumir y generar historias.