추천프로덕트팀은 데이터 기반의 추천 알고리즘과 정교한 탐색 설계를 통해 사용자가 고민 없이 최적의 맛집을 발견하도록 돕는 조직입니다. 여기에 LLM과 다양한 AI 모델을 활용해 실질적인 서비스 문제를 해결하는 AI프로덕트팀이 긴밀하게 호흡을 맞췄습니다. 이번에 소개할 내용은 위 두 팀이 협업하여 고객의 맛집 탐색 고민을 성공적으로 덜어낸 프로젝트에 대한 이야기입니다. 서비스 내에 가득한 별점 5점 리뷰들 사이에서 진짜 […]
The post 별점 뒤에 숨겨진 리뷰의 온도, LLM으로 한 끗 차이가 다른 추천 만들기 first appeared on 우아한형제들 기술블로그. ||
추천프로덕트팀은 데이터 기반의 추천 알고리즘과 정교한 탐색 설계를 통해 사용자가 고민 없이 최적의 맛집을 발견하도록 돕는 조직입니다.
여기에 LLM과 다양한 AI 모델을 활용해 실질적인 서비스 문제를 해결하는 AI프로덕트팀이 긴밀하게 호흡을 맞췄습니다.
이번에 소개할 내용은 위 두 팀이 협업하여 고객의 맛집 탐색 고민을 성공적으로 덜어낸 프로젝트에 대한 이야기입니다. 서비스 내에 가득한 별점 5점 리뷰들 사이에서 진짜 보석 같은 맛집을 찾기 위해, LLM으로 리뷰의 진심을 정교하게 레이블링(labeling)하고 이를 가벼운 모델로 지식 증류(knowledge distillation)하여 서비스에 녹여낸 생생한 여정을 들려드리려 합니다.
1. 문제 정의: "별점 5점인데, 왜 우리는 또 리뷰를 읽고 있을까?"
맛집을 고를 때 여러분은 어떤 과정을 거치시나요? 아마 대부분 가게 목록 상단에 노출된 별점을 먼저 확인하실 겁니다. 그런데 여기서 한 가지 의심스러운 데이터 수치가 발견되었습니다. 대부분의 가게가 높은 점수를 유지하는 ‘별점 인플레이션’ 현상입니다. 아래의 ‘개별 리뷰’ 별점 분포 그래프를 보시면 그 이유를 쉽게 알 수 있습니다. 고객이 남기는 리뷰의 별점이 이미 5점에 압도적으로 몰려 있었던 것이죠.
저희는 이 수치 뒤에 숨겨진 사용자의 여정을 면밀히 관찰했습니다. 사용자들은 별점이 5점인 가게를 보고도 선뜻 주문 버튼을 누르지 않았습니다. 대신, 다시 리뷰 목록에 진입해 실제 텍스트를 하나하나 대조하며 ‘이 점수가 진짜 신뢰도가 있는지’ 스스로 검증하는 과정을 겪고 있었죠. 심지어 이 과정은 가게를 바꿀 때마다 반복되었습니다.
"고객들에게 이런 불편을 계속 주는 게 맞을까? 우리가 미리 리뷰까지 검토해서 ‘진짜배기’ 가게를 추천해 줄 수는 없을까?"
이 질문이 프로젝트의 시작이었습니다. 단순히 데이터가 편향되었다는 의심을 넘어, 실제 별점 분포를 확인한 결과 변별력의 부재라는 실질적인 문제를 확인할 수 있었고, 우리는 기술적으로 이 ‘검증의 수고’를 대신해주기로 했습니다.
2. 해결의 열쇠: LLM, 리뷰의 ‘행간’을 읽는 심판이 되다
단순히 텍스트의 긍정/부정을 판단하는 기존 감성 분석으로는 한계가 명확했습니다. "맛있어요"라는 짧은 평과 "인생 맛집을 찾았습니다"라는 극찬은 모두 ‘긍정’으로 분류되지만, 그 속에 담긴 추천의 무게감은 완전히 다르기 때문입니다.
저희는 학계와 업계에서 평가자로서의 성능이 검증된 LLM-as-a-Judge 방식에 주목했습니다. LLM이 가진 문맥 파악 능력을 활용한다면, 단순한 단어의 조합을 넘어 리뷰어의 ‘진심의 온도’를 정확히 수치화할 수 있을 것이라 판단했습니다.
자동 어노테이션: LLM을 단순한 분석 도구를 넘어, 데이터를 가공하는 ‘심판’으로 활용했습니다.
정교한 수치화: 미묘한 수식어, 재방문 의사, 구체적인 맛 묘사 등을 종합하여 리뷰의 진정성을 점수화했습니다.
대규모 데이터 레이블링: 사람이 직접 읽고 판단하기에는 막대한 비용과 시간이 소요되는 방대한 리뷰 데이터를 LLM-as-a-Jud