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 的功能并集成多个数据源,该应用程序提供定制的锻炼程序、饮食计划以及对用户查询的准确响应。这种方法通过提供量身定制的相关健身指导来提高用户参与度和满意度。
未来的工作
- 增强的个性化:进一步细化模型,以根据用户反馈、行为和偏好提供更精细的定制。
- 多语言支持:实施多语言功能以覆盖全球更广泛的受众。
- 高级分析:开发高级分析功能,为用户提供有关其健身进度、习惯和趋势的更深入见解。
- 扩展的数据源:合并其他数据源,例如医疗数据库和用户生成的内容,以增强应用程序的知识库并提高推荐准确性。