GPT를 활용한 카탈로그 아이템 생성

2 weeks ago 7

배달의민족, 그리고 AI가 만드는 상품 카탈로그

우아한형제들의 서비스 비전은 "문 앞으로 배달되는 일상의 행복"입니다. 배달의민족은 고객이 원하는 음식을 빠르고 안전하게 배달하며 성장해 왔습니다. 이제는 그동안의 경험을 바탕으로 식자재, 생필품, 가전제품 등 다양한 상품으로 서비스 범위를 확장하고 있으며, 이에 따라, 배달의민족을 통해 음식을 주문하는 것처럼, 생필품이나 생활용품을 구매하는 경우도 점점 많아지고 있습니다. 급하게 필요한 수건이나 양말 같은 생필품을 빠르게 배달받을 수 있다는 점은 매우 편리합니다. 하지만 상품의 종류가 많아질수록 원하는 제품을 고르는 데 시간이 오래 걸리거나, 어떤 상품을 선택해야 할지 고민이 늘어나는 경우도 생깁니다.

이럴 때 필요한 것이 바로 상품 카탈로그입니다. 상품 카탈로그는 방대한 상품 정보를 체계적으로 정리해 고객이 원하는 제품을 쉽게 찾을 수 있도록 도와주는 중요한 도구입니다. 하지만 상품이 끊임없이 추가되는 환경에서는 새로운 상품의 상품 카탈로그를 신속하고 정확하게 생성하는 것은 쉽지 않습니다.

저희는 이 문제를 해결하기 위해 AI/ML 기술을 활용한 상품 카탈로그 생성 프로젝트를 진행하게 되었습니다. 이번 글에서는 GPT를 활용해 상품 속성값을 자동 생성하는 과정과, 이를 최적화하기 위해 AI/ML 기법을 활용한 경험을 공유하고자 합니다. GPT 모델을 활용한 속성값 생성의 한계점과 해결 방법, 그리고 이 프로젝트가 실제 어떤 변화를 가져왔는지 함께 살펴보겠습니다. 🚀

상품 카탈로그란?

상품 카탈로그는 다양한 제품 정보를 체계적으로 정리한 데이터베이스로, 전자상거래와 리테일에서 핵심적인 역할을 합니다. 여기에는 고유 식별자, 명칭, 설명, 가격, 카테고리, 그리고 색상이나 크기 같은 속성들이 포함됩니다.

효율적인 상품 카탈로그 관리는 검색 최적화, 추천 시스템, 그리고 재고 관리의 정확도를 높이는 데 큰 도움이 될 수 있습니다.

예를 들어 그림 1과 같이 강아지 간식을 찾고 있는 고객이 있을 때, 상품 카탈로그를 기반으로 적절한 필터가 구성되어 있지 않다면 100개가 넘는 상품에 대해서 필요한 상품을 찾아야 합니다. 하지만 상품 카탈로그를 기반으로 적절한 필터가 구성되어 있다면 고객의 요구사항(습식 사료, 뼈/관절에 도움을 줄 수 있는)에 맞는 적합한 상품을 손쉽게 찾을 수 있습니다. 즉, 잘 구성된 상품 카탈로그는 고객이 원하는 제품을 빠르게 찾을 수 있도록 돕는 중요한 요소입니다. 🛍️✨

[그림 1] 상품 카탈로그를 활용한 강아지 간식 검색 예시

하지만, 상품 카탈로그를 만드는 데는 많은 시간이 걸립니다. 배달의 민족은 협력사 등을 통해 지속적으로 입고되는 방대한 양의 상품에 대해서 상품 카탈로그를 만들고 있는데요. 이 작업을 신속하게 수행하여 고객에게 정확한 결과물을 제공하는 것은 쉽지 않은 도전의 연속이었습니다.

특히 기존에는 각 상품의 속성값을 수작업으로 추출하고 정리해야 했기 때문에 많은 리소스가 필요했으며, 동시에 일관된 기준을 유지해야 했기 때문에 상품이 종류가 늘어나 업무에 투입되는 리소스가 많아지면 많아질수록 어려움이 커졌습니다.

이러한 어려움을 극복하기 위해 AI/ML 기술을 활용한 상품 카탈로그 생성 프로젝트는 꼭 필요했습니다.

