El patrón de generación aumentada de recuperación (RAG) es un enfoque estándar del sector para crear aplicaciones que usan modelos de lenguaje de gran tamaño para razonar sobre datos específicos o propietarios que aún no se conocen en el modelo de lenguaje de gran tamaño. Aunque la arquitectura es sencilla, diseñar, experimentar y evaluar soluciones de RAG que encajen en esta arquitectura implica muchas consideraciones complejas que se benefician de un enfoque riguroso y científico.
Esta guía se presenta como una serie. Cada artículo de la serie trata una fase específica en el diseño de soluciones RAG.
Entre estas consideraciones se incluyen los artículos de esta guía:
- Determinación de qué documentos y consultas de prueba se van a usar durante la evaluación
- Elección de una estrategia de fragmentación
- Determinación de qué y cómo se deben enriquecer los fragmentos
- Elección del modelo de inserción adecuado
- Determinación de cómo configurar el índice de búsqueda
- Determinación de las búsquedas que desea realizar: vectoriales, de texto completo, híbridas o varias manuales
- Evaluación de cada paso
Los artículos de esta guía abordan todas esas consideraciones.
Arquitectura de RAG
Figura 1. Arquitectura general de RAG
Flujo de la aplicación RAG
A continuación se muestra un flujo general para una aplicación de RAG.
- El usuario emite una consulta en una interfaz de usuario de aplicación inteligente.
- La aplicación inteligente realiza una llamada de API a un orquestador. El orquestador se puede implementar con herramientas o plataformas como Kernel semántico, flujo de avisos de Azure Machine Learning o LangChain.
- El orquestador determina qué búsqueda realizar en Búsqueda de Azure AI y emite la consulta.
- El orquestador empaqueta los principales N resultados de la consulta, los empaqueta como contexto dentro de un mensaje, junto con la consulta, y envía el mensaje al modelo de lenguaje de gran tamaño. El orquestador devuelve la respuesta a la aplicación inteligente para que el usuario la lea.
Flujo de canalización de datos de RAG
A continuación se muestra un flujo general para una canalización de datos que proporciona datos de base para una aplicación de RAG.
Los documentos se insertan o extraen en una canalización de datos.
La canalización de datos procesa cada documento individualmente con los pasos siguientes:
- Fragmentar el documento: divide el documento en partes semánticamente relevantes que, idealmente, tengan una sola idea o concepto.
- Enriquecer los fragmentos: agrega campos de metadatos creados a partir del contenido de los fragmentos a campos discretos, como título, resumen y palabras clave.
- Insertar los fragmentos: usa un modelo de inserción para vectorizar el fragmento y cualquier otro campo de metadatos que se use para los vectores de búsqueda.
- Conservar los fragmentos: almacena los fragmentos en el índice de búsqueda.
Consideraciones de diseño y evaluación de RAG
Hay una variedad de decisiones de implementación que debe tomar al diseñar la solución de RAG. En la ilustración siguiente se muestran algunas de esas decisiones.
Ilustración 2. Preguntas que surgen al diseñar una solución de RAG
La serie de artículos de esta guía aborda esas consideraciones y mucho más.
- Determinar el dominio de la solución: describe la importancia de definir claramente los requisitos empresariales de la solución de RAG.
- Recopilar documentos de prueba representativos: describe consideraciones e instrucciones sobre la recopilación de documentos de prueba para la solución de RAG que son representativos del corpus.
- Recopilar consultas de prueba: describe qué información debe recopilar junto con las consultas de prueba, proporciona instrucciones sobre la generación de consultas sintéticas y consultas que los documentos no cubren.
- Descripción de la economía de fragmentación: describe los factores que se deben tener en cuenta al examinar el coste general de la solución de fragmentación para el corpus de texto.
- Realizar análisis de documentos: proporciona una lista de preguntas que puede formular al analizar un tipo de documento y que le ayudan a determinar qué elementos del documento desea ignorar o excluir, qué desea capturar en fragmentos y cómo desea hacerlo.
- Descripción de los enfoques de fragmentación: describe los diferentes enfoques para fragmentar, como el tamaño fijo, personalizado, el aumento de modelos de lenguaje de gran tamaño, el análisis de diseño de documentos, el uso de modelos de aprendizaje automático
- Comprender cómo afecta la estructura del documento a la fragmentación: describe cómo el grado de estructura de un documento influye en su elección para un enfoque de fragmentación.
Fase de enriquecimiento de fragmentos
- Limpiar los fragmentos: describe los diferentes enfoques de limpieza que puede implementar para admitir coincidencias de proximidad eliminando posibles diferencias que no son materiales para la semántica del texto.
- Aumentar los fragmentos: describe algunos campos de metadatos comunes con los que debería considerar aumentar los datos de fragmentos junto con algunas instrucciones sobre sus posibles usos en la búsqueda y herramientas o técnicas que se usan habitualmente para generar el contenido de metadatos.
- Comprender la importancia del modelo de inserción: describe cómo un modelo de inserción puede tener un efecto significativo en la relevancia de los resultados del vector de búsqueda.
- Elección de un modelo de inserción: proporciona instrucciones sobre cómo elegir un modelo de inserción
- Evaluar modelos de inserción: describe dos medios para evaluar un modelo de inserción: visualización de inserciones y cálculo de distancias de inserción
Fase de recuperación de información
- Crear índice de búsqueda: describe algunas decisiones clave que debe tomar para la configuración del vector de búsqueda que se aplica a los campos vectoriales
- Descripción de las opciones de búsqueda: proporciona información general sobre los tipos de búsqueda que puede considerar, como vectoriales, texto completo, híbrida y múltiple manual. Proporciona instrucciones sobre cómo dividir una consulta en subconsultas, filtrar consultas
- Evaluar búsquedas: proporciona instrucciones sobre cómo evaluar la solución de búsqueda
Fase de evaluación de un extremo a otro del modelo de lenguaje de gran tamaño
- Descripción de las métricas de evaluación de modelos de lenguaje de gran tamaño: proporciona información general de varias métricas que puede usar para evaluar la respuesta de los modelos de lenguaje de gran tamaño, incluida la solidez, la integridad, el uso y la relevancia.
- Descripción de las métricas de similitud y evaluación: proporciona una pequeña lista de métricas de similitud y evaluación que puede usar al evaluar la solución de RAG.
- Descripción de la importancia de la documentación, los informes y la agregación: describe la importancia de documentar los hiperparámetros junto con los resultados de la evaluación, la agregación de resultados de varias consultas y la visualización de los resultados.
- El Acelerador de experimentos rag: aborda cómo se puede usar el repositorio de GitHub del acelerador de experimentos rag para ayudar a los equipos a encontrar las mejores estrategias para la implementación de RAG mediante la ejecución de varios experimentos, la conservación y la evaluación de los resultados.
Enfoque estructurado
Debido al número de pasos y variables, es importante diseñar la solución RAG a través de un proceso de evaluación estructurado. Evalúe los resultados de cada paso y adapte, según sus requisitos. Aunque debe evaluar cada paso de forma independiente para la optimización, el resultado final es lo que los usuarios experimentarán. Asegúrese de comprender todos los pasos de este proceso antes de determinar sus propios criterios de aceptación para cada paso individual.