En un ejercicio de dogfooding, le pregunté al GPT-4 modelo de lenguaje grande “¿Qué es la generación con recuperación aumentada?” utilizando su complemento Explorar, que es una implementación de generación de recuperación aumentada.
Esto es lo que finalmente me dijo GPT-4, después de que le pedí que regenerara su respuesta:
—————–
Recuperación-Generación Aumentada (RAG) es un marco de IA que tiene un impacto significativo en el campo del procesamiento del lenguaje natural (PLN). Está diseñado para mejorar la precisión y la riqueza del contenido producido por modelos de lenguaje. Aquí hay una síntesis de los puntos clave sobre RAG de varias fuentes:
– RAG es un sistema que recupera datos de una base de conocimiento externa para proporcionar la base para modelos de lenguaje grandes (LLM). Esta base garantiza que la información generada por los LLM se base en datos precisos y actuales, lo cual es particularmente importante dado que los LLM a veces pueden producir resultados inconsistentes【5†fuente】.
– El marco funciona como un modelo híbrido, integrando modelos generativos y de recuperación. Esta integración permite a RAG producir texto que no sólo es contextualmente preciso sino también rico en información. La capacidad de RAG para extraer información de extensas bases de datos le permite contribuir con contenido contextualmente relevante y detallado al proceso generativo【6†fuente】.
– RAG aborda una limitación de los modelos de lenguaje fundamentales, que generalmente se entrenan fuera de línea en corpus de dominio amplio y no se actualizan con nueva información después de la capacitación. Esto los hace menos efectivos para tareas que requieren conocimientos de un dominio específico. Por el contrario, RAG puede acceder a los datos más recientes, lo que lo hace más adaptable y capaz de funcionar bien en aplicaciones de dominios específicos【7†fuente】.
– En comparación con los modelos tradicionales de generación de texto, RAG ha demostrado ventajas notables y ha logrado un rendimiento de última generación en muchas tareas de PNL. Su capacidad para aumentar el proceso de generación con información recuperada lo convierte en una herramienta poderosa para crear texto informativo de alta calidad【8†fuente】.
Las capacidades combinadas de RAG para recuperar y generar texto lo convierten en una herramienta innovadora en PNL, que mejora la relevancia y la calidad del resultado de los modelos de lenguaje.
——————
Con la excepción de un par de puntos exagerados, esa es una respuesta decente. Omitió el hecho de que RAG se originó en Facebook (ahora Meta) AI Research.
He obtenido resultados bastante buenos al utilizar implementaciones RAG para casos en los que los LLM no mejorados carecen de información actual, y especialmente en los casos en los que el LLM base se descarrila y comienza a alucinar sus propios hechos. Por otro lado, he visto a LLM alucinar incluso cuando usaban RAG.
Usar fuentes externas de información (la parte de recuperación de RAG) no significa solo realizar una búsqueda en la web. También puede significar proporcionar sus propios documentos para que los use el LLM o señalar al LLM documentación web específica (no se requiere búsqueda adicional), por ejemplo, como lo describe mi colega de InfoWorld Sharon Machlis en Este artículo.
Los problemas: alucinaciones del LLM y contexto limitado
Los LLM a menudo requieren mucho tiempo y utilizan recursos costosos para capacitarse, a veces meses de tiempo de ejecución utilizando docenas de GPU de servidor de última generación, como NVIDIA H100. Mantener los LLM completamente actualizados mediante la recapacitación desde cero no es un comienzo, aunque el proceso menos costoso de ajustar el modelo base con datos más nuevos puede ayudar.
Sin embargo, el ajuste fino a veces tiene sus inconvenientes, ya que puede reducir la funcionalidad presente en el modelo base (como las consultas de propósito general que se manejan bien en Llama) al agregar nuevas funciones mediante ajustes (como codigo de GENERACION añadido a Code Llama).
¿Qué sucede si le pregunta a un LLM que se capacitó con datos que finalizaron en 2022 sobre algo que ocurrió en 2023? Dos posibilidades: se dará cuenta de que no lo sabe o no lo hará. Si es lo primero, normalmente le informará sobre sus datos de entrenamiento, por ejemplo, «En mi última actualización en enero de 2022, tenía información sobre…». Si es lo último, intentará darle una respuesta basada en datos más antiguos, similares pero irrelevantes, o podría inventar cosas (alucinar).
Para evitar desencadenar alucinaciones LLM, a veces es útil mencionar la fecha de un evento o una URL web relevante en el mensaje. También puede proporcionar un documento relevante, pero proporcionar documentos largos (ya sea proporcionando el texto o la URL) funciona solo hasta que se alcanza el límite de contexto del LLM y luego deja de leer. Por cierto, los límites de contexto difieren entre los modelos: dos modelos de Claude ofrecen una ventana de contexto de token de 100.000, lo que equivale a unas 75.000 palabras, que es mucho más alta que la mayoría de los otros LLM.
La solución: fundamentar el LLM con hechos
Como puede adivinar por el título y el comienzo de este artículo, una respuesta a ambos problemas es la generación de recuperación aumentada. En un nivel alto, RAG funciona combinando una búsqueda en Internet o en un documento con un modelo de lenguaje, de manera que se solucionen los problemas que se encontrarían al intentar realizar los dos pasos manualmente, por ejemplo, el problema de que el resultado de la búsqueda exceda el límite de contexto del modelo de lenguaje.
El primer paso en RAG es utilizar la consulta para una búsqueda en Internet, un documento o una base de datos, y vectorizar la información fuente en una forma densa de alta dimensión, generalmente generando un vector incrustado y almacenándolo en una base de datos vectorial. Esta es la fase de recuperación.
Luego puedes vectorizar la consulta en sí y usar FAISS u otra búsqueda de similitud, generalmente usando una métrica de coseno para la similitud, contra la base de datos de vectores, y utilícela para extraer las partes más relevantes (o los K elementos principales) de la información fuente y presentarlas al LLM junto con el texto de la consulta. Esta es la fase de aumento.
Finalmente, el LLM, a que se refiere el documento original de inteligencia artificial de Facebook como modelo seq2seq, genera una respuesta. Esta es la fase de generación.
Todo eso parece complicado, pero en realidad es tan poco como cinco líneas de Python si usas el Marco LangChain para orquestación:
from langchain.document_loaders import WebBaseLoader from langchain.indexes import VectorstoreIndexCreator loader = WebBaseLoader("https://www.promptingguide.ai/techniques/rag") index = VectorstoreIndexCreator().from_loaders([loader]) index.query("What is RAG?")
Por lo tanto, RAG aborda dos problemas con modelos de lenguaje grandes: conjuntos de capacitación obsoletos y documentos de referencia que exceden las ventanas de contexto de los LLM. Combinando la recuperación de información actual, la vectorización, el aumento de la información mediante la búsqueda de similitud de vectores y gramoGracias a la IA generativa, puede obtener resultados más actuales, más concisos y más fundamentados que si utilizara únicamente la búsqueda o la IA generativa.
Copyright © 2024 IDG Communications, Inc.