GPT를 활용한 상품 카탈로그 생성 모델 개발

GPT를 활용한 상품 카탈로그 생성: 도전과 해결

상품 카탈로그 생성 프로젝트의 목표는 (1) 상품명과 (2) 상품 카테고리를 기반으로 (가) 상품 브랜드, (나) 제조사, (다) 세부 속성값을 생성하는 것이었습니다. 처음에는 기존 상품 카탈로그 데이터를 활용해 직접 모델을 학습하려 했습니다. 그러나 수천 가지가 넘는 상품 카테고리에 속한 수십만 개의 상품에 대해 모델을 학습시키기에는 데이터가 턱없이 부족했습니다. 다시 말해서, 상품명과 상품 카테고리를 기반으로 상품 속성값을 정확하게 예측하려면 방대한 양의 학습 데이터가 필요했지만, 실제로 확보할 수 있는 데이터가 한정적이어서 충분한 성능이 나오지 않을 것 같았습니다. 그뿐만 아니라, 주어진 입력값을 기반으로 예측할 수 있는 속성값의 범위가 매우 제한적이었고, 아예 학습할 데이터조차 없는 상품 카테고리도 일부 존재했습니다.

이러한 이유로, 기존 데이터를 활용해 직접 모델을 학습하는 방식보다는 사전 학습된 거대한 언어 모델인 GPT를 활용하는 것이 더 적절한 해결책이라고 판단했습니다.

[그림 2] 상품 카탈로그 생성 예시

GPT는 방대한 양의 언어 데이터를 기반으로 학습되었기 때문에, 다양한 상품 카테고리에 대해 유연하게 속성값을 생성할 수 있으며 이를 기존의 상품 카탈로그 데이터와 결합하면 보다 일관성 있고 신뢰도 높은 정보를 생성할 수 있을 것으로 기대했습니다. 하지만 GPT를 활용한다고 해서 모든 문제가 해결되는 것은 아니었습니다. 몇 가지 중요한 도전 과제가 있었고, 이를 해결하기 위해 추가적인 접근 방식을 도입해야 했습니다.

GPT는 강력하지만, 우리 도메인의 기준은 알지 못했다

GPT는 일반적인 언어 지식은 풍부하지만, 특정 도메인(예: 배달의 민족의 상품 카탈로그 생성 기준)에 맞춰 학습된 모델은 아니었습니다. 즉, 일반적인 GPT 모델은 라면, 과자, 음료 등 다양한 상품군을 알고 있지만, 배달의민족에서 어떤 방식으로 상품 속성을 정의하는지에 대한 기준이 다소 부족했습니다. 예를 들면, 신라면 블랙 봉지 라면의 매운맛 정도를 (1) 순한 맛, (2) 보통 매운맛, (3) 매우 매운맛 중 어떤 속성으로 분류할 것인지에 대한 판단이 필요했습니다. 이 과정에서 GPT 모델과의 온도차를 줄이기 위해서 RAG(Retrieval-Augmented Generation) 기법을 적용했습니다.

RAG는 단순히 GPT가 입력된 데이터를 기반으로 응답을 생성하는 것이 아니라, 사전에 학습된 정보 외에도 별도의 검색 과정을 통해 관련 데이터를 참조하도록 하는 기술입니다. GPT가 특정 도메인에 대한 맥락을 더 풍부하게 이해하고, 보다 정확한 정보를 생성할 수 있도록 할 수 있습니다.

이를 위해서, 생성해야 하는 상품 카탈로그와 유사한 상품 카탈로그(기존에 작업자를 통해 만들어진)를 데이터베이스에서 찾아 제공함으로써, 모델이 배달의민족 내 작업자와 유사한 기준으로 일관성 있고 신뢰도 높은 속성값을 생성할 수 있도록 했습니다. 즉, GPT에게 상품명과 상품 카테고리만을 제공하고 결과를 생성하는 것이 아니라, 과거에 생성한 데이터 중 유사한 상품 카탈로그를 검색해서 퓨샷(few-shot, 언어 모델에게 2가지 이상의 예시 답변을 제공하는 방식) 형태로 함께 제공하는 방법을 사용하였습니다.

