RagHack - GenAI フィットネス アドバイザー アプリ
問題の定義:
パーソナライズされたフィットネス ガイダンス: MyFitnessBuddy は、カスタマイズされたワークアウト ルーチン、ダイエット プラン、食事カロリー計算ツールを提供する GenAI フィットネス アドバイザー アプリで、一般的なフィットネス アプリの制限に対処します。
高度な検索拡張生成: 検索拡張生成 (RAG) とグラフ検索拡張生成 (GRAG) を組み合わせたハイブリッド アプローチを活用して、ユーザー クエリに対して正確でコンテキストを認識した応答を提供します。
RAGHack でイノベーションを紹介: RAGHack ハカソン用に開発された MyFitnessBuddy は、Azure AI と一般的なフレームワークを使用して、魅力的で効果的な AI 主導のフィットネス ソリューションを作成する際の RAG テクノロジーの力を実証します。
アーキテクチャと実装:
アーキテクチャの概要:
図1 アーキテクチャ
MyFitnessBuddy は、検索拡張生成 (RAG) とグラフ検索拡張生成 (GRAG) を組み合わせたハイブリッド アーキテクチャを使用します。データは Python スクリプトを使用して抽出され、構造化データの場合は Azure Blob Storage に、非構造化データの場合は Azure Cosmos DB (Gremlin API) に取り込まれます。 Azure AI Search は構造化データのインデックスを作成し、グラフ データベースは非構造化データ内の複雑な関係を管理します。このアプリケーションは、Azure AI Studio とプロンプト フローを利用して、チャット ロジックを定義し、データ ソースに接続します。ユーザーのクエリはアプリ サーバーによって処理され、Azure AI Search および Cosmos DB から関連情報が取得され、その情報が Azure OpenAI Services (ChatGPT) に送信されて、パーソナライズされた応答が生成されます。このハイブリッド アプローチにより、正確でコンテキストを認識したパーソナライズされたフィットネス ガイダンスがユーザーに確実に提供されます。
実装の概要:
データの抽出と取り込み:
図 2. データ抽出アーキテクチャ
- このプロセスは、さまざまなソースから構造化データと非構造化データを抽出する Python スクリプトから始まります。このデータは、次に 2 つの異なるストレージ システムに取り込まれます。
- Azure Blob Storage: チャンク化されインデックスが作成される構造化データに使用されます。
- Azure Cosmos DB (Gremlin API): 非構造化データに使用され、グラフベースの取得を可能にするために GraphDoc として取り込まれます。
ハイブリッド RAG アプローチ:
図 3. ハイブリッド RAG アーキテクチャ
- RAG (検索拡張生成):
- Azure Blob Storage に取り込まれた構造化データは、インデックス作成と取得のために Azure AI Search に接続されます。
- Azure AI Studio は、データのチャンク化とインデックス作成、チャット ロジックの定義、Azure プロンプト フローを使用したエンドポイントの生成を容易にします。
- ユーザー クエリを受信すると、Azure AI Search はインデックス付きデータから関連情報を取得します。
- グラフ RAG (グラフ検索拡張生成):
- Azure Cosmos DB は、Gremlin API を使用して非構造化データをグラフ形式で保存します。このアプローチにより、アプリケーションは食品、運動、ユーザーの健康指標などのエンティティ間の複雑な関係を理解できるようになります。
- Graph RAG は、Azure Cosmos DB からコンテキストに関連したナレッジを取得し、構造化データと組み合わせて応答生成を強化します。
図 4. 非構造化データが Azure CosmoDB にグラフとして保存される例 (Gremlin API)
Azure AI スタジオ:
図 5. Azure AI Studio のアーキテクチャ
プロンプトフロー
Azure プロンプト フローを使用して 2 つのエンドポイントをデプロイしました。 1 つは書き換えインテントエンドポイントで、もう 1 つはMy Fitness Buddyです。これらのエンドポイントは、2 つの異なるユース ケースを解決するように設計されています。1 つはクエリ生成によるドキュメント検索の最適化に焦点を当て、もう 1 つは RAG のナレッジ ベースを使用して、事前に定義された安全な境界内でパーソナライズされたフィットネス アドバイスを提供します。
1. インテントエンドポイントの書き換え
目的: このエンドポイントは、ユーザーの質問と以前の会話履歴に基づいて検索クエリを生成するという特定のタスクを処理するように設計されました。 「現在のユーザーの質問」と以前のコンテキストを組み合わせることで、エンドポイントは必要なすべての詳細をバリアントなしで含む単一の正規クエリを生成します。これは文書検索システムに採用されており、正確なクエリと意図を生成することでより正確な結果が得られます。
図 6. Rewrite Intent エンドポイントのフロー
2.My Fitness Buddy エンドポイント
目的: 2 番目のエンドポイントは、ユーザーの入力に基づいてパーソナライズされたフィットネス アドバイス、ワークアウト プラン、栄養に関するヒントを提供するMy Fitness Buddyです。アシスタントは、すべての推奨事項が安全で、モチベーションを高め、証拠に基づいていることを保証するために、医学的アドバイスを回避し、提供されたデータセットのみに従うようにプログラムされており、検索インデックスとして構成されたドキュメントの塊に対してナレッジ ベースが取得されます。
図 7. My Fitness Buddy エンドポイントのフロー
申し込みの流れ:
- ユーザーは、Python Streamlit ベースのチャットボット インターフェイスを通じて MyFitnessBuddy アプリと対話します。
- アプリケーション サーバーはユーザーのクエリを処理し、クエリの種類に基づいて適切な検索システム (構造化データの場合は Azure AI Search、非構造化データの場合は Azure Cosmos DB) に送信します。
- 関連情報は、選択したデータ ソースから取得され、カスタマイズされた応答を生成するための作成されたプロンプトとともに Azure OpenAI Services (ChatGPT) に送信されます。
- 状況に応じて関連する情報が充実した最終応答は、Streamlit アプリを介してユーザーに返され、カスタマイズされたフィットネスのアドバイスや推奨事項が提供されます。
図 8. アプリケーション
図 9. エンドポイントのテストツール
使用されているテクノロジー:
- データ ストレージと取得: Azure Blob Storage、Azure Cosmos DB (Gremlin API)、Azure AI Search。
- AI と言語モデル: Azure OpenAI サービス (ChatGPT)。
- データ処理とロジック フロー: Azure AI Studio、Azure プロンプト フロー。
- バックエンドおよびアプリケーション サーバー:データの抽出と前処理には Python、データの取り込みと取得には複数の統合ポイントを使用します。
対象読者:
- フィットネス愛好家:フィットネスに情熱を持ち、フィットネスの旅を最適化するためにパーソナライズされたワークアウト ルーチンや食事計画を探している個人。
- 健康志向の人:健康的なライフスタイルを優先し、正確な栄養情報、カロリー追跡、カスタマイズされた食事アドバイスに簡単にアクセスしたい人。
- フィットネス初心者:基本的なワークアウト ルーチン、食事の推奨事項、フィットネス関連の一般的な質問への回答など、フィットネスへの取り組みを開始する際のガイダンスが必要な初心者。
- 多忙な専門家:フィットネス計画に費やす時間が限られており、カスタマイズされたフィットネス ガイダンスへの便利なオンデマンド アクセスと、健康関連の質問への迅速な回答を求めているユーザー。
- 特定の健康目標を持つ個人:独自のフィットネス目標や健康状態を持ち、特定のニーズや好みを考慮した個別の計画やアドバイスを必要とする人々。
結論と今後の取り組み:
結論
MyFitnessBuddy は、検索拡張生成 (RAG) やグラフ検索拡張生成 (GRAG) などの高度な AI 技術を組み合わせて、高度にパーソナライズされたコンテキスト認識型のフィットネス アドバイザーを作成する可能性を示しています。 Azure AI の機能を活用し、複数のデータ ソースを統合することで、アプリはカスタマイズされたワークアウト ルーチン、食事計画、ユーザーのクエリに対する正確な応答を提供します。このアプローチは、カスタマイズされた適切なフィットネス ガイダンスを提供することで、ユーザー エンゲージメントと満足度を向上させます。
今後の取り組み
- 強化されたパーソナライゼーション:モデルをさらに改良し、ユーザーのフィードバック、行動、好みに基づいてより詳細なカスタマイズを提供します。
- 多言語サポート:多言語機能を実装して、世界中のより幅広い視聴者にリーチします。
- 高度な分析: 高度な分析機能を開発して、ユーザーにフィットネスの進捗状況、習慣、傾向についてのより深い洞察を提供します。
- 拡張されたデータ ソース:医療データベースやユーザー生成コンテンツなどの追加のデータ ソースを組み込んで、アプリのナレッジ ベースを強化し、推奨の精度を向上させます。