RagHack - Application GenAI Fitness Advisor
Définition du problème :
Conseils de remise en forme personnalisés : MyFitnessBuddy est une application GenAI Fitness Advisor qui propose des routines d'entraînement personnalisées, des plans de régime et un calculateur de calories alimentaires, répondant aux limites des applications de fitness génériques.
Génération augmentée par récupération avancée : il exploite une approche hybride combinant la génération augmentée par récupération (RAG) et la génération augmentée par récupération de graphiques (GRAG) pour fournir des réponses précises et contextuelles aux requêtes des utilisateurs.
Présentation de l'innovation chez RAGHack : Développé pour le hackathon RAGHack, MyFitnessBuddy démontre la puissance des technologies RAG dans la création de solutions de fitness engageantes et efficaces basées sur l'IA à l'aide d'Azure AI et de frameworks populaires.
Architecture et mise en œuvre :
Aperçu de l'architecture :
Figure 1 : Architecture
MyFitnessBuddy utilise une architecture hybride combinant Retrieval-Augmented Generation (RAG) et Graph Retrieval-Augmented Generation (GRAG). Les données sont extraites à l'aide d'un script Python et ingérées dans Azure Blob Storage pour les données structurées et dans Azure Cosmos DB (API Gremlin) pour les données non structurées. Azure AI Search indexe les données structurées, tandis que la base de données graphique gère les relations complexes dans les données non structurées. L'application utilise Azure AI Studio et Prompt Flow pour définir la logique de discussion et connecter les sources de données. Les requêtes des utilisateurs sont traitées par le serveur d'applications, récupérant les informations pertinentes d'Azure AI Search et de Cosmos DB, qui sont ensuite envoyées à Azure OpenAI Services (ChatGPT) pour générer des réponses personnalisées. Cette approche hybride garantit aux utilisateurs des conseils de remise en forme précis, contextuels et personnalisés.
Aperçu de la mise en œuvre :
Extraction et ingestion de données :
Figure 2. Architecture d'extraction de données
- Le processus commence par un script Python qui extrait les données structurées et non structurées de diverses sources. Ces données sont ensuite ingérées dans deux systèmes de stockage différents :
- Stockage Blob Azure : utilisé pour les données structurées, qui sont fragmentées et indexées.
- Azure Cosmos DB (API Gremlin) : utilisé pour les données non structurées, ingérées en tant que GraphDoc pour permettre la récupération basée sur des graphiques.
Approche RAG hybride :
Figure 3. Architecture RAG hybride
- RAG (génération augmentée par récupération) :
- Les données structurées ingérées dans Azure Blob Storage sont connectées à Azure AI Search pour l'indexation et la récupération.
- Azure AI Studio facilite le regroupement et l'indexation des données, la définition de la logique de discussion et la génération de points de terminaison à l'aide d'Azure Prompt Flow.
- Lorsqu’une requête utilisateur est reçue, Azure AI Search récupère les informations pertinentes à partir des données indexées.
- Graph RAG (Graph Retrieval-Augmented Generation) :
- Azure Cosmos DB stocke les données non structurées sous forme de graphique à l'aide de l'API Gremlin. Cette approche permet à l'application de comprendre les relations complexes entre des entités telles que les aliments, les exercices et les mesures de santé des utilisateurs.
- Le Graph RAG récupère des connaissances contextuellement pertinentes à partir d’Azure Cosmos DB, qui sont ensuite combinées avec des données structurées pour une génération de réponses améliorée.
Fig 4. Exemple de stockage des données non structurées sous forme de graphique dans Azure CosmoDB (API Gremlin)
Azure AI Studio :
Figure 5. Architecture d'Azure AI Studio
Flux rapide
Nous avons déployé deux points de terminaison à l'aide d'Azure Prompt Flow . L’un est un point de terminaison d’intention de réécriture et l’autre est un My Fitness Buddy . Ces points de terminaison sont conçus pour résoudre deux cas d'utilisation différents : l'un se concentre sur l'optimisation de la récupération de documents via la génération de requêtes, tandis que l'autre offre des conseils personnalisés dans des limites de sécurité prédéfinies avec la base de connaissances du RAG.
1. Réécrire le point de terminaison de l'intention
Objectif : ce point de terminaison a été conçu pour gérer une tâche spécifique : générer des requêtes de recherche basées sur la question d'un utilisateur et l'historique des conversations précédentes. En combinant la « question actuelle de l'utilisateur » et le contexte antérieur, le point de terminaison génère une seule requête canonique qui inclut tous les détails nécessaires, sans variantes. Ceci est utilisé pour les systèmes de récupération de documents, où la génération de ces requêtes et intentions précises conduit à des résultats plus précis.
Fig 6. Flux du point final de l'intention de réécriture
2. Point de terminaison My Fitness Buddy
Objectif : le deuxième point de terminaison est un My Fitness Buddy qui offre des conseils personnalisés en matière de remise en forme, des plans d'entraînement et des conseils nutritionnels basés sur les commentaires des utilisateurs. L'assistant est programmé pour éviter les avis médicaux et s'en tenir uniquement à l'ensemble de données fourni afin de garantir que toutes les recommandations sont sûres, motivantes et fondées sur des preuves et que la base de connaissances est récupérée pour les morceaux de documents configurés comme index de recherche.
Fig 7. Flux du point de terminaison My Fitness Buddy
Flux de candidature :
- L'utilisateur interagit avec l'application MyFitnessBuddy via une interface de chatbot basée sur Python Streamlit.
- Le serveur d'applications traite la requête de l'utilisateur et la dirige vers le système de récupération approprié (Azure AI Search pour les données structurées ou Azure Cosmos DB pour les données non structurées) en fonction du type de requête.
- Les informations pertinentes sont récupérées à partir de la source de données sélectionnée et envoyées à Azure OpenAI Services (ChatGPT) avec une invite spécialement conçue pour générer une réponse personnalisée.
- La réponse finale, enrichie d'informations contextuellement pertinentes, est renvoyée à l'utilisateur via l'application Streamlit, fournissant des conseils et des recommandations de remise en forme personnalisés.
Figure 8. Application
Fig 9. Outil de test pour les points finaux
Technologies utilisées :
- Stockage et récupération de données : Azure Blob Storage, Azure Cosmos DB (API Gremlin), Azure AI Search.
- Modèles d'IA et de langage : Azure OpenAI Services (ChatGPT).
- Traitement des données et flux logique : Azure AI Studio, Azure Prompt Flow.
- Backend et serveur d'applications : Python pour l'extraction et le prétraitement des données, avec plusieurs points d'intégration pour l'ingestion et la récupération des données.
Public cible :
- Amateurs de fitness : personnes passionnées par le fitness et qui recherchent des programmes d'entraînement personnalisés et des plans de régime pour optimiser leur parcours de remise en forme.
- Individus soucieux de leur santé : personnes qui privilégient un mode de vie sain et souhaitent accéder facilement à des informations nutritionnelles précises, au suivi des calories et à des conseils diététiques personnalisés.
- Débutants en fitness : nouveaux arrivants qui ont besoin de conseils pour démarrer leur parcours de remise en forme, y compris des routines d'entraînement de base, des recommandations diététiques et des réponses aux questions courantes liées au fitness.
- Professionnels occupés : utilisateurs disposant de peu de temps pour planifier leur remise en forme et qui recherchent un accès pratique et à la demande à des conseils de remise en forme personnalisés et à des réponses rapides aux questions liées à la santé.
- Individus ayant des objectifs de santé spécifiques : personnes ayant des objectifs de remise en forme ou des problèmes de santé uniques qui nécessitent des plans et des conseils personnalisés tenant compte de leurs besoins et préférences spécifiques.
Conclusion et travaux futurs :
Conclusion
MyFitnessBuddy démontre le potentiel de la combinaison de techniques d'IA avancées telles que la génération augmentée par récupération (RAG) et la génération augmentée par récupération de graphiques (GRAG) pour créer un conseiller en forme hautement personnalisé et contextuel. En tirant parti des capacités d'Azure AI et en intégrant plusieurs sources de données, l'application propose des routines d'entraînement personnalisées, des plans diététiques et des réponses précises aux requêtes des utilisateurs. Cette approche améliore l'engagement et la satisfaction des utilisateurs en fournissant des conseils de remise en forme personnalisés et pertinents.
Travaux futurs
- Personnalisation améliorée : affinez davantage les modèles pour fournir une personnalisation plus granulaire basée sur les commentaires, le comportement et les préférences des utilisateurs.
- Prise en charge multilingue : mettez en œuvre des fonctionnalités multilingues pour atteindre un public plus large à l’échelle mondiale.
- Analyses avancées : développez des fonctionnalités d'analyse avancées pour fournir aux utilisateurs des informations plus approfondies sur leurs progrès en matière de condition physique, leurs habitudes et leurs tendances.
- Sources de données étendues : intégrez des sources de données supplémentaires telles que des bases de données médicales et du contenu généré par les utilisateurs pour améliorer la base de connaissances de l'application et améliorer la précision des recommandations.