RagHack — приложение-консультант по фитнесу GenAI
Определение проблемы:
Персонализированные рекомендации по фитнесу : MyFitnessBuddy — это приложение-консультант по фитнесу GenAI, которое предоставляет индивидуальные программы тренировок, планы диеты и калькулятор пищевых калорий, устраняя ограничения обычных фитнес-приложений.
Расширенная генерация с расширенным поиском : он использует гибридный подход, сочетающий генерацию с расширенным поиском (RAG) и генерацию с расширенным поиском по графику (GRAG), для предоставления точных и контекстно-зависимых ответов на запросы пользователей.
Демонстрация инноваций на RAGHack . Разработанный для хакатона RAGHack, MyFitnessBuddy демонстрирует возможности технологий RAG в создании привлекательных и эффективных фитнес-решений на основе искусственного интеллекта с использованием искусственного интеллекта Azure и популярных платформ.
Архитектура и реализация:
Обзор архитектуры:
Рис.1 Архитектура
MyFitnessBuddy использует гибридную архитектуру, сочетающую генерацию с расширенным поиском (RAG) и генерацию с расширенным поиском графов (GRAG). Данные извлекаются с помощью сценария Python и принимаются в хранилище BLOB-объектов Azure для структурированных данных и в Azure Cosmos DB (API Gremlin) для неструктурированных данных. Azure AI Search индексирует структурированные данные, а графовая база данных управляет сложными связями в неструктурированных данных. Приложение использует Azure AI Studio и Prompt Flow для определения логики чата и подключения источников данных. Пользовательские запросы обрабатываются сервером приложений, получая соответствующую информацию из Azure AI Search и Cosmos DB, которая затем отправляется в службы Azure OpenAI (ChatGPT) для создания персонализированных ответов. Этот гибридный подход обеспечивает точные, контекстно-зависимые и персонализированные рекомендации по фитнесу для пользователей.
Обзор реализации:
Извлечение и прием данных:
Рис. 2. Архитектура извлечения данных
- Процесс начинается со сценария Python, который извлекает структурированные и неструктурированные данные из различных источников. Затем эти данные передаются в две разные системы хранения:
- Хранилище BLOB-объектов Azure: используется для структурированных данных, которые разбиваются на части и индексируются.
- Azure Cosmos DB (API Gremlin): используется для неструктурированных данных, принимаемых как GraphDoc, чтобы обеспечить извлечение на основе графов.
Гибридный подход RAG:
Рис. 3. Гибридная архитектура RAG.
- RAG (генерация с расширенным поиском):
- Структурированные данные, принимаемые в хранилище BLOB-объектов Azure, подключаются к Azure AI Search для индексации и извлечения.
- Azure AI Studio упрощает разбиение и индексацию данных, определение логики чата и создание конечных точек с помощью потока подсказок Azure.
- При получении запроса пользователя Azure AI Search извлекает соответствующую информацию из индексированных данных.
- Graph RAG (Расширенная генерация извлечения графов):
- Azure Cosmos DB хранит неструктурированные данные в формате графа с помощью API Gremlin. Такой подход позволяет приложению понимать сложные взаимосвязи между объектами, такими как продукты питания, упражнения и показатели здоровья пользователя.
- Graph RAG извлекает контекстно-релевантные знания из Azure Cosmos DB, которые затем объединяются со структурированными данными для расширенного формирования ответов.
Рис. 4. Пример того, как неструктурированные данные хранятся в виде графика в Azure CosmoDB (Gremlin API).
Azure AI Studio:
Рис. 5. Архитектура Azure AI Studio.
Быстрый поток
Мы развернули две конечные точки с помощью Azure Prompt Flow . Одна из них — конечная точка намерения перезаписи , а другая — My Fitness Buddy . Эти конечные точки предназначены для решения двух разных вариантов использования: один ориентирован на оптимизацию поиска документов посредством генерации запросов, а другой предлагает персонализированные рекомендации по фитнесу в заранее определенных безопасных границах с помощью базы знаний RAG.
1. Переписать конечную точку намерения
Цель : эта конечная точка была разработана для решения конкретной задачи: создания поисковых запросов на основе вопросов пользователя и истории предыдущих разговоров. Объединив «текущий вопрос пользователя» и предыдущий контекст, конечная точка генерирует единый канонический запрос , который включает все необходимые детали без вариантов. Это используется в системах поиска документов, где генерация этих точных запросов и намерений приводит к более точным результатам.
Рис. 6. Поток конечной точки намерения перезаписи
2. Конечная точка My Fitness Buddy
Цель : вторая конечная точка — это My Fitness Buddy , который предлагает персональные советы по фитнесу, планы тренировок и советы по питанию на основе данных пользователя. Помощник запрограммирован избегать медицинских консультаций и придерживаться исключительно предоставленного набора данных, чтобы гарантировать, что все рекомендации безопасны, мотивационны и основаны на фактических данных, а база знаний извлекается для фрагментов документов, настроенных как поисковые индексы.
Рис. 7. Последовательность действий конечной точки My Fitness Buddy
Ход применения:
- Пользователь взаимодействует с приложением MyFitnessBuddy через интерфейс чат-бота на основе Python Streamlit.
- Сервер приложений обрабатывает запрос пользователя и направляет его в соответствующую систему поиска (Azure AI Search для структурированных данных или Azure Cosmos DB для неструктурированных данных) в зависимости от типа запроса.
- Соответствующая информация извлекается из выбранного источника данных и отправляется в службы Azure OpenAI (ChatGPT) вместе со специально созданным приглашением для создания персонализированного ответа.
- Окончательный ответ, обогащенный контекстно-релевантной информацией, возвращается пользователю через приложение Streamlit, предоставляя индивидуальные советы и рекомендации по фитнесу.
Рис. 8. Приложение
Рис. 9. Инструмент тестирования конечных точек
Используемые технологии:
- Хранение и извлечение данных: хранилище BLOB-объектов Azure, Azure Cosmos DB (API Gremlin), поиск Azure AI.
- Модели искусственного интеллекта и языка: службы Azure OpenAI (ChatGPT).
- Обработка данных и логический поток: Azure AI Studio, Azure Prompt Flow.
- Бэкэнд и сервер приложений: Python для извлечения и предварительной обработки данных с несколькими точками интеграции для приема и извлечения данных.
Целевая аудитория:
- Любители фитнеса: люди, которые увлечены фитнесом и ищут индивидуальные программы тренировок и планы диеты, чтобы оптимизировать свой путь к фитнесу.
- Люди, заботящиеся о своем здоровье: люди, которые отдают предпочтение здоровому образу жизни и хотят иметь легкий доступ к точной информации о питании, отслеживанию калорий и индивидуальным рекомендациям по питанию.
- Новички в фитнесе: новички, которым нужны рекомендации по началу своего пути к фитнесу, включая базовые программы тренировок, рекомендации по питанию и ответы на распространенные вопросы, связанные с фитнесом.
- Занятые профессионалы: пользователи с ограниченным временем для планирования фитнеса, которым нужен удобный доступ по требованию к персонализированным рекомендациям по фитнесу и быстрым ответам на вопросы, связанные со здоровьем.
- Лица с конкретными целями в отношении здоровья: люди с уникальными целями в фитнесе или состоянием здоровья, которым требуются персональные планы и советы, учитывающие их конкретные потребности и предпочтения.
Заключение и будущие работы:
Заключение
MyFitnessBuddy демонстрирует потенциал сочетания передовых методов искусственного интеллекта, таких как расширенная генерация с поиском (RAG) и дополненная генерация с поиском по графику (GRAG), для создания персонализированного и контекстно-зависимого фитнес-консультанта. Используя возможности Azure AI и интегрируя несколько источников данных, приложение предоставляет индивидуальные программы тренировок, планы питания и точные ответы на запросы пользователей. Такой подход повышает вовлеченность и удовлетворенность пользователей, предоставляя индивидуальные и актуальные рекомендации по фитнесу.
Будущая работа
- Расширенная персонализация: дальнейшее совершенствование моделей для обеспечения более детальной настройки на основе отзывов, поведения и предпочтений пользователей.
- Многоязычная поддержка. Реализуйте многоязычные возможности для охвата более широкой аудитории по всему миру.
- Расширенная аналитика: разработайте расширенные аналитические функции, чтобы предоставить пользователям более глубокое понимание их прогресса в фитнесе, привычек и тенденций.
- Расширенные источники данных: включите дополнительные источники данных, такие как медицинские базы данных и пользовательский контент, чтобы расширить базу знаний приложения и повысить точность рекомендаций.