Compartir a través de


Aumento de modelos de lenguaje de gran tamaño con la generación aumentada de recuperación o ajuste

En una serie de artículos, se describen los mecanismos de recuperación de conocimiento que usan los modelos de lenguaje grandes (LLM) para generar respuestas. De forma predeterminada, un LLM solo tiene acceso a sus datos de entrenamiento. Pero puede aumentar el modelo para incluir datos en tiempo real o datos privados.

El primer mecanismo es la generación aumentada de recuperación (RAG). RAG es una forma de preprocesamiento que combina la búsqueda semántica con priming contextual. La preparación contextual se describe con detalle en Conceptos clave y consideraciones para crear soluciones de IA generativa.

El segundo mecanismo es el ajuste. En el ajuste, un LLM se entrena aún más con un conjunto de datos específico después de su entrenamiento amplio inicial. El objetivo es adaptar el LLM para mejorar las tareas o comprender los conceptos relacionados con el conjunto de datos. Este proceso ayuda al modelo a especializarse o mejorar su precisión y eficiencia en el control de tipos específicos de entrada o dominios.

En las secciones siguientes se describen estos dos mecanismos con más detalle.

Descripción de RAG

Se suele usar RAG para habilitar el escenario de "chat sobre mis datos". En este escenario, una organización tiene un corpus potencialmente grande de contenido textual, como documentos, documentación y otros datos propietarios. Usa este corpus como base para las respuestas a las solicitudes del usuario.

En un nivel alto, se crea una entrada de base de datos para cada documento o para una parte de un documento denominado fragmento de . El fragmento se indexa en su incrustación, es decir, un vector (matriz) de números que representan aspectos del documento. Cuando un usuario envía una consulta, busca en la base de datos documentos similares y, a continuación, envía la consulta y los documentos al LLM para redactar una respuesta.

Nota:

Usamos el término generación aumentada de recuperación (RAG) de manera flexible. El proceso de implementación de un sistema de chat basado en RAG como se describe en este artículo se puede aplicar si desea usar datos externos en una capacidad de apoyo (RAG) o como pieza central de la respuesta (RCG). La distinción matizada no se aborda en la mayoría de los textos relacionados con RAG.

Creación de un índice de documentos vectorizados

El primer paso para crear un sistema de chat basado en RAG es crear un almacén de datos vectoriales que contenga la inserción de vectores del documento o fragmento. Considere el siguiente diagrama, que describe los pasos básicos para crear un índice vectorizado de documentos.

Diagrama que muestra las distintas fases de la ingesta de documentos en un sistema de chat basado en RAG.

El diagrama representa una canalización de datos . La canalización es responsable de la ingesta, el procesamiento y la administración de los datos que usa el sistema. La canalización incluye el preprocesamiento de los datos que se van a almacenar en la base de datos vectorial y garantiza que los datos que se introducen en el LLM tienen el formato correcto.

Todo el proceso se basa en la noción de inserción, que es una representación numérica de datos (normalmente palabras, frases, oraciones o documentos completos) que captura las propiedades semánticas de la entrada de una manera que los modelos de aprendizaje automático pueden procesar.

Para crear una inserción, envíe el fragmento de contenido (oraciones, párrafos o documentos completos) a la API de incrustaciones de Azure OpenAI. La API devuelve un vector. Cada valor del vector representa una característica (dimensión) del contenido. Las dimensiones pueden incluir materia temática, significado semántico, sintaxis y gramática, uso de palabras y frases, relaciones contextuales, estilo o tono. Juntos, todos los valores del vector representan el espacio dimensional del contenido. Si piensa en una representación 3D de un vector que tiene tres valores, un vector específico se encuentra en un área específica del plano del plano XYZ. ¿Qué ocurre si tiene 1000 valores o incluso más? Aunque no es posible que los seres humanos dibujen un gráfico de 1000 dimensiones en una hoja de papel para que sea más comprensible, los equipos no tienen problemas para entender ese grado de espacio dimensional.

El siguiente paso del diagrama muestra el almacenamiento del vector y el contenido (o un puntero a la ubicación del contenido) y otros metadatos de una base de datos vectorial. Una base de datos vectorial es como cualquier tipo de base de datos, pero con dos diferencias:

  • Las bases de datos vectoriales usan un vector como índice para buscar datos.
  • Las bases de datos vectoriales implementan un algoritmo denominado búsqueda por similitud de coseno, también denominado vecino más próximo. El algoritmo usa vectores que coinciden más estrechamente con los criterios de búsqueda.

Con el corpus de documentos almacenados en una base de datos vectorial, los desarrolladores pueden crear un componente de recuperador para recuperar documentos que coincidan con la consulta del usuario. Los datos se usan para proporcionar el LLM con lo que necesita para responder a la consulta del usuario.

Responder consultas utilizando tus documentos