유사한 상품을 찾으려면 상품 카탈로그 사이의 유사성을 측정할 필요가 있었습니다. 유사성 측정은 BM25 알고리즘을 활용하여 텍스트 기반 검색의미 기반의 벡터 유사도 검색을 앙상블 방식으로 결합했습니다. 벡터 유사도를 측정하기 위해서는 상품 카탈로그를 벡터 형태로 변환해야 하므로, 트랜스포머 기반 자연어 처리 모델 (transformer 모델, 어텐션 메커니즘을 기반으로 병렬 연산이 가능하며, 문맥을 효과적으로 이해할 수 있는 딥러닝 모델) 을 파인튜닝하는 작업을 진행했습니다. 검색된 정보로 AI가 참고할 수 있는 맥락이 더욱 풍부해지고, 결과적으로 보다 정확한 속성값을 생성하는 것을 확인할 수 있었습니다.

[그림 3] RAG 활용한 상품 카탈로그 생성 예시

GPT는 믿을 만한가?

GPT가 생성한 상품 속성값이 어느 정도 정확하다고 해도, 그것을 절대적으로 신뢰할 수 있는지는 또 다른 문제였습니다. 상품 카탈로그는 실제 운영 환경에서 활용되는 데이터이기 때문에, 잘못된 정보가 포함되면 사용자 경험에 직접적인 영향을 줄 수 있었습니다. 이러한 민감한 데이터를 실제 운영 환경에서 사용하기 위해서는 생성된 결과물에 대한 정량화된 평가 지표가 필요했습니다. 생성된 결과물만 제공하는 것이 아니라 그 결과물의 신뢰도를 객관적으로 측정할 수 있는 정량적 점수를 함께 제공하는 것이 중요하다고 판단한 것입니다.

GPT에게 스스로 평가를 시켜보자!

평가 지표에 대한 성능 측정을 위해 GPT-4 Turbo 모델을 통해 속성값 및 속성값에 대한 평가점수를 생성하였고, 평가점수 구간별 생성된 속성값이 실제 카탈로그의 속성값과 일치하는지를 기준으로 정확도를 측정함으로써 평가점수가 얼마나 유의미한지를 확인했습니다. 확인 결과, GPT-4 Turbo가 부여한 점수는 아래 차트와 같이 신뢰도를 정량적으로 측정하는 지표로 사용하기에는 부족함이 있었습니다. 점수 구간별 변별력이 충분하지 않아(40점~90점을 받은 그룹들은 서로 간의 유의미한 정확도 차이가 크게 없었습니다.), 생성된 데이터에 대한 신뢰도를 제대로 반영하지 못하는 한계가 있었습니다.

그러던 중, GPT-4o가 새롭게 출시되면서 동일한 실험을 다시 진행하였습니다. 결과적으로, GPT-4o는 평가 점수의 구간을 나누어 정확도를 분석했을 때 유의미한 상관관계를 보였고, 이를 기반으로 판단했을 때 생성된 점수가 제법 신뢰할 만한 수준이었습니다. 그 밖의 특징으로, GPT-4 Turbo 모델 대비 GPT-4o 모델의 경우 더 많은 생성 값에 대해서 더 높은 평가점수를 부여했고 실제로 정확도 측면에서도 더 높은 성능을 보였습니다.

하지만, 내부 검토 결과 GPT-4o의 평가 점수 역시 평가 지표로 활용하기에는 아직 기대하는 목표 수준에 미치지 못하는 부분이 있었습니다. 또 다른 문제는 GPT가 생성한 평가 점수를 직접 조정하거나 튜닝할 수 없다는 점이었습니다. GPT는 점수의 분포나 기준을 궁극적으로는 모델 내부에서 결정하기 때문에, 특정한 방향으로 개선하려면 모델 자체를 파인튜닝해야 했습니다. 하지만, GPT-4o는 오픈 웨이트 모델(Open-weight model)이 아니기 때문에 제어하기에 어려움이 있는 영역이었습니다. 이 때문에 GPT를 활용한 평가 방식 대신, 보다 실용적인 방법이 필요했습니다.

[그림 4] ChatGPT 모델 별 평가점수에 따른 정확도 추이

GPT 평가 점수의 한계, 대안은 없을까?

