RagHack – GenAI Fitness Advisor App
Problemdefinition:
Personalisierte Fitnessberatung : MyFitnessBuddy ist eine GenAI-Fitnessberater-App, die individuelle Trainingsroutinen, Diätpläne und einen Lebensmittelkalorienrechner bereitstellt und so die Einschränkungen allgemeiner Fitness-Apps berücksichtigt.
Advanced Retrieval-Augmented Generation : Es nutzt einen hybriden Ansatz, der Retrieval-Augmented Generation (RAG) und Graph Retrieval-Augmented Generation (GRAG) kombiniert, um genaue und kontextbezogene Antworten auf Benutzeranfragen zu liefern.
Präsentation von Innovationen bei RAGHack : MyFitnessBuddy wurde für den RAGHack-Hackathon entwickelt und demonstriert die Leistungsfähigkeit der RAG-Technologien bei der Entwicklung ansprechender und effektiver KI-gesteuerter Fitnesslösungen unter Verwendung von Azure AI und beliebten Frameworks.
Architektur und Implementierung:
Architekturübersicht:
Abb.1 Architektur
MyFitnessBuddy verwendet eine Hybridarchitektur, die Retrieval-Augmented Generation (RAG) und Graph Retrieval-Augmented Generation (GRAG) kombiniert. Daten werden mithilfe eines Python-Skripts extrahiert und für strukturierte Daten in Azure Blob Storage und für unstrukturierte Daten in Azure Cosmos DB (Gremlin-API) aufgenommen. Azure AI Search indiziert die strukturierten Daten, während die Diagrammdatenbank komplexe Beziehungen in den unstrukturierten Daten verwaltet. Die Anwendung nutzt Azure AI Studio und Prompt Flow, um Chat-Logik zu definieren und Datenquellen zu verbinden. Benutzeranfragen werden vom App-Server verarbeitet und ruft relevante Informationen von Azure AI Search und Cosmos DB ab, die dann an Azure OpenAI Services (ChatGPT) gesendet werden, um personalisierte Antworten zu generieren. Dieser hybride Ansatz gewährleistet eine genaue, kontextbezogene und personalisierte Fitnessanleitung für Benutzer.
Implementierungsübersicht:
Datenextraktion und -aufnahme:
Abb. 2. Datenextraktionsarchitektur
- Der Prozess beginnt mit einem Python-Skript, das strukturierte und unstrukturierte Daten aus verschiedenen Quellen extrahiert. Diese Daten werden dann in zwei verschiedene Speichersysteme aufgenommen:
- Azure Blob Storage: Wird für strukturierte Daten verwendet, die in Blöcke aufgeteilt und indiziert werden.
- Azure Cosmos DB (Gremlin-API): Wird für unstrukturierte Daten verwendet und als GraphDoc aufgenommen, um den graphbasierten Abruf zu ermöglichen.
Hybrider RAG-Ansatz:
Abb. 3. Hybride RAG-Architektur
- RAG (Retrieval-Augmented Generation):
- Die in Azure Blob Storage erfassten strukturierten Daten werden zur Indizierung und zum Abruf mit Azure AI Search verbunden.
- Azure AI Studio erleichtert die Aufteilung und Indizierung von Daten, die Definition von Chat-Logik und die Generierung von Endpunkten mithilfe von Azure Prompt Flow.
- Wenn eine Benutzerabfrage eingeht, ruft Azure AI Search relevante Informationen aus den indizierten Daten ab.
- Graph RAG (Graph Retrieval-Augmented Generation):
- Azure Cosmos DB speichert die unstrukturierten Daten mithilfe der Gremlin-API in einem Diagrammformat. Dieser Ansatz ermöglicht es der Anwendung, komplexe Beziehungen zwischen Entitäten wie Nahrungsmitteln, Übungen und Benutzergesundheitsmetriken zu verstehen.
- Das Graph RAG ruft kontextrelevantes Wissen aus Azure Cosmos DB ab, das dann mit strukturierten Daten für eine verbesserte Antwortgenerierung kombiniert wird.
Abb. 4. Beispiel dafür, wie unstrukturierte Daten als Diagramm in Azure CosmoDB (Gremlin-API) gespeichert werden.
Azure AI Studio:
Abb. 5. Azure AI Studio-Architektur
Sofortiger Ablauf
Wir haben zwei Endpunkte mithilfe von Azure Prompt Flow bereitgestellt. Einer ist ein Rewrite-Intent -Endpunkt und der andere ist ein My Fitness Buddy . Diese Endpunkte sollen zwei unterschiedliche Anwendungsfälle lösen: Der eine konzentriert sich auf die Optimierung des Dokumentenabrufs durch Abfragegenerierung, während der andere personalisierte Fitnessratschläge innerhalb vordefinierter sicherer Grenzen mit der Wissensbasis der RAG bietet.
1. Intent-Endpunkt neu schreiben
Zweck : Dieser Endpunkt wurde für eine bestimmte Aufgabe entwickelt: das Generieren von Suchanfragen basierend auf der Frage eines Benutzers und dem vorherigen Gesprächsverlauf. Durch die Kombination der „aktuellen Benutzerfrage“ und des vorherigen Kontexts generiert der Endpunkt eine einzige kanonische Abfrage , die alle erforderlichen Details ohne Varianten enthält. Dies wird für Dokumentenabrufsysteme eingesetzt, bei denen die Generierung dieser präzisen Abfragen und Absichten zu genaueren Ergebnissen führt.
Abb. 6. Ablauf des Rewrite Intent-Endpunkts
2. Mein Fitness Buddy-Endpunkt
Zweck : Der zweite Endpunkt ist ein My Fitness Buddy , der personalisierte Fitnessratschläge, Trainingspläne und Ernährungstipps basierend auf Benutzereingaben bietet. Der Assistent ist so programmiert, dass er medizinische Ratschläge vermeidet und sich ausschließlich an den bereitgestellten Datensatz hält, um sicherzustellen, dass alle Empfehlungen sicher, motivierend und evidenzbasiert sind und die Wissensdatenbank für die als Suchindizes konfigurierten Dokumentenmengen abgerufen wird.
Abb. 7. Ablauf des My Fitness Buddy-Endpunkts
Bewerbungsablauf:
- Der Benutzer interagiert mit der MyFitnessBuddy-App über eine Python Streamlit-basierte Chatbot-Schnittstelle.
- Der Anwendungsserver verarbeitet die Abfrage des Benutzers und leitet sie basierend auf dem Abfragetyp an das entsprechende Abrufsystem (Azure AI Search für strukturierte Daten oder Azure Cosmos DB für unstrukturierte Daten) weiter.
- Relevante Informationen werden aus der ausgewählten Datenquelle abgerufen und zusammen mit einer gestalteten Eingabeaufforderung an Azure OpenAI Services (ChatGPT) gesendet, um eine personalisierte Antwort zu generieren.
- Die endgültige Antwort, angereichert mit kontextrelevanten Informationen, wird über die Streamlit-App an den Benutzer zurückgegeben und bietet maßgeschneiderte Fitnessratschläge und Empfehlungen.
Abb. 8. Anwendung
Abb. 9. Testtool für Endpunkte
Verwendete Technologien:
- Datenspeicherung und -abruf: Azure Blob Storage, Azure Cosmos DB (Gremlin API), Azure AI Search.
- KI- und Sprachmodelle: Azure OpenAI Services (ChatGPT).
- Datenverarbeitung und Logikfluss: Azure AI Studio, Azure Prompt Flow.
- Backend- und Anwendungsserver: Python für die Datenextraktion und -vorverarbeitung, mit mehreren Integrationspunkten für die Datenaufnahme und den Datenabruf.
Zielgruppe:
- Fitnessbegeisterte: Personen, die sich für Fitness begeistern und nach personalisierten Trainingsroutinen und Diätplänen suchen, um ihre Fitnessreise zu optimieren.
- Gesundheitsbewusste Personen: Personen, die einen gesunden Lebensstil priorisieren und einfachen Zugang zu genauen Nährwertinformationen, Kalorienverfolgung und maßgeschneiderten Ernährungsratschlägen wünschen.
- Fitness-Anfänger: Neueinsteiger, die Hilfe beim Start ihrer Fitness-Reise benötigen, einschließlich grundlegender Trainingsroutinen, Ernährungsempfehlungen und Antworten auf häufige Fitness-Fragen.
- Vielbeschäftigte Berufstätige: Benutzer mit begrenzter Zeit für die Fitnessplanung, die bequemen On-Demand-Zugriff auf individuelle Fitnessberatung und schnelle Antworten auf gesundheitsbezogene Fragen suchen.
- Personen mit spezifischen Gesundheitszielen: Personen mit einzigartigen Fitnesszielen oder Gesundheitsproblemen, die personalisierte Pläne und Ratschläge benötigen, die ihre spezifischen Bedürfnisse und Vorlieben berücksichtigen.
Fazit und zukünftige Arbeiten:
Abschluss
MyFitnessBuddy demonstriert das Potenzial der Kombination fortschrittlicher KI-Techniken wie Retrieval-Augmented Generation (RAG) und Graph Retrieval-Augmented Generation (GRAG), um einen hochgradig personalisierten und kontextbewussten Fitnessberater zu schaffen. Durch die Nutzung der Azure AI-Funktionen und die Integration mehrerer Datenquellen bietet die App individuelle Trainingsroutinen, Ernährungspläne und genaue Antworten auf Benutzeranfragen. Dieser Ansatz steigert das Engagement und die Zufriedenheit der Benutzer durch die Bereitstellung maßgeschneiderter und relevanter Fitnessanleitungen.
Zukünftige Arbeit
- Verbesserte Personalisierung: Verfeinern Sie die Modelle weiter, um eine detailliertere Anpassung basierend auf Benutzerfeedback, -verhalten und -präferenzen zu ermöglichen.
- Mehrsprachiger Support: Implementieren Sie mehrsprachige Funktionen, um ein breiteres Publikum weltweit zu erreichen.
- Erweiterte Analysen: Entwickeln Sie erweiterte Analysefunktionen, um Benutzern tiefere Einblicke in ihren Fitnessfortschritt, ihre Gewohnheiten und Trends zu bieten.
- Erweiterte Datenquellen: Integrieren Sie zusätzliche Datenquellen wie medizinische Datenbanken und benutzergenerierte Inhalte, um die Wissensbasis der App zu erweitern und die Empfehlungsgenauigkeit zu verbessern.