나는 벡터 DB 없이 오픈소스 헬스 AI 에이전트를 구축했습니다 (Laravel 12, React, Typescript + InteriaJS + Gemini)
Source: Dev.to
Introduction
기본적인 프론트엔드를 AI 채팅 API 위에 얹는 일은 이제 거의 잠들어 있는 동안에도 할 수 있을 정도로 쉬워졌습니다. 하지만 혈당 수치, 특정 칼로리 소모량, 실제 식단 제한과 같은 복잡하고 개인적인 건강 데이터를 실제로 이해하는 무언가를 만들려면 다른 접근 방식이 필요합니다.
저는 Acara Plate라는 개인 맞춤 영양 플랫폼을 오픈소스로 공개했습니다. 목표는 일반적인 “채소를 많이 먹어라” 같은 조언을 넘어, 사용자의 고유한 신체 데이터를 활용하면서도 인프라 관리에 매몰되지 않는 어시스턴트를 만드는 것이었습니다.
Bypassing a Vector Database
건강 중심 AI의 전통적인 구성은 다음과 같습니다:
- 방대한 데이터셋(예: USDA 식품 데이터베이스)을 청크로 나누기.
- 그 청크들을 벡터 데이터베이스에 저장하기.
- 벡터를 조회하는 로직을 작성하기.
이 과정은 번거롭습니다. 대신 저는 USDA 파일들을 Gemini의 파일‑검색 기능에 직접 업로드했습니다. 모델이 데이터를 보관하고 자체 이해를 통해 검색할 수 있게 된 것이죠. 사용자가 철분이 풍부한 식품을 물어보면, AI가 이미 보유하고 있는 정보를 바탕으로 해당 정보를 찾아냅니다.
Benefits
- 별도의 벡터 데이터베이스를 관리할 필요가 없습니다.
- 오후 한 번에 설정이 완료됩니다.
- AI가 전체 데이터셋 관계를 파악하므로, 개별 조각이 아니라 전체 맥락을 더 잘 이해합니다.
Privacy‑First Architecture
개인 건강 지표를 다룰 때, 프라이버시는 선택적인 기능이 아니라 기본 토대입니다. 오픈소스 프로젝트라 할지라도, 아키텍처는 데이터 격리를 강제하여 사용자가 자신의 정보만 볼 수 있도록 합니다.
Key decisions
- 사용자가 사용할 AI 제공자를 직접 선택하거나 자신의 API 키를 제공하도록 합니다.
- 이를 통해 민감한 정보가 어디로 전송되는지 사용자가 직접 제어할 수 있어 신뢰를 구축합니다.
Frontend Experience
인터페이스는 Progressive Web App 형태로 Inertia, React, TypeScript를 사용해 구축했습니다. 마치 휴대폰에 설치된 네이티브 앱처럼 부드럽고 익숙한 경험을 제공합니다.
Wrapping Up
이 과정을 통해 가장 복잡한 설정 없이도 스마트하고 안전한 제품을 만들 수 있다는 것을 확인했습니다. 최신 기능을 보다 간단하게 활용하면 작업량을 크게 줄일 수 있으며, 소규모 팀이나 심지어 혼자서도 인프라 미로에 빠지지 않고 고위험 AI 도구를 만들 수 있음을 증명했습니다.
Try It Out
- Repository:
- Live demo:
If you found this helpful, consider dropping a ⭐ on the repo!