기존처럼 GPT가 자체적으로 평가 점수를 부여하는 방식에서 벗어나, 보다 체계적인 방법으로 평가를 시도했습니다. GPT가 생성한 상품 속성값과 평가 점수, 그리고 입력값(상품명과 상품 카테고리) 등을 활용하여, 생성된 속성값이 실제 정답인지 예측하는 이진 분류 모델(텍스트 분류 모델)을 개발하였습니다. 이를 통해, GPT가 생성한 속성값의 평가 점수를 개선하고, 필요에 따라 모델을 직접 조정할 수 있는 기반을 마련하고자 했습니다. 추가적으로, 상품 카탈로그 데이터가 지속적으로 축적됨에 따라 모델의 성능도 꾸준히 개선되는 장점도 있습니다.

텍스트 분류 모델을 활용한 평가 점수 산출

앞서 언급했던 것과 같이 학습할 모델의 목적은 GPT를 통해서 생성된 결과물의 정답 유무를 예측하는 모델이었습니다. 이를 위해 학습 데이터 셋을 다음과 같이 구성하였습니다.

  • 입력값 : GPT가 생성한 상품 속성값 및 평가 점수, 상품명, 상품 카테고리
  • 출력값 : 실제 상품 카탈로그 데이터와 GPT가 생성한 속성값이 일치하면 1, 그렇지 않으면 0

이 데이터 셋을 기반으로 트랜스포머 모델을 활용한 텍스트 분류 모델을 학습시켰습니다.

[그림 5] 텍스트 분류 모델을 활용한 상품 속성값 평가

새로운 평가 방식의 효과

새롭게 개발한 모델의 가장 큰 장점은, GPT가 자체적으로 생성한 평가 점수를 직접 활용하는 대신, 이를 이진 분류 모델의 입력값으로 사용하고, 최종적으로 이진 분류 모델이 예측한 점수를 평가 점수로 활용했다는 점입니다. 그 결과, 이진 분류를 통해 예측한 점수와 정확도 사이의 상관관계 및 최상위 점수 구간의 정확도가 내부 기준에 충족할 수준으로 매우 유의미하게 상승하였습니다.

상품 카탈로그 생성 모델 적용 후, 이렇게 달라졌어요

상품 카탈로그 생성 모델은 실제 상품 카탈로그 생성 작업에 도입되었습니다. 현재는 모든 과정을 AI가 자동으로 생성하는 형태는 아니고, 작업자가 상품 카탈로그를 입력하는 과정을 임곗값 이상의 평가 점수를 받은 속성값을 자동으로 채워주며 돕는 형태로 도입이 되었습니다.

가장 직관적인 도입 효과는 카탈로그 아이템 생성 효율성 증가였습니다. 모델 적용 전 월 대비 적용 후 첫 달 신규 카탈로그 생성 수가 55.3 % 증가하였으며, 사용자의 숙련도가 증가함에 따라서 지속적으로 증가할 것을 기대하고 있습니다.

또한, 도입 후 GPT에게 제공할 수 있는 데이터와 검수 모델이 학습할 수 있는 데이터가 지속적으로 증가함에 따라서, 그림 6과 같이 상품 카탈로그 생성 시 제공되는 상품 속성값의 정확도가 꾸준히 올라가고 있습니다. (매월 생성하는 상품의 다양성 및 기타 요인의 통제의 어려움으로 인해 정확한 수치를 측정하는 것은 한계가 있지만, 뚜렷한 상승 트렌드를 확인할 수 있었습니다.)

[그림 6] 월별 작업자에게 제공되는 상품 카탈로그 속성값의 정확도 평균

앞으로의 방향

GPT는 계속 발전하고 있으며, 이에 맞춰 상품 카탈로그도 더욱 유익한 정보를 제공할 수 있도록 지속적으로 개선해 나갈 예정입니다. 특히, 최근 다양한 GPT 모델이 검색 기능을 지원하는 만큼, 모델이 학습하지 못한 속성값을 보완하기 위해 검색 기능을 적극적으로 활용하는 방안을 검토하고 있으며, 상품 이미지 등의 추가 데이터를 활용해 RAG 성능을 향상시키는 방법도 고려 중입니다.

앞으로도 AI를 활용해 사용자 경험을 지속적으로 향상시키고, 더 정교하고 유용한 서비스를 제공할 수 있도록 발전시켜 나가겠습니다! 😊

👉 관련 글 보러 가기

Read Entire Article