RagHack - GenAI 健身顧問應用程式
問題定義:
個人化健身指導:MyFitnessBuddy 是一款 GenAI 健身顧問應用程序,提供客製化的運動程序、飲食計劃和食物卡路里計算器,解決了通用健身應用程式的限制。
進階檢索增強生成:它利用結合檢索增強生成 (RAG) 和圖檢索增強生成 (GRAG) 的混合方法,為使用者查詢提供準確且上下文感知的回應。
在 RAGHack 上展示創新:MyFitnessBuddy 是為 RAGHack 黑客馬拉松開發的,展示了 RAG 技術在使用 Azure AI 和流行框架創建引人入勝且有效的 AI 驅動健身解決方案方面的強大功能。
架構和實作:
架構概述:
圖1 架構
MyFitnessBuddy 使用結合了檢索增強生成 (RAG) 和圖檢索增強生成 (GRAG) 的混合架構。使用 Python 腳本提取數據,並將其引入 Azure Blob Storage(用於結構化資料)和 Azure Cosmos DB(Gremlin API)(用於非結構化資料)。 Azure AI 搜尋對結構化資料進行索引,而圖形資料庫則管理非結構化資料中的複雜關係。該應用程式利用 Azure AI Studio 和 Prompt Flow 來定義聊天邏輯並連接資料來源。使用者查詢由應用程式伺服器處理,從 Azure AI 搜尋和 Cosmos DB 檢索相關訊息,然後將其發送到 Azure OpenAI 服務 (ChatGPT) 以產生個人化回應。這種混合方法可確保為使用者提供準確、情境感知和個人化的健身指導。
實施概述:
資料擷取與攝取:
圖 2. 資料擷取架構
- 這個過程從一個 Python 腳本開始,該腳本從各種來源提取結構化和非結構化資料。然後,這些數據被提取到兩個不同的儲存系統:
- Azure Blob 儲存體:用於結構化數據,已分塊並建立索引。
- Azure Cosmos DB (Gremlin API):用於非結構化數據,作為 GraphDoc 引入以啟用基於圖形的檢索。
混合 RAG 方法:
圖 3. 混合 RAG 架構
- RAG(檢索增強生成):
- 攝取到 Azure Blob 儲存體中的結構化資料將連接到 Azure AI 搜尋以進行索引和擷取。
- Azure AI Studio 有助於資料分塊和索引、定義聊天邏輯以及使用 Azure Prompt Flow 產生端點。
- 收到使用者查詢後,Azure AI 搜尋將從索引資料中檢索相關資訊。
- 圖RAG(圖檢索增強生成):
- Azure Cosmos DB 使用 Gremlin API 以圖形格式儲存非結構化資料。這種方法允許應用程式理解食品、運動和用戶健康指標等實體之間的複雜關係。
- Graph RAG 從 Azure Cosmos DB 檢索上下文相關的知識,然後將其與結構化資料結合以增強回應產生。
圖 4. 非結構化資料如何在 Azure CosmoDB 中以圖形形式儲存的範例(Gremlin API)
Azure 人工智慧工作室:
圖 5.Azure AI Studio 架構
提示流程
我們使用Azure Prompt Flow部署了兩個端點。一個是重寫意圖端點,另一個是My Fitness Buddy 。這些端點旨在解決兩種不同的用例:一種專注於透過查詢生成來優化文件檢索,而另一種則利用 RAG 的知識庫在預先定義的安全邊界內提供個人化的健身建議。
1.重寫Intent端點
用途:此端點旨在處理特定任務:根據使用者的問題和先前的對話記錄產生搜尋查詢。透過結合「當前使用者問題」和先前的上下文,端點產生單一規範查詢,其中包括所有必要的詳細信息,沒有變體。這用於文件檢索系統,產生這些精確的查詢和意圖,從而產生更準確的結果。
圖 6. 重寫意圖端點的流程
2. 我的健身夥伴端點
目的:第二個端點是「我的健身夥伴」 ,它根據使用者輸入提供個人化的健身建議、運動計畫和營養提示。該助手被編程為避免醫療建議,只堅持提供的資料集,以確保所有建議都是安全的、動機性的和基於證據的,並且檢索配置為搜尋索引的文檔區塊的知識庫。
圖 7. My Fitness Buddy 端點的流程
申請流程:
- 使用者透過基於 Python Streamlit 的聊天機器人介面與 MyFitnessBuddy 應用程式互動。
- 應用程式伺服器處理使用者的查詢,並根據查詢類型將其導向至適當的檢索系統(用於結構化資料的 Azure AI 搜尋或用於非結構化資料的 Azure Cosmos DB)。
- 從所選資料來源擷取相關訊息,並將其與精心設計的提示一起傳送至 Azure OpenAI 服務 (ChatGPT),以產生個人化回應。
- 最終的回應富含上下文相關訊息,透過 Streamlit 應用程式返回給用戶,提供量身定制的健身建議和建議。
圖 8. 應用
圖 9. 端點測試工具
使用的技術:
- 資料儲存與檢索: Azure Blob 儲存體、Azure Cosmos DB (Gremlin API)、Azure AI 搜尋。
- AI 與語言模式: Azure OpenAI 服務 (ChatGPT)。
- 資料處理與邏輯流: Azure AI Studio、Azure 提示流。
- 後端和應用程式伺服器:用於資料提取和預處理的Python,具有多個用於資料擷取和檢索的整合點。
目標受眾:
- 健身愛好者:熱衷於健身並正在尋找個人化運動程序和飲食計劃以優化其健身之旅的個人。
- 注重健康的個人:優先考慮健康生活方式並希望輕鬆獲得準確的營養資訊、卡路里追蹤和量身定制的飲食建議的人。
- 健身初學者:需要指導開始健身之旅的新手,包括基本運動程序、飲食建議以及常見健身相關問題的解答。
- 忙碌的專業人士:健身計畫時間有限,尋求便利、按需存取客製化健身指導和健康相關問題快速解答的使用者。
- 具有特定健康目標的個人:具有獨特健身目標或健康狀況的個人,需要考慮其特定需求和偏好的個人化計劃和建議。
結論與未來的工作:
結論
MyFitnessBuddy 展示了結合檢索增強生成 (RAG) 和圖形檢索增強生成 (GRAG) 等先進人工智慧技術來創建高度個人化和上下文感知的健身顧問的潛力。透過利用 Azure AI 的功能並整合多個資料來源,該應用程式提供客製化的鍛鍊程式、飲食計劃以及對使用者查詢的準確回應。這種方法透過提供量身定制的相關健身指導來提高使用者參與度和滿意度。
未來的工作
- 增強的個人化:進一步細化模型,以根據使用者回饋、行為和偏好提供更精細的客製化。
- 多語言支援:實施多語言功能以覆蓋全球更廣泛的受眾。
- 進階分析:開發進階分析功能,為使用者提供有關其健身進度、習慣和趨勢的更深入見解。
- 擴展的資料來源:合併其他資料來源,例如醫療資料庫和使用者生成的內容,以增強應用程式的知識庫並提高推薦準確性。