성분 근거로 설명하는 화장품 추천 — KG-RAG 기반 추천 시스템
제 24회 BOAZ 빅데이터 컨퍼런스 발표 · 데모 부스 진행
📊 발표 자료 (PPT) · 🖼️ 포스터
- 제 24회 BOAZ 빅데이터 컨퍼런스 발표 및 데모 부스 진행
- 성분 매칭 정합성 상시 95%+ 유지 (평상 ≈ 99.1%, 95% 미만 시 알람) — 실패는 DLQ로 격리해 파이프라인 무중단
- 관측 대상 5개 이기종 환경을 단일 Grafana로 통합, 알람 룰 12종(오케스트레이션 2 · 데이터 정합성 6 · 시스템 4)을 as-code로 관리
- 성분 매칭을 Aho-Corasick(사전 2.6만 키)으로 O(n·m)→O(n+m) 개선 — 사전 완전탐색 대비 약 200배 속도, 결과 동일성은 실데이터 전건 검증
화장품 추천은 "이 성분이 왜 내 고민에 맞는지"를 설명할 수 있어야 신뢰를 얻습니다. 성분–효능–피부고민은 본질적으로 관계 데이터라, 벡터 유사도만 쓰는 일반 RAG로는 연결 근거를 되짚기 어렵습니다. 그래서 Product –CONTAINS→ Ingredient –AFFECTS→ Effect –RELATES_TO→ Concern 지식그래프를 얹어, 피부 고민에서 역방향으로 탐색해 근거 논문 수까지 붙은 성분·제품을 설명 가능한 형태로 추천합니다.
사용자의 피부 고민 (자연어)
→ LLM이 고민·피부타입 추출
→ 지식그래프에서 Concern → Effect → Ingredient → Product 역탐색
→ 근거(효능·논문 수)와 함께 LLM이 추천 답변 생성 (SSE 스트리밍)
| 영역 |
요약 |
| 데이터 파이프라인 |
올리브영(크롤링) · KCIA/EU CosIng 성분 표준 · PubMed 논문 5,506편 → Iceberg 레이크하우스(Bronze/Silver/Gold). 실패 행은 버리지 않고 silver_error(DLQ)에 유형별 적재해 품질 개선 큐로 활용 |
| CDC → 지식그래프 |
원천 로그 없는 외부 데이터를 Iceberg 스냅샷 비교(N-1 vs N)로 변경 감지, Neo4j에 변경분만 증분 반영. Product 3,141 · Ingredient 3,221 · CONTAINS 112,966 · Claim 5,387 |
| 오케스트레이션 |
Airflow DAG 4종, 재실행 단위 = 태스크 경계(DockerOperator). 홈서버 크롤 DAG가 REST API로 EC2 파이프라인을 트리거, batch_date 관통 키로 멱등 보장 |
| 인프라 |
AWS EC2 3대 + S3/Glue/Athena, 홈서버, Vast.ai GPU를 Tailscale VPN으로 연결. GitHub Actions OIDC 키리스 CI/CD, SSM 배포, Athena 비용 가드레일 |
| 통합 모니터링 |
성격이 다른 4가지 수집 경로(Prometheus pull · Alloy push · Neo4j 직접 질의 · dq_api)를 단일 Grafana로 통합, 정합성 패널에서 Athena 드릴다운으로 원본 행 조회 |
| LLMOps |
단일 GPU(vLLM · Qwen 8B)에서 체감 지연 11.8s→2.7s, 과부하 실패율 8.7%→0%, AWQ 양자화로 decode 2.4×, eval-in-CI로 품질 회귀 자동 차단 |