RAG: mejorando el funcionamiento de los grandes modelos de lenguaje
Aunque se hizo público a finales de 2022, este ha sido el año de su consagración, despertando gran interés por su potencial disruptor en multitud de sectores de negocio. Muchas empresas lo están incorporando para construir asistentes y para usarlo como base en proyectos de automatización con buenos resultados, pero también se están haciendo evidentes sus limitaciones, entre las que destaca la falta de contexto, es decir, cuando el modelo de lenguaje carece de la información necesaria para generar las respuestas que necesitamos.
Los grandes modelos de lenguaje (LLMs), como las distintas versiones de GPT que sirven de base a ChatGPT, tienen una capacidad sorprendente para generar texto estructurado y coherente, aunque también presentan importantes limitaciones, como la inconsistencia de las respuestas, los sesgos y las alucinaciones. Además, funcionan como cajas negras, de manera que el usuario no puede saber qué información ha usado el modelo para generar su respuesta.
Sin embargo, su principal limitación es que son modelos estáticos, por lo que fracasan estrepitosamente cuando hay una falta de contexto, una falta de información “nueva” o “fresca”. Los datos con los que ha sido entrenado ChatGPT llegan hasta principios de 2022, por lo que no tiene noticia de la invasión rusa de Ucrania, por ejemplo.
Se lleva ya algún tiempo estudiando formas de proporcionar nuevos contextos a un LLM, como emplear herramientas de búsqueda semántica usando bases de datos vectoriales, usar prompt engineering, o re-entrenar el LLM con la nueva información. Cada una de estas técnicas tiene sus propias ventajas e inconvenientes, por lo que cuando se aplican de manera independiente solo puede ser de utilidad en algún caso concreto. Sin embargo, se está trabajando para emplearlas conjuntamente, definiendo metodologías generales para sistematizar su combinación eficiente, lo que ha dado lugar al surgimiento del Retrieval Augmented Generation o RAG.
El RAG es por tanto la combinación de herramientas y de metodologías que permiten extraer información de una base de conocimientos externa y proporcionársela de una manera efectiva al LLM para mejorar la calidad de las respuestas que genera. Esta información externa puede ser de lo mas variada, desde datos históricos acontecidos recientemente, hasta datos de clientes y facturación de una empresa concreta, pasando por las publicaciones de los distintos boletines oficiales, o el catálogo de productos de una tienda on-line.
Esto aporta dos grandes ventajas: en primer lugar, permite que el modelo tenga acceso a la información más actual y fiable, y en segundo lugar que los usuarios tengan acceso a las fuentes de información del modelo, garantizando que se pueda comprobar la exactitud de sus afirmaciones y, en última instancia, que se pueda confiar en ellas. Además, de manera indirecta, se ha comprobado que el uso del RAG reduce la aparición de alucinaciones y sesgos, y en última instancia, permite evitar costosos re-entrenamientos del LLM, que consumen tanto tiempo como energía y recursos de cómputo.
El RAG tiene dos fases claramente diferenciadas: la de recuperación de información y la de generación de contenido. En la fase de recuperación, un algoritmo de búsqueda semántica (que suele estar íntimamente emparentado con el propio LLM) se encarga de rastrear una colección de documentos, que puede ser abierta (todo internet) o cerrada (la documentación propia de una empresa), localizando los fragmentos de texto más relevantes a la cuestión planteada por el usuario. Esta selección de textos relevantes se anexa luego adecuadamente al texto de entrada del usuario (el prompt) y se traslada al LLM, que genera una respuesta adaptada basándose en ese mensaje “aumentado” combinado con los propios “conocimientos” del modelo.
Existen varias opciones tanto comerciales como de código libre para implementar RAG, como LangChain, LlamaIndex o HayStack, que permiten crear un LLM con datos propios por una fracción del coste de entrenarlo desde cero (que en el caso de ChatGPT se estima en unos 100 millones de dólares), y con una dificultad técnica mucho menor, ya que se usan herramientas accesibles a cualquier empresa. Y hace apenas unos días, OpenAI (los creadores de ChatGPT) ha anunciado los GPTs, que básicamente son versiones de ChatGPT específicas, entrenadas con nuestros propios datos y ajustados a nuestros propios fines. Los GPTs pretenden simplificar y automatizar todo el proceso del RAG, permitiendo realizarlo a golpe de ratón, sin casi necesidad de emplear código, y por tanto sin requerir conocimientos específicos de desarrollo de software.
Como se ve, el mundo de la IA generativa de texto está en pleno desarrollo, y constantemente (casi cada mes) se producen avances disruptivos que abren nuevas posibilidades de negocio.
Además, existe una marcada tendencia hacia la democratización de estos avances, simplificando la implementación de sus servicios y ampliando el espectro de potenciales clientes. Está aún por ver cómo responden las empresas a esta evolución del mercado tecnológico, y qué papel jugarán a medio y largo plazo los proveedores de servicios tecnológicos, sea cual sea su tamaño, que tendrán que adaptarse en tiempo record a esta nueva situación. Y también está por ver cuál será la reacción de los grandes proveedores de servicios de computación en la nube, como Google o Amazon, que están aún expectantes ante los movimientos de OpenAI (apoyada por Microsoft), que está posicionada como líder indiscutible del sector y que sigue intentando copar todo el mercado.