Un sistema RAG usa primero la búsqueda semántica para buscar artículos que podrían resultar útiles para el LLM cuando redacta una respuesta. El siguiente paso es enviar los artículos coincidentes con el mensaje original del usuario al LLM para redactar una respuesta.

Considere el siguiente diagrama como una implementación de RAG simple (a veces denominada RAG simple):

Diagrama que muestra un flujo RAG simple.

En el diagrama, un usuario envía una consulta. El primer paso consiste en crear una inserción para que el mensaje del usuario devuelva un vector. El siguiente paso consiste en buscar en la base de datos vectorial aquellos documentos (o partes de documentos) que sean los más similares.

La similitud de coseno es una medida que ayuda a determinar la similitud entre dos vectores. Básicamente, la métrica evalúa el coseno del ángulo entre ellos. Una similitud de coseno cercana a 1 indica un alto grado de similitud (un ángulo pequeño). Una similitud cerca de -1 indica disimilaridad (un ángulo de casi 180 grados). Esta métrica es fundamental para tareas como la similitud de documentos, donde el objetivo es buscar documentos que tengan contenido o significado similares.

Algoritmos de vecinos más cercanos funcionan encontrando los vectores más cercanos (vecinos) para un punto en el espacio vectorial. En el algoritmo de k vecinos más próximos (KNN), k hace referencia al número de vecinos más cercanos que se deben tener en cuenta. Este enfoque se usa ampliamente en clasificación y regresión, donde el algoritmo predice la etiqueta de un nuevo punto de datos en función de la etiqueta mayoritaria de sus k vecinos más cercanos del conjunto de entrenamiento. La similitud knN y coseno se suelen usar conjuntamente en sistemas como motores de recomendación, donde el objetivo es buscar elementos más similares a las preferencias de un usuario, representados como vectores en el espacio de inserción.

Toma los mejores resultados de esa búsqueda y envía el contenido coincidente junto con el mensaje del usuario para generar una respuesta que, con suerte, estará informada por el contenido coincidente.

Desafíos y consideraciones

Un sistema RAG tiene su conjunto de desafíos de implementación. La privacidad de los datos es fundamental. El sistema debe controlar los datos de usuario de forma responsable, especialmente cuando recupera y procesa información de orígenes externos. Los requisitos computacionales también pueden ser significativos. Tanto el proceso de recuperación como los procesos generativos consumen muchos recursos. Garantizar la precisión y relevancia de las respuestas al administrar sesgos en los datos o el modelo es otra consideración fundamental. Los desarrolladores deben navegar por estos desafíos cuidadosamente para crear sistemas RAG eficaces, éticos y valiosos.

Crear sistemas avanzados de generación aumentada mediante recuperación proporciona más información sobre la creación de pipelines de datos e inferencia para habilitar un sistema RAG listo para producción.

Si desea empezar a experimentar con la creación de una solución de IA generativa inmediatamente, se recomienda echar un vistazo a Introducción al chat con su propio ejemplo de datos para Python. El tutorial también está disponible para .NET, Javay javaScript.

Ajuste de un modelo

En el contexto de un LLM, el ajuste preciso es el proceso de ajustar los parámetros del modelo mediante el entrenamiento en un conjunto de datos específico del dominio después de que el LLM se entrene inicialmente en un conjunto de datos grande y diverso.

Las LLM se entrenan (previamente entrenadas) en un amplio conjunto de datos, captando la estructura del lenguaje, el contexto y una amplia gama de conocimientos. Esta fase implica aprender patrones de lenguaje generales. El ajuste preciso agrega más entrenamiento al modelo entrenado previamente en función de un conjunto de datos más pequeño y específico. Esta fase de entrenamiento secundaria tiene como objetivo adaptar el modelo para que funcione mejor en tareas concretas o comprender dominios específicos, mejorando su precisión y relevancia para esas aplicaciones especializadas. Durante el ajuste preciso, los pesos del modelo se ajustan para predecir o comprender mejor los matices de este conjunto de datos más pequeño.

