[ 추천 시스템 프로젝트 기록 ] LLM 기반 Contents Based Filtering
[ LLM 기반 콘텐츠 추천: CBF의 진화 ]
추천 시스템에서 흔히 쓰이는 방법 중 하나가 **콘텐츠 기반 필터링(CBF, Content-Based Filtering)**입니다. 전통적인 CBF는 아이템이 가진 속성, 예를 들어 영화 장르나 상품 카테고리를 기반으로 추천합니다. 사용자가 느와르 영화를 좋아한다면, 장르가 느와르인 다른 영화를 추천하는 방식이죠.
하지만 전통 CBF에는 몇 가지 한계가 있습니다. 속성이 충분하지 않거나 부정확하면 추천 정확도가 떨어지고, 사용자가 이미 선호한 유형의 아이템만 추천되는 과잉 개인화 문제가 생깁니다. 게다가 신규 아이템이나 신규 사용자는 추천이 어려운 콜드스타트 문제도 있습니다.
이런 한계를 극복하는 방법이 바로 LLM 기반 CBF입니다.
[ LLM 기반 CBF 란? ]
LLM(대규모 언어 모델)은 텍스트나 이미지와 같은 비정형 데이터를 이해하고, 임베딩 벡터라는 형태로 변환할 수 있습니다. 임베딩 벡터는 아이템을 고차원 공간의 좌표로 표현한 것으로, 벡터 간 거리를 통해 아이템의 의미적 유사도를 계산할 수 있습니다.
이를 통해 부족한 속성을 가진 아이템이나 신규 아이템도 추천이 가능하며, 사용자의 취향 변화나 다양한 콘텐츠 유형까지 자연스럽게 반영할 수 있습니다.
[ 임베딩 벡터로 변환 하는 목적 ]
임베딩(embedding)이란 아이템이나 텍스트, 이미지 등 데이터를 벡터 공간의 수치 배열로 바꾸는 과정입니다.
왜 임베딩 벡터로 변환해야 할까요? 그것은 바로 다양한 데이터를 통합하여 비교를 가능하게 하기 위함입니다.
텍스트나 이미지 같은 비정형 데이터는 직접 비교가 어렵습니다. 하지만 임베딩 벡터로 변환하면 코사인 유사도, 유클리드 거리 등으로 쉽게 비교가 가능해집니다.
[ LLM 기반 CBF 추천 과정 ]
- 아이템 데이터 준비
영화 줄거리, 상품 설명, 이미지 등 추천 대상 데이터를 수집하고 정제합니다. - 아이템 임베딩 생성
LLM을 이용해 각 아이템을 벡터로 변환합니다. 이렇게 하면 의미 기반 유사도를 계산할 수 있습니다. - 사용자 프로파일링
사용자가 이전에 본 아이템 벡터를 평균하거나 가중합하여 사용자 취향 벡터를 만듭니다. - 유사도 계산
사용자 벡터와 아이템 벡터 또는 아이템 간 벡터 유사도를 계산합니다. 코사인 유사도, 내적 등을 사용합니다. - 추천 생성
유사도가 높은 Top-N 아이템을 추천하고, 이미 본 아이템은 제외할 수 있습니다. - 추천 평가 및 개선
Precision, Recall, NDCG 등의 지표로 추천 품질을 평가하고, 임베딩 모델이나 사용자 벡터 계산 방식을 개선합니다.
[ 어떻게 활용하면 좋을까? ]
사용자가 어떤 상품을 클릭하거나 본 순간, 바로 그 상품과 의미적으로 비슷한 다른 상품들을 추천할 수 있습니다. 이 방식은 데이터의 속성이 부족하거나 신규 상품이여도 설명 텍스트만 있으면 추천이 가능하다는 특징이 있습니다.
"방금 본 상품과 비슷한 상품 추천" 같은 방식으로 기능을 구현할 수 있습니다.