HOSUGATOR.
전체 프로젝트
#LangChain#RAG#FastAPI

Dotodo: 음성 입력 기반 AI 개인화 할 일 추천 서비스

개요

LLM 응답 지연 60%↓·API 비용 60%↓. LangChain·ChromaDB RAG + MSA(Backend/Model 분리)로 모델 무중단 업그레이드. Mecab-ko 형태소 + 768D 벡터 Top-K=3 검색, LLM as a Judge 자율 품질 검증 루프.

맥락

사용자 음성(STT)으로 일상 데이터를 축적하고 벡터 유사도 검색으로 맥락에 맞는 할 일을 추천하는 RAG 서비스입니다. 세 가지 핵심 과제가 있었습니다. (1) Cold Start — 신규 사용자 벡터 데이터 부재 시 추천 불가. (2) LLM API 지연 — 동기 처리 시 사용자 응답 대기. (3) 추천 품질 검증 — 사람 없이 추천 결과의 관련성을 자동 검증하는 메커니즘 필요.

핵심 의사결정

Backend(사용자 관리·인증)와 Model Server(AI 추론·RAG)를 별도 AWS EC2 인스턴스로 분리하는 MSA로 설계해 모델 업그레이드 시 Backend 무중단을 확보했습니다. Mecab-ko 형태소 분석으로 한국어 벡터 검색 품질을 개선하고, LLM as a Judge로 추천 품질 자율 검증 루프를 구성했습니다. FastAPI asyncio로 LLM 호출 지연을 최소화했습니다.

구현

Mecab-ko NLP 파이프라인

한국어 형태소 분석과 불용어 제거 후 768D 임베딩 → ChromaDB 코사인 유사도 Top-K=3 검색을 수행합니다. Cold Start는 인기 태스크 기반 초기값 주입으로 최소 추천을 보장합니다.

LLM as a Judge 품질 루프

추천 결과를 LLM이 스스로 관련성·유용성 평가하는 자율 품질 검증 루프입니다. 낮은 점수 추천은 재생성을 트리거해 사람 없이 품질 기준을 유지하며, 비용과 품질의 트레이드오프를 균형있게 조정합니다.

FastAPI asyncio 병렬 처리

LLM API 호출 지연을 asyncio 비동기로 최소화하고, Mecab-ko 정규화·벡터 검색·LLM 호출을 비동기 파이프라인으로 연결했습니다. Backend 무중단 상태에서 Model Server를 독립 재배포합니다.

LLM Judge 비용 최적화

Judge 호출을 추천 Top-K 결과 중 최하위 점수 항목에만 선택적으로 적용해 전체 호출 대비 Judge API 비용을 60% 감소시켰습니다. 품질 임계값 이하일 때만 재생성을 트리거합니다.

아키텍처
성과 & 회고

Top-K=3 개인화 추천을 구현하고, MSA 분리로 모델 업그레이드 무중단을 달성했습니다. asyncio 비동기 파이프라인으로 LLM 응답 지연을 60% 단축하고, LLM as a Judge로 추천 품질을 자율 관리했습니다. Cold Start 초기값 주입은 임시방편으로, 유사 사용자 클러스터링(User-Based CF) 도입이 장기 해법이며 LLM Judge 호출 비용 최적화가 남은 과제입니다.

기술 스택
FastAPILangChainChromaDBMecab-koPostgreSQLAWS EC2 MSASTTSwift(iOS)