본문 바로가기

SK네트웍스 Family AI캠프 10기/최종 프로젝트

최종 프로젝트. LLM 활용 대화형 상품 추천 시스템

0. Github

 

 

 

1. 프로젝트 일정

 

 

1-1. 프로젝트 기획 (2025. 05. 13 ~ 2025. 05. 23)

 

  • 프로젝트 주제 선정
    • AI 기반 대화형 맞춤 영양제 추천 챗봇 서비스 (TOP; Trend of Pill)
  • 담당 역할 분배
    • 추천 시스템 개발 담당

 

 

1-2. 데이터 수집 및 전처리 (2025. 05. 26 - 2025. 05. 30)

 

  • 데이터 수집
    • Amazon 영양제 상품 데이터 및 리뷰 데이터
    • 한국인 영양소 섭취기준
    • 영양소 효능 데이터
    • 건강 관련 키워드 태그 데이터

 

 

1-3. 추천 시스템 (2025. 05. 13 - 2025. 06. 27)

 

  • Hybrid 추천 시스템
    • 공통 추천
      • LLM 리뷰 감성 분석 추천
    • 개인화 추천
      • LightFM 추천 모델
      • ( + TF-IDF 코사인 유사도)

 

 

1-4. 웹페이지 구현 (2025.06.02 - 2025. 06. 20)

 

  • 마이페이지
    • 좋아요 페이지

 

 

 

2. 프로젝트 회고

 

 

2-1. 담당 역할

 

  • 추천 시스템 개발
  • 웹페이지 개발

 

 

 

2-2. 사용 기술 스택

 

데이터 전처리

  • Python, Pandas

 

추천 시스템

  • 모델 개발 : Python
  • MLOps 파이프라인 : AWS (S3, ECR, ECS, EventBridge)

 

  • Django (HTML + CSS + JavaScript)

 

협업

  • GitHub

 

 

2-3. 프로젝트 담당 업무

 

추천 시스템

  • LLM 리뷰 감성 분석
  • LightFM 추천 모델 개발
  • MLOps 파이프라인 구축
  • Hybrid 추천 시스템 개발

 

웹페이지 개발

  • 마이페이지 - 상품 좋아요 페이지

 

 

 

2-4. 회고

 

이번 프로젝트에서는 많은 것을 배울 수 있었다. 먼저, 추천 시스템에 대해서 말해보자면 사용자의 로그 데이터를 DB에서 조회해서 만약 없다면 공통 추천으로, 있다면 개인화 추천으로 나뉘는 분기를 만들었다. 공통 추천에서는 LLM 리뷰 감성 분석 점수를 기반으로 추천을 진행하게 된다. 여기서 기존 리뷰 별점으로 진행하려고 했지만, 사용자의 리뷰 내용과 별점이 어느 정도 일치하지 않는다는 것을 발견하였다. 따라서 LLM을 통해 리뷰 내용을 다시 분석하였다. 이때, 별점으로 나누는 것이 아니라 긍정/부정으로 나눴는데 그 이유는 리뷰 데이터가 많기 때문에 별점으로 나누는 것은 일관성을 잃을 수 있다고 판단하였기 때문이었다. 그래서 양 극단에 있는 긍정/부정으로만 분류하게 되었다. 이를 통해서 Precision과 Recall 지표를 향상할 수 있었다. 다음으로는 개인화 추천이다. LightFM 모델을 개발하게 되었는데, 사용자의 로그 데이터가 많이 쌓이지 않아서 성능이 엄청 좋게 나오지는 않은 것 같다. 그래도 사용자의 로그 데이터가 계속 많이 쌓인다는 가정 하에 MLOps 파이프라인을 구축하여 모델이 자동으로 업데이트되고 서비스에 반영될 수 있도록 하였다. 기존에 추천 모델을 Docker 환경으로 실행하였기 때문에 해당 Docker 환경을 AWS ECR에 구축하였다. 그리고 해당 컨테이너를 ECR과 EventBridge를 통해 매일 1번씩 업데이트되도록 하였다. 이때, AUC가 0.6 이상일 경우에만 모델을 업데이트하여 S3에 저장되도록 하였는데, 그 이유는 현재 보유한 로그 데이터로 뽑을 수 있는 어느 정도 높은 성능이라고 판단했기 때문이었다. 만약 기대하는 만큼의 성능이 나오지 않는다면 CloudWatch를 통해 로그를 확인하여 문제를 파악할 수 있도록 하였다. 최종적으로는 공통 추천과 개인화 추천 각각에서 상품 리스트에 대한 점수가 나오게 되는데 이를 다시 재정렬하였다. 높은 점수일수록 높은 확률로 상위에 추천될 확률이 높지만, 점수가 낮은 상품도 일정 확률로 상위에 노출될 수 있도록 하였다. 이를 통해 사용자가 새로운 상품을 탐색하여 상품의 다양화를 높일 수 있도록 하였다. 상품 추천은 무조건 인기 있는 상품만 추천하는 것이 아니라 다양한 상품도 추천하여 최대한 많은 상품이 팔릴 수 있도록 하는 것이 중요하기 때문이다. 이렇게 프로젝트에 대한 설명은 끝났고, 이를 통해서 모델을 개발하거나, AWS에 대해서 더 잘 다룰 수 있게 된 것 같다. 또한 이번 프로젝트는 배포까지 하여 실제 사용자를 통한 피드백도 받아보았다. 실제 사용자는 개발한 우리가 원하는 대로 서비스를 사용하지 않는다는 것을 몸소 느낄 수 있었다. 그래서 직접 배포하여 서비스한 경험을 중요하게 보는구나라고 다시 깨달을 수 있었다. 뜻깊은 프로젝트 경험이라고 생각했고, 좋은 경험이었던 것 같다.