Diseño y desarrollo de una solución RAG

El patrón de generación aumentada por recuperación (RAG) es un enfoque estándar del sector para crear aplicaciones que usan modelos de lenguaje para procesar datos específicos o propietarios que el modelo aún no conoce. La arquitectura es sencilla, pero diseñar, experimentar y evaluar soluciones RAG que caben en esta arquitectura implican muchas consideraciones complejas que se benefician de un enfoque riguroso y científico.

Este artículo es la introducción de una serie. Cada artículo de la serie trata una fase específica en el diseño de soluciones RAG.

Los otros artículos de esta serie tratan las siguientes consideraciones:

  • Cómo determinar qué medios de prueba y consultas usar durante la evaluación
  • Cómo elegir una estrategia de fragmentación
  • Cómo determinar qué fragmentos debe enriquecer y cómo enriquecerlos
  • Cómo elegir el modelo de inserción adecuado
  • Configuración del índice de búsqueda
  • Cómo determinar qué búsquedas, como vector, texto completo, híbrido y varias búsquedas manuales, debe ejecutar
  • Evaluación de cada paso

Arquitectura RAG

Diagrama que muestra la arquitectura de alto nivel de una solución RAG, incluido el flujo de solicitudes y la canalización de datos.

Flujo de aplicaciones RAG

En el flujo de trabajo siguiente se describe un flujo de alto nivel para una aplicación RAG.

  1. El usuario emite una consulta en una interfaz de usuario de aplicación inteligente.
  2. La aplicación inteligente realiza una llamada API a un orquestador. Puede implementar el orquestador con herramientas o plataformas como Microsoft Agent Framework, Kernel semántico, servicio agente de Azure AI o LangChain.
  3. El orquestador determina qué búsqueda se va a ejecutar en Azure AI Search y emite la consulta.
  4. El orquestador empaqueta los principales N resultados de la consulta. Empaqueta los principales resultados y la consulta como contexto dentro de un indicador y envía el aviso al modelo de lenguaje. El orquestador devuelve la respuesta a la aplicación inteligente para que el usuario lea.

Flujo de canalización de datos de RAG

En el flujo de trabajo siguiente se describe un flujo de alto nivel para una canalización de datos que proporciona datos de base para una aplicación RAG.

  1. Los documentos u otros medios se insertan o extraen en una canalización de datos.
  2. La canalización de datos procesa cada archivo multimedia individualmente mediante los pasos siguientes:
    1. Fragmentación: divide el archivo multimedia en partes semánticamente relevantes que idealmente tienen una sola idea o concepto.
    2. Enriquecer fragmentos: agrega campos de metadatos en función del contenido de los fragmentos que el proceso crea. La canalización de datos clasifica los metadatos en campos discretos, como título, resumen y palabras clave.
    3. Insertar fragmentos: usa un modelo de inserción para vectorizar el fragmento y cualquier otro campo de metadatos que se use para las búsquedas vectoriales.
    4. Conservar los fragmentos: almacena los fragmentos en el índice de búsqueda.

Consideraciones de diseño y evaluación de RAG

Debe tomar varias decisiones de implementación a medida que diseñe la solución RAG. En el diagrama siguiente se muestran algunas de las preguntas que debe formular al tomar esas decisiones.

Diagrama que muestra la arquitectura de alto nivel de una solución RAG, incluidas las preguntas que debe formular al diseñar la solución.

