RagHack - GenAI 피트니스 어드바이저 앱
문제 정의:
맞춤형 피트니스 지도 : MyFitnessBuddy는 맞춤형 운동 루틴, 다이어트 계획, 음식 칼로리 계산기를 제공하여 일반 피트니스 앱의 한계를 해결하는 GenAI 피트니스 조언자 앱입니다.
고급 검색 증강 생성 : 검색 증강 생성(RAG)과 그래프 검색 증강 생성(GRAG)을 결합한 하이브리드 접근 방식을 활용하여 사용자 쿼리에 대한 정확한 상황 인식 응답을 제공합니다.
RAGHack에서 혁신 시연 : RAGHack 해커톤을 위해 개발된 MyFitnessBuddy는 Azure AI 및 널리 사용되는 프레임워크를 사용하여 매력적이고 효과적인 AI 기반 피트니스 솔루션을 만드는 RAG 기술의 힘을 보여줍니다.
아키텍처 및 구현:
아키텍처 개요:
그림 1 아키텍처
MyFitnessBuddy는 RAG(Retrieval-Augmented Generation)와 GRAG(Graph Retrieval-Augmented Generation)를 결합한 하이브리드 아키텍처를 사용합니다. 데이터는 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 스크립트로 시작됩니다. 그런 다음 이 데이터는 두 개의 서로 다른 스토리지 시스템으로 수집됩니다.
- Azure Blob Storage: 청크화되고 인덱싱되는 구조화된 데이터에 사용됩니다.
- Azure Cosmos DB(Gremlin API): 구조화되지 않은 데이터에 사용되며 그래프 기반 검색을 활성화하기 위해 GraphDoc으로 수집됩니다.
하이브리드 RAG 접근 방식:
그림 3. 하이브리드 RAG 아키텍처
- RAG(검색 증강 생성):
- Azure Blob Storage로 수집된 구조화된 데이터는 인덱싱 및 검색을 위해 Azure AI Search에 연결됩니다.
- Azure AI Studio는 Azure Prompt Flow를 사용하여 데이터 청크 및 인덱싱, 채팅 논리 정의, 엔드포인트 생성을 용이하게 합니다.
- 사용자 쿼리가 수신되면 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 Prompt Flow를 사용하여 두 개의 엔드포인트를 배포했습니다. 하나는 재작성 의도 엔드포인트이고 다른 하나는 My Fitness Buddy 입니다. 이러한 엔드포인트는 두 가지 서로 다른 사용 사례를 해결하도록 설계되었습니다. 하나는 쿼리 생성을 통해 문서 검색을 최적화하는 데 중점을 두는 반면, 다른 하나는 RAG의 지식 기반을 통해 사전 정의된 안전 경계 내에서 개인화된 피트니스 조언을 제공합니다.
1. 인텐트 엔드포인트 재작성
목적 : 이 엔드포인트는 사용자의 질문과 이전 대화 기록을 기반으로 검색 쿼리를 생성하는 특정 작업을 처리하도록 설계되었습니다. "현재 사용자 질문"과 이전 컨텍스트를 결합함으로써 엔드포인트는 변형 없이 필요한 모든 세부 정보를 포함하는 단일 표준 쿼리를 생성합니다. 이는 정확한 쿼리와 의도를 생성하여 보다 정확한 결과를 가져오는 문서 검색 시스템에 사용됩니다.
그림 6. Rewrite Intent 엔드포인트의 흐름
2. My Fitness Buddy 엔드포인트
목적 : 두 번째 끝점은 사용자 입력을 기반으로 개인화된 피트니스 조언, 운동 계획 및 영양 팁을 제공하는 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의 기능을 활용하고 여러 데이터 소스를 통합함으로써 앱은 맞춤형 운동 루틴, 식이 계획 및 사용자 쿼리에 대한 정확한 응답을 제공합니다. 이 접근 방식은 맞춤형 관련 피트니스 지침을 제공함으로써 사용자 참여와 만족도를 향상시킵니다.
미래의 일
- 향상된 개인화: 사용자 피드백, 행동 및 선호도를 기반으로 보다 세부적인 사용자 정의를 제공하기 위해 모델을 더욱 구체화합니다.
- 다국어 지원: 다국어 기능을 구현하여 전 세계적으로 더 많은 고객에게 다가갑니다.
- 고급 분석: 사용자에게 피트니스 진행 상황, 습관 및 추세에 대한 더 깊은 통찰력을 제공하는 고급 분석 기능을 개발합니다.
- 확장된 데이터 소스: 의료 데이터베이스 및 사용자 생성 콘텐츠와 같은 추가 데이터 소스를 통합하여 앱의 지식 기반을 강화하고 추천 정확도를 높입니다.