Algunas consideraciones:

  • Especialización: ajuste adecuado adapta el modelo a tareas específicas, como análisis de documentos legales, interpretación de texto médico o interacciones de servicio al cliente. Esta especialización hace que el modelo sea más eficaz en esas áreas.
  • eficiencia: es más eficaz ajustar un modelo entrenado previamente para una tarea específica que entrenar un modelo desde cero. El ajuste preciso requiere menos datos y menos recursos computacionales.
  • Capacidad de adaptación: El ajuste fino permite la adaptación a nuevas tareas o dominios que no formaban parte de los datos de entrenamiento originales. La capacidad de adaptación de los LLM hace que sean herramientas versátiles para diversas aplicaciones.
  • rendimiento mejorado: para las tareas que son diferentes de los datos en los que se entrenó originalmente el modelo, el ajuste fino puede dar lugar a un mejor rendimiento. El ajuste adapta el modelo para comprender el lenguaje, el estilo o la terminología específicos que se utilizan en el nuevo dominio.
  • Personalización: en algunas aplicaciones, el ajuste fino puede ayudar a personalizar las respuestas o predicciones del modelo para adaptarse a las necesidades o preferencias específicas de un usuario u organización. Sin embargo, el ajuste preciso tiene desventajas y limitaciones específicas. Comprender estos factores puede ayudarle a decidir cuándo optar por ajustar frente a alternativas como RAG.
  • requisito de datos: el ajuste preciso requiere un conjunto de datos suficientemente grande y de alta calidad que sea específico de la tarea o dominio de destino. La recopilación y la selección de este conjunto de datos pueden ser complicadas y intensivas en los recursos.
  • riesgo de sobreajuste: el sobreajuste es un riesgo, especialmente con un conjunto de datos pequeño. El sobreajuste hace que el modelo funcione bien en los datos de entrenamiento, pero poco en los datos nuevos y no vistos. La generalización se reduce cuando se produce un sobreajuste.
  • costo y recursos: aunque menos recursos intensivos que el entrenamiento desde cero, el ajuste preciso todavía requiere recursos computacionales, especialmente para grandes modelos y conjuntos de datos. El costo puede ser prohibitivo para algunos usuarios o proyectos.
  • Mantenimiento y actualización de: los modelos optimizados podrían necesitar actualizaciones periódicas para seguir siendo eficaces a medida que la información específica del dominio cambia con el tiempo. Este mantenimiento continuo requiere recursos y datos adicionales.
  • Desfase del modelo: dado que el modelo está ajustado para tareas específicas, podría perder parte de su reconocimiento del lenguaje y versatilidad. Este fenómeno se denomina desfase del modelo.

Personalizar un modelo mediante el ajuste preciso explica cómo ajustar un modelo. En un nivel alto, se proporciona un conjunto de datos JSON de posibles preguntas y respuestas preferidas. La documentación sugiere que hay mejoras notables al proporcionar pares de preguntas y respuestas de 50 a 100, pero el número correcto varía considerablemente en el caso de uso.

Optimización vs. RAG

A primera vista, podría parecer que hay bastante solapamiento entre ajuste y RAG. Elegir entre ajuste y generación aumentada por recuperación depende de los requisitos específicos de la tarea, incluidas las expectativas de rendimiento, la disponibilidad de los recursos y la necesidad de una especificidad del dominio frente a la generalización.

Cuándo usar ajuste en lugar de RAG:

  • rendimiento específico de la tarea: es preferible ajustar correctamente cuando el alto rendimiento de una tarea específica es crítico y existen datos suficientes específicos del dominio para entrenar el modelo de forma eficaz sin riesgos de sobreajuste significativos.
  • Control sobre los datos: si tiene datos propietarios o altamente especializados que difieren significativamente de los datos en los que se entrenó el modelo base, el ajuste preciso le permite incorporar este conocimiento único en el modelo.
  • Necesidad limitada de actualizaciones en tiempo real: si la tarea no requiere que el modelo se actualice constantemente con la información más reciente, el ajuste puede ser más eficaz, ya que los modelos RAG suelen necesitar acceso a bases de datos externas actualizadas o a Internet para extraer datos recientes.

Cuándo se prefiere RAG frente a ajuste:

  • contenido dinámico o contenido en evolución: RAG es más adecuado para las tareas en las que es fundamental tener la información más actual. Dado que los modelos RAG pueden extraer datos de orígenes externos en tiempo real, son más adecuados para aplicaciones como la generación de noticias o la respuesta a preguntas sobre eventos recientes.
  • Generalización sobre la especialización: si el objetivo es mantener un rendimiento sólido en una amplia gama de temas en lugar de destacar en un dominio estrecho, RAG podría ser preferible. Usa bases de conocimiento externas, lo que le permite generar respuestas en diversos dominios sin el riesgo de sobreajustar a un conjunto de datos específico.
  • restricciones de recursos: en el caso de las organizaciones con recursos limitados para la recopilación de datos y el entrenamiento del modelo, el uso de un enfoque RAG podría ofrecer una alternativa rentable a la optimización, especialmente si el modelo base ya funciona razonablemente bien en las tareas deseadas.

Consideraciones finales para el diseño de aplicaciones

Esta es una breve lista de cosas que se deben tener en cuenta y otras conclusiones de este artículo que podrían influir en las decisiones de diseño de la aplicación:

  • Decida entre el ajuste fino y el método RAG según las necesidades específicas de su aplicación. El ajuste podría ofrecer un mejor rendimiento para tareas especializadas, mientras que RAG podría proporcionar flexibilidad y contenido actualizado para aplicaciones dinámicas.