En la lista siguiente se proporciona una breve descripción de lo que debe hacer durante cada fase del desarrollo de soluciones RAG.

  • Durante la fase de preparación, debe:

    • Determine el dominio de la solución. Defina claramente los requisitos empresariales de la solución RAG.
    • Recopilar medios de prueba representativos. Recopile archivos multimedia de prueba para la solución RAG que sean representativas de la colección general.
    • Reúne consultas de prueba. Recopile información y pruebe las consultas y genere consultas sintéticas y consultas que los archivos multimedia no cubran.
  • Durante la fase de fragmentación, debe:

    • Comprender la economía de la segmentación. Comprenda qué factores se deben tener en cuenta a medida que evalúe el costo general de la solución de fragmentación de la colección de medios.
    • Realizar análisis multimedia. Realice las siguientes preguntas para ayudarle a tomar decisiones al analizar un tipo de archivo multimedia:
      • ¿Qué contenido del archivo multimedia desea omitir o excluir?
      • ¿Qué contenido desea capturar en fragmentos?
      • ¿Cómo desea fragmentar ese contenido?
    • Comprender los enfoques de segmentación. Comprenda los distintos enfoques para la fragmentación, incluidos los enfoques personalizados, de tamaño fijo y basado en oraciones, o mediante el aumento del modelo de lenguaje, el análisis de diseño de documentos y los modelos de aprendizaje automático.
    • Comprender cómo afecta la estructura de archivos a la fragmentación. Elija un enfoque de fragmentación basado en el grado de estructura que tiene el archivo multimedia.
  • Durante la fase de enriquecimiento de los fragmentos, debe:

    • Limpiar fragmentos. Implemente enfoques de limpieza para eliminar las diferencias que no afectan al significado del contenido. Este método admite coincidencias de proximidad.
    • Aumentar fragmentos. Considere la posibilidad de aumentar los datos de fragmentos con campos de metadatos comunes y comprender sus posibles usos en la búsqueda. Obtenga información sobre las herramientas o técnicas más usadas para generar contenido de metadatos.
  • Durante la fase de inserción, debe:

    • Comprenda la importancia del modelo de inserción. Un modelo de inserción puede afectar significativamente a la relevancia de los resultados de búsqueda vectorial.
    • Elija el modelo de inserción adecuado para su caso de uso.
    • Evaluar modelos de inserción. Evalúe los modelos de inserción mediante la visualización de incrustaciones y el cálculo de las distancias de inserción.
  • Durante la fase de recuperación de información, debe:

    • Cree un índice de búsqueda. Aplique las configuraciones de búsqueda vectorial adecuadas a los campos vectoriales.
    • Descripción de las opciones de búsqueda. Tenga en cuenta los diferentes tipos de búsquedas, como vector, texto completo, híbrido y varias búsquedas manuales. Obtenga información sobre cómo dividir una consulta en subconsultas y filtrar consultas.
    • Evaluar búsquedas. Use métodos de evaluación de recuperación para evaluar la solución de búsqueda.
  • Durante la fase de evaluación de extremo a extremo del modelo de lenguaje, debe:

    • Descripción de las métricas de evaluación del modelo de lenguaje. Hay varias métricas, como la base, la integridad, el uso y la relevancia, que puede usar para evaluar la respuesta del modelo de lenguaje.
    • Comprenda las métricas de similitud y evaluación. Puede usar métricas de similitud y evaluación para evaluar la solución RAG.
    • Comprenda la importancia de la documentación, los informes y la agregación. Documente los hiperparámetros y los resultados de la evaluación. Agregue los resultados de varias consultas y visualice los resultados.
    • Use el acelerador de experimentos RAG. Use el repositorio de GitHub del acelerador de experimentos rag para ayudar a su equipo 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 seguir un proceso de evaluación estructurado para la solución RAG. Evalúe los resultados de cada paso y realice cambios en función de sus requisitos. Debe evaluar cada paso de forma independiente para la optimización, pero recuerde que el resultado final es lo que experimentan los clientes. Asegúrese de que comprende todos los pasos de este proceso antes de determinar sus propios criterios de aceptación para cada paso.

Colaboradores

Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.

Autores principales:

  • Raouf Aliouat | Ingeniero de software II
  • Rob Bagby | Desarrollador principal de contenido: patrones y prácticas de Azure
  • Prabal Deb | Ingeniero principal de software
  • Chad Kittel | Ingeniero principal de software: Patrones y prácticas de Azure
  • Ritesh Modi | Ingeniero principal
  • Ryan Pfalz | Jefe de programas técnicos sénior
  • Randy Thurman | Arquitecto principal de soluciones en la nube de IA

Para ver perfiles de LinkedIn no públicos, inicie sesión en LinkedIn.

Pasos siguientes