RagHack - Aplicación GenAI Fitness Advisor
Definición del problema:
Orientación de fitness personalizada : MyFitnessBuddy es una aplicación GenAI Fitness Advisor que proporciona rutinas de ejercicios personalizadas, planes de dieta y una calculadora de calorías de alimentos, abordando las limitaciones de las aplicaciones de fitness genéricas.
Generación aumentada de recuperación avanzada : aprovecha un enfoque híbrido que combina generación aumentada de recuperación (RAG) y generación aumentada de recuperación de gráficos (GRAG) para brindar respuestas precisas y contextuales a las consultas de los usuarios.
Mostrando innovación en RAGHack : Desarrollado para el hackathon RAGHack, MyFitnessBuddy demuestra el poder de las tecnologías RAG para crear soluciones de fitness atractivas y efectivas impulsadas por IA utilizando Azure AI y marcos populares.
Arquitectura e Implementación:
Descripción general de la arquitectura:
Fig.1 Arquitectura
MyFitnessBuddy utiliza una arquitectura híbrida que combina generación aumentada de recuperación (RAG) y generación aumentada de recuperación de gráficos (GRAG). Los datos se extraen mediante un script de Python y se ingieren en Azure Blob Storage para datos estructurados y en Azure Cosmos DB (Gremlin API) para datos no estructurados. Azure AI Search indexa los datos estructurados, mientras que la base de datos de gráficos administra relaciones complejas en los datos no estructurados. La aplicación utiliza Azure AI Studio y Prompt Flow para definir la lógica del chat y conectar fuentes de datos. El servidor de aplicaciones procesa las consultas de los usuarios y recupera información relevante de Azure AI Search y Cosmos DB, que luego se envía a Azure OpenAI Services (ChatGPT) para generar respuestas personalizadas. Este enfoque híbrido garantiza una orientación de fitness precisa, personalizada y adaptada al contexto para los usuarios.
Descripción general de la implementación:
Extracción e ingesta de datos:
Fig 2. Arquitectura de extracción de datos
- El proceso comienza con un script de Python que extrae datos estructurados y no estructurados de diversas fuentes. Luego, estos datos se incorporan a dos sistemas de almacenamiento diferentes:
- Azure Blob Storage: se utiliza para datos estructurados, que están fragmentados e indexados.
- Azure Cosmos DB (Gremlin API): se utiliza para datos no estructurados, ingeridos como GraphDoc para permitir la recuperación basada en gráficos.
Enfoque RAG híbrido:
Fig 3. Arquitectura RAG híbrida
- RAG (Generación Aumentada de Recuperación):
- Los datos estructurados ingeridos en Azure Blob Storage están conectados a Azure AI Search para su indexación y recuperación.
- Azure AI Studio facilita la fragmentación e indexación de datos, la definición de la lógica del chat y la generación de puntos de conexión mediante Azure Prompt Flow.
- Cuando se recibe una consulta de un usuario, Azure AI Search recupera información relevante de los datos indexados.
- Graph RAG (Generación aumentada de recuperación de gráficos):
- Azure Cosmos DB almacena los datos no estructurados en un formato de gráfico mediante la API Gremlin. Este enfoque permite que la aplicación comprenda relaciones complejas entre entidades como alimentos, ejercicios y métricas de salud del usuario.
- Graph RAG recupera conocimiento contextualmente relevante de Azure Cosmos DB, que luego se combina con datos estructurados para mejorar la generación de respuestas.
Fig 4. Ejemplo de cómo se almacenan los datos no estructurados como Graph en Azure CosmoDB (Gremlin API)
Estudio de IA de Azure:
Figura 5. Arquitectura de Azure AI Studio
Flujo rápido
Implementamos dos puntos finales mediante Azure Prompt Flow . Uno es un punto final de intención de reescritura y el otro es My Fitness Buddy . Estos puntos finales están diseñados para resolver dos casos de uso diferentes: uno se centra en optimizar la recuperación de documentos mediante la generación de consultas, mientras que el otro ofrece asesoramiento personalizado sobre fitness dentro de límites seguros predefinidos con la base de conocimientos de RAG.
1. Reescribir el punto final de intención
Propósito : este punto final fue diseñado para manejar una tarea específica: generar consultas de búsqueda basadas en la pregunta de un usuario y el historial de conversaciones anteriores. Al combinar la "pregunta del usuario actual" y el contexto anterior, el punto final genera una única consulta canónica que incluye todos los detalles necesarios, sin variantes. Esto se emplea para sistemas de recuperación de documentos, donde la generación de estas consultas precisas y la intención conducen a resultados más precisos.
Fig 6. Flujo del punto final de intención de reescritura
2. Punto final de My Fitness Buddy
Propósito : el segundo punto final es My Fitness Buddy que ofrece consejos personalizados de fitness, planes de entrenamiento y consejos de nutrición basados en las aportaciones del usuario. El asistente está programado para evitar consejos médicos y atenerse únicamente al conjunto de datos proporcionado para garantizar que todas las recomendaciones sean seguras, motivadoras y basadas en evidencia, y que la base de conocimientos se recupere para los fragmentos de documentos configurados como índices de búsqueda.
Fig 7. Flujo del punto final My Fitness Buddy
Flujo de aplicación:
- El usuario interactúa con la aplicación MyFitnessBuddy a través de una interfaz de chatbot basada en Python Streamlit.
- El servidor de aplicaciones procesa la consulta del usuario y la dirige al sistema de recuperación adecuado (Azure AI Search para datos estructurados o Azure Cosmos DB para datos no estructurados) según el tipo de consulta.
- La información relevante se recupera de la fuente de datos seleccionada y se envía a Azure OpenAI Services (ChatGPT) junto con un mensaje diseñado para generar una respuesta personalizada.
- La respuesta final, enriquecida con información contextualmente relevante, se devuelve al usuario a través de la aplicación Streamlit, que proporciona consejos y recomendaciones de fitness personalizados.
Figura 8. Aplicación
Fig 9. Herramienta de prueba para puntos finales
Tecnologías utilizadas:
- Almacenamiento y recuperación de datos: Azure Blob Storage, Azure Cosmos DB (Gremlin API), Azure AI Search.
- Modelos de lenguaje e inteligencia artificial: Azure OpenAI Services (ChatGPT).
- Procesamiento de datos y flujo lógico: Azure AI Studio, Azure Prompt Flow.
- Backend y servidor de aplicaciones: Python para extracción y preprocesamiento de datos, con múltiples puntos de integración para la ingesta y recuperación de datos.
Público objetivo:
- Entusiastas del fitness: personas apasionadas por el fitness y que buscan rutinas de ejercicios y planes de dieta personalizados para optimizar su viaje de fitness.
- Individuos preocupados por su salud: personas que priorizan un estilo de vida saludable y desean un fácil acceso a información nutricional precisa, seguimiento de calorías y consejos dietéticos personalizados.
- Principiantes en fitness: recién llegados que necesitan orientación para comenzar su viaje de fitness, incluidas rutinas de ejercicios básicas, recomendaciones dietéticas y respuestas a preguntas comunes relacionadas con el fitness.
- Profesionales ocupados: usuarios con tiempo limitado para la planificación del acondicionamiento físico que buscan un acceso conveniente y bajo demanda a orientación personalizada sobre el acondicionamiento físico y respuestas rápidas a consultas relacionadas con la salud.
- Individuos con objetivos de salud específicos: aquellos con objetivos de acondicionamiento físico o condiciones de salud únicos que requieren planes y consejos personalizados que consideren sus necesidades y preferencias específicas.
Conclusión y trabajos futuros:
Conclusión
MyFitnessBuddy demuestra el potencial de combinar técnicas avanzadas de IA como Recuperación-Generación Aumentada (RAG) y Recuperación de Gráficos-Generación Aumentada (GRAG) para crear un asesor de fitness altamente personalizado y consciente del contexto. Al aprovechar las capacidades de Azure AI e integrar múltiples fuentes de datos, la aplicación proporciona rutinas de ejercicios personalizadas, planes dietéticos y respuestas precisas a las consultas de los usuarios. Este enfoque mejora la participación y la satisfacción del usuario al ofrecer orientación de fitness relevante y personalizada.
Trabajo futuro
- Personalización mejorada: perfeccione aún más los modelos para proporcionar una personalización más granular basada en los comentarios, el comportamiento y las preferencias de los usuarios.
- Soporte multilingüe: implemente capacidades multilingües para llegar a una audiencia más amplia a nivel mundial.
- Análisis avanzado: desarrolle funciones de análisis avanzadas para brindar a los usuarios información más profunda sobre su progreso, hábitos y tendencias de acondicionamiento físico.
- Fuentes de datos ampliadas: incorpore fuentes de datos adicionales, como bases de datos médicas y contenido generado por el usuario, para mejorar la base de conocimientos de la aplicación y mejorar la precisión de las recomendaciones.