주문 고객 57.5% 늘린 GS SHOP의 비밀: 숏폼 클릭을 '취향'으로 읽는 추천 시스템

헤드라인

고객이 워킹화 숏폼을 클릭했어요. 추천 시스템이 기록한 건 "운동화 선호". 맞는 말이긴 한데, 뭔가 허전하잖아요. 고객이 진짜 반응한 건 운동화라는 카테고리가 아니라 영상이 보여준 "편안하고 활동적인 일상"이라는 맥락이었을 수 있거든요. 그 차이를 시스템이 읽지 못하면? 비슷한 운동화만 끝없이 반복 추천하게 돼요.

GS SHOP 추천팀이 이 간극을 파고들었더니, A/B 테스트에서 주문 고객 수가 57.5% 뛰었어요. 클릭 UV +21.7%, 전환율(CR) +29.4%. 영상에서 뽑아낸 '소구 포인트'라는 새 신호를 기존 추천 엔진 위에 얹은 결과예요. (기존 엔진을 갈아엎은 게 아니라 "얹었다"는 게 포인트예요.)

이 글은 "쇼핑에 영상을 더하다" 시리즈의 Part 3에 해당하는 이야기예요. Part 1에서는 숏픽 추천이 어떻게 진화해 왔는지, Part 2에서는 왜 영상을 중요한 신호로 봐야 하는지를 다뤘고요. 이번 편은 그 다음 이야기, 영상에서 읽어낸 의미를 실제 추천 시스템에 어떻게 연결했는지 그 과정을 정리한 거예요. 읽다 보면 "아, 커머스 추천이 이렇게 움직이는구나" 싶은 지점이 꽤 있더라고요.

GS SHOP은 상품 데이터만 많은 커머스가 아니에요. 방송 영상, 숏폼 콘텐츠, 고객 행동 데이터가 함께 축적되는 환경이거든요. 그래서 이 문제는 단순히 "영상을 분석해 보자"는 실험이 아니라, 기존 커머스 추천 시스템이 활용하지 못했던 신호를 실제 서비스에 어떻게 편입할 것인가에 중점을 둔 프로젝트였어요.

"운동화 선호"라고 적으면 끝인 줄 알았다

홈쇼핑과 커머스 서비스에서 영상은 오래전부터 중요한 자산이었어요. 상품명, 가격, 카테고리, 리뷰, 대표 이미지 같은 정형 정보만으로도 기본적인 추천은 충분히 가능하고, 실제로 많은 추천 시스템이 이런 신호들 위에서 잘 동작해 왔죠.

근데 GS SHOP이 다루는 콘텐츠는 그보다 훨씬 풍부해요. 라이브 방송에는 쇼핑호스트의 설명, 시연 장면, 사용 맥락, 비교 포인트가 담겨 있고, 숏픽 같은 숏폼에는 짧은 시간 안에 상품의 핵심 메시지와 사용 장면이 압축돼 있거든요. 같은 패션 상품이라도 영상에서는 "체형 커버", "출근룩", "편안한 착용감"처럼 전혀 다른 메시지가 강조될 수 있고, 같은 리빙 상품이라도 "캠핑", "전자레인지 사용 가능", "정리 수납"처럼 고객이 반응하는 포인트가 달라질 수 있잖아요.

문제는 기존 추천 시스템이 이런 차이를 대부분 상품 중심의 정형 신호로만 읽고 있었다는 점이에요. 결국 간극 문제. 영상 자산은 넘치는데, 추천 시스템이 그 안의 의미를 읽지 못하고 있었던 거죠. 이 간극을 메우는 게 이번 작업의 출발점이었어요.

추천 시스템과 영상 자산 사이의 간극

숏픽 추천은 꾸준히 발전해 왔지만, 한 가지 전제는 꽤 오랫동안 유지되고 있었어요. 숏픽이 화면에 노출되더라도, 어떤 영상을 보여줄지는 결국 상품 추천 결과에 따라 결정됐거든요. 추천의 중심은 여전히 상품이었고, 입력 신호도 상품 ID, 카테고리, 브랜드 같은 정형 데이터가 대부분이었어요.

상품 추천 관점에서는 충분히 합리적이었죠. 오랫동안 검증된 방식이고, 안정적이었으니까요. 근데 영상 추천 관점에서는 분명한 한계가 있었어요.

고객이 무엇을 클릭했는지는 볼 수 있었지만, 왜 반응했는지는 알기 어려웠다.

고객이 어떤 숏픽을 클릭하면, 시스템은 이걸 "이 상품을 좋아했다" 정도로만 해석했거든요. 실제로는 상품 자체보다 영상이 전달한 분위기, 사용 상황, 스타일링, 기능성에 더 크게 반응했을 수도 있는데 말이에요. 영상은 노출되고 있었지만, 영상 안에 담긴 맥락은 추천에 거의 쓰이지 못하고 있었던 셈이에요.

이 구조가 유지된 건 나름 이유가 있었어요. 기존 추천 시스템이 상품 중심으로 잘 발전해 왔고, 영상을 보조적으로 보여주는 게 더 단순하고 안정적이었으니까요. 근데 숏폼 소비가 커질수록 점점 난감해졌더라고요. 고객은 분명히 영상에 반응하는데, 시스템이 읽을 수 있는 건 여전히 상품 코드뿐이었으니까.

클릭 하나에 담긴 취향을 통째로 읽겠다는 발상

그래서 GS SHOP 팀은 숏픽 클릭을 다르게 보기 시작했어요.

영상 클릭은 단순한 상품 선호가 아니라, 고객 취향의 단서를 남긴다.

워킹화 숏폼을 클릭한 고객을 다시 예로 들어볼게요. 기존에는 "운동화 선호"로 해석하기 쉬웠죠. 근데 실제로는 편안함, 기능성, 활동적인 라이프스타일, 실용적인 코디에 반응했을 가능성이 더 크다는 거예요.

이 차이가 왜 중요하냐면요. "운동화"라는 카테고리 하나로 해석하면 비슷한 운동화만 반복 추천하게 되잖아요. 근데 "편안하고 활동적인 스타일"이라는 맥락으로 해석하면 다른 상품군까지 자연스럽게 연결할 수 있거든요. 와이드 청바지에 반응한 고객한테도 마찬가지예요. "청바지 선호"가 아니라 "편안한 핏"이라는 맥락을 읽으면, 슬랙스나 티셔츠 관련 숏픽까지 추천할 수 있게 돼요.

좀 과장하면, 고객은 꽤 풍부하게 반응하고 있었는데 시스템이 너무 단순하게 받아쓰고 있었던 거예요. 생각해보면 당연한 건데, 아무도 안 했던 거죠. 그래서 숏픽 클릭을 상품 선호가 아니라 맥락 선호, 혹은 취향 신호로 해석해 보기로 한 거예요.

여기서 핵심 개념이 등장해요. 소구 포인트. 영상이 전달하는 메시지를 추천 시스템이 이해할 수 있도록 구조화한 거예요. 고객이 영상에서 실제로 반응했을 만한 핵심 메시지 — "전자레인지 OK", "캠핑용", "실용성", "기능성", "활용도 높은 스타일링" 같은 표현들이 소구 포인트가 되는 거죠.

중요한 건, 카테고리나 브랜드는 기존 추천 신호가 이미 잘 설명하고 있었다는 점이에요. 그래서 영상에는 영상만이 드러낼 수 있는 신호를 맡기기로 했어요. 역할 분리. 영상에서 소구 포인트를 추출하고, 이를 임베딩해 비슷한 맥락의 영상을 찾을 수 있도록 설계한 거예요. 이렇게 하면 고객이 최근 반응한 영상과 비슷한 결을 가진 다른 영상이나 상품을 추천 후보로 활용할 수 있게 되거든요.

소구 포인트를 벡터로 바꾸는 과정에서 삽질 한 번

처음에는 영상 전체를 설명하는 긴 텍스트를 임베딩해서 유사 영상을 찾는 방식을 시도했더라고요. 결과는 꽤 그럴듯해 보였대요. 근데 자세히 들여다보니, 비슷하다고 묶이는 영상들이 대부분 같은 카테고리나 같은 브랜드 숏폼이었어요. 영상을 열심히 읽었는데 결국 상품 코드 근처를 맴도는 결과. 원점이었죠.

소구 포인트 임베딩과 차원 축소 과정

방향을 바꿨어요. 카테고리·브랜드 선호는 기존 상품 추천이 맡고, 영상 쪽은 소구 포인트 키워드 자체를 더 잘 표현하도록 역할을 나눈 거예요. Pegasus와 Claude를 통해 소구 포인트를 추출하고, 그 벡터를 기반으로 비슷한 맥락의 영상을 찾도록 했어요. 결과적으로 카테고리가 같아서 비슷해 보이는 게 아니라, 전달하는 메시지가 비슷한 영상끼리 묶이기 시작한 거죠. 이게 의미 있는 이유가 뭐냐면, "캠핑용 접시"와 "캠핑용 테이블"이 카테고리는 완전히 다르지만 소구 포인트에서는 가까워질 수 있다는 거예요.

임베딩 차원도 고민이었더라고요. 소구 포인트 임베딩은 처음에는 더 높은 차원으로 다뤘지만, 실서비스에서는 추천 품질뿐 아니라 인덱싱 비용, 조회 속도, 운영 복잡도도 함께 봐야 하잖아요. 그래서 정보 보존율, 복원 오차, 유사도 유지율, 검색 속도 등을 비교하면서 차원 축소를 진행했고, 운영 가능한 수준으로 최적화했대요. 상품 임베딩과 같은 차원으로 맞춰뒀더니 운영 측면에서도 훨씬 단순한 구조가 됐다고요. (차원을 맞춰놓으면 인프라 단에서 관리할 게 줄어들잖아요.)

기존 엔진을 갈아엎지 않고 위에 얹었다

잠깐 딴 얘기인데, 추천 시스템 개선 프로젝트에서 가장 흔한 실수가 뭔지 아세요? "처음부터 다시 만들자"예요. 품질 검증, 운영, fallback, 기존 지표와의 비교가 전부 어려워지거든요. GS SHOP 팀은 정반대로 갔어요.

영상 신호를 도입한다고 해서 기존 추천 엔진을 처음부터 다시 만들지 않았어요. 기존에 상품 점수, 카테고리 선호, 인기도, 평점 같은 신호들이 추천의 중심을 이루고 있었는데, 여기에 "이 고객이 최근 반응한 영상과 얼마나 비슷한 맥락인가"라는 영상 신호를 추가해서 최종 추천 점수를 함께 계산하도록 설계한 거예요.

이걸 Hybrid라고 불렀대요. 기존 추천의 강점은 유지하되, 영상이 전달하는 의미를 새로운 레이어로 더한 방식이에요. "다 뜯어고치기"보다 "잘 쓰던 엔진에 새 감각을 붙이는" 쪽에 가까웠던 거죠.

이 선택은 기술적으로도 중요했어요. 새로운 추천 시스템을 별도로 만들면 품질 검증, 운영, fallback, 기존 지표와의 비교가 모두 어려워지잖아요. 반면 기존 추천 로직 위에 영상 신호를 레이어처럼 얹으면, 기존 시스템의 안정성을 유지하면서도 새 신호의 효과를 상대적으로 명확하게 검증할 수 있거든요. 잘 쓰던 엔진에 새 감각을 붙이는 쪽이었어요. (솔직히 현실적인 판단이었다고 봐요. 추천 시스템을 통째로 갈아엎자고 하면 승인 나기도 전에 1년이 지나니까요.)

다시 본론으로 오면, 이 Hybrid 구조 안에서 영상과 행동이 각각 다른 역할을 맡았어요.

영상은 의미를 담고 있고, 행동은 의도를 담고 있다.

영상 쪽에서는 소구 포인트를 임베딩한 뒤 OpenSearch에서 유사한 맥락을 찾도록 했어요. 행동 쪽에서는 고객이 최근 어떤 영상을 클릭하고 시청했는지, 어떤 맥락에 반응했는지를 Redis에 빠르게 조회할 수 있는 형태로 쌓았고요. 추천 시점에 API가 이 두 정보를 동시에 조회해서 최종 추천을 만드는 거예요. "이 영상이 어떤 메시지를 갖고 있는가"와 "이 고객이 최근 어떤 메시지에 반응했는가"를 한 번에 보는 셈이죠.

영상 의미 + 행동 의도를 결합하는 3단계 아키텍처

기술적으로 보면 전체 구조는 세 단계로 나뉘어요.

이렇게 역할을 나눈 이유가 뭐냐면요. 영상 의미를 계산하는 작업은 상대적으로 무겁잖아요. 반면 사용자 반응은 빠르게 갱신돼야 하고, 최종 추천 응답은 짧은 시간 안에 끝나야 해요. 한 시스템이 모든 걸 한 번에 다 잘해주기를 기대하기보다는, 각 단계가 잘하는 일을 나눠 맡기는 편이 훨씬 현실적이었다는 거죠.

상품 클릭과 썸네일 클릭을 같은 무게로 보지 않았다

행동 신호를 설계할 때 흥미로운 결정이 있었어요. 단순 노출을 그대로 선호도로 보지 않았다는 점이에요. 의도 수준이 다른 행동을 구분해서 반영했거든요.

구매·전환에 가까운 행동 — 상품 클릭, 상품 상세 진입, 이벤트 클릭 — 에는 높은 가중치를 줬어요. 반면 재생, 끝까지 시청, 썸네일 클릭처럼 관심을 보여주는 행동은 그보다 낮은 단계의 선호 신호로 반영했고요.

정리하면 행동 신호는 크게 두 층으로 나뉘어요.

보였다는 사실 자체보다 실제로 반응했는가를 더 강한 신호로 본 거예요. 숏폼 영역은 노출 위치나 UI 구조의 영향이 크니까, 단순 impression까지 선호 신호로 쓰면 의도가 오히려 흐려질 수 있다고 판단한 거죠. 이건 꽤 중요한 설계 결정이에요. 자동 재생되는 영상이 많으니까, 그냥 노출된 것과 실제 관심을 갖고 본 것을 구분하지 않으면 노이즈만 쌓이거든요.

시간도 고려했어요. 최근 행동일수록 더 큰 의미를 갖도록 반감기(half-life) 개념을 적용해서 점수가 시간에 따라 자연스럽게 감쇠되도록 했대요. 오래전에 클릭한 워킹화보다 어제 클릭한 캠핑용품이 지금의 관심을 더 잘 반영하니까요.

선호도 저장도 무한정 누적하지 않았어요. 실시간 조회가 필요한 데이터인 만큼 사용자별 상위 선호 항목만 유지해서 조회 비용과 응답 시간을 함께 제어했고요. 무한정 쌓으면 Redis 부하도 커지고, 오래된 관심사가 최근 관심사를 묻어버리는 문제도 생기니까요.

개념적으로 보면, 낮은 점수 구간은 "얼마나 오래 봤는가"에 가깝고, 높은 점수 구간은 실제 클릭이나 상세 진입 같은 행동이 붙으면서 올라가는 거예요. 단순 시청과 적극적인 반응을 같은 무게로 보지 않도록 설계한 거죠.

5단계 점수 계산, 그리고 마지막에 다양성을 한 번 더 챙기다

최종 추천은 다섯 단계를 거쳐 계산됐어요.

1. 상품 점수: 최근 클릭한 상품 기준 유사 상품을 찾고, 최근에 클릭한 상품일수록 더 높은 가중치를 둠 2. 숏폼 점수: 최근 선호한 숏폼 기준 유사 숏폼을 찾고, 해당 숏폼에 대한 사용자 선호 점수를 함께 반영 3. 카테고리 점수: 사용자의 대/중 카테고리 선호를 반영해, 평소 관심을 보이던 축에 맞는 상품에 점수를 더함 4. 최종 점수: 상품과 숏폼 신호를 중심에 두고, 카테고리와 평점은 보조 신호로 활용해 가중 합산 5. 후처리: MMR(Maximal Marginal Relevance)을 적용해 유사도뿐 아니라 다양성까지 고려

5단계 추천 점수 계산 파이프라인

이 과정에서 단순히 비슷한 것을 찾는 데서 멈추지 않았어요. 고객이 좋아할 가능성이 높은 후보를 모으고, 그 안에서 너무 비슷한 결과만 반복되지 않도록 다시 한 번 정리해 주는 구조인 거죠.

MMR이 왜 필요했냐면요. GS SHOP 같은 커머스에서는 정확도만큼이나 구성의 다양성이 중요하거든요. 비슷한 맥락을 잘 맞추더라도 결과가 지나치게 한쪽 카테고리나 유사 상품군에 쏠리면 서비스 품질은 오히려 떨어져요. 그래서 MMR은 단순한 후처리가 아니라 사용자 경험을 보정하는 핵심 단계로 작동했어요.

실서비스 연결 과정에서는 추천 품질만큼 서빙 안정성도 신경 써야 했더라고요. Redis 조회와 상품/숏폼/카테고리 추천 계산은 가능한 한 병렬로 처리해 지연 시간을 줄였고, 여러 소스에서 같은 상품이 동시에 추천되면 하나로 묶어 점수를 통합했어요. 여기서 재밌는 건, 여러 추천 소스에서 반복 등장하는 후보에 소량의 추가 점수를 줬다는 거예요. "여러 관점에서 동시에 추천된 후보"라는 의미를 반영한 건데, 완전히 새로운 규칙을 더한 건 아니지만 여러 신호에서 공통으로 살아남은 후보를 위로 올려주는 데 도움이 됐대요.

추천 결과가 충분하지 않거나 예외 상황이 생기면 인기도 기반 결과로 자연스럽게 보완하는 fallback도 마련했어요. 기술적으로는 작은 디테일일 수 있지만, 실제 서비스에서는 이런 장치들이 사용자 경험을 안정적으로 유지하는 데 꽤 중요했대요.

온라인 서빙에서 응답 시간은 생명이잖아요. Redis 조회와 추천 파이프라인 전반에 적절한 타임아웃도 걸어뒀고요. 추천 품질이 아무리 좋아도 응답이 늦으면 끝이에요. 모델 성능과는 다른 차원의 운영 조건이죠.

새 신호를 도입하면서도 기존 서비스 운영 체계를 크게 흔들지 않는 게 중요했어요. 추천 품질 실험, 단계적 적용, 장애 대응, 비교 지표 검증까지 전부 고려해야 했으니까요. 아키텍처와 로직 모두 "좋은 아이디어"보다 "서비스에 안전하게 얹을 수 있는 설계"를 우선한 거예요.

클릭 UV +21.7%, 주문 고객 +57.5% — 숫자가 말해줬다

그래서 뭐가 달라졌냐고요? 결과 화면만 보면 쉽게 와닿을 수 있지만, 그 전에 먼저 봐야 할 변화는 추천에 들어가는 입력 자체가 달라졌다는 점이에요. 결과보다 먼저, 추천 시스템이 세상을 보는 방식이 달라졌다고 볼 수 있어요.

기존에는 클릭한 상품, 카테고리, 브랜드 같은 정형 신호가 중심이었는데, 영상 기반 추천에서는 여기에 영상이 전달한 맥락과 고객 행동의 의도가 함께 들어가기 시작한 거죠. 추천의 기준이 "어떤 상품을 봤는가"에서 "어떤 맥락에 반응했는가"로 확장된 거예요.

이 변화가 추천 결과에서도 드러났어요. 기존에는 같은 카테고리 상품 위주로 영상이 붙어 나오는 경향이 강했는데, 이제는 카테고리가 다르더라도 실용성, 스타일링, 사용 상황처럼 맥락이 비슷한 영상과 상품이 함께 추천될 수 있게 됐어요. 워킹화에 반응한 고객한테 운동화만 더 보여주는 게 아니라 "편안하고 활동적인 일상"이라는 맥락에 맞는 다른 숏픽을 연결해줄 수 있게 된 거예요. 와이드 청바지에 반응한 고객한테 청바지만 더 보여주는 게 아니라, "편안한 핏"이라는 맥락에 맞는 슬랙스, 티셔츠 관련 숏픽까지 연결해 줄 수 있게 됐고요.

동일 영역, 동일 기간 기준 A/B 테스트 결과가 이걸 증명했어요.

| 지표 | 기존 로직 대비 증감율 | |------|----------------------| | 클릭 UV | +21.7% | | 총주문고객수 | +57.5% | | CR | +29.4% |

솔직히 주문 고객 수 57.5% 증가는 놀라운 수치예요. 클릭 UV, 총주문고객수, 전환율 모두에서 개선이 관찰됐고, 일별 지표를 보더라도 전환율이 유의미하게 상승한 구간들을 확인할 수 있었대요. 영상 이해 신호를 추천에 연결한 효과가 실제 서비스 지표에서도 확인됐고, 비즈니스 성과에 실질적으로 기여함을 입증한 거죠.

추천 데이터가 다음 콘텐츠를 만드는 날

GS SHOP 팀이 여기서 멈추지 않고 한 단계 더 나아가려는 방향이 있어요.

지금까지는 사람이 숏폼 영상을 만들면, AI가 소구 포인트를 추출해서 추천에 활용했잖아요. 근데 추천 시스템은 무엇을 보여줄지 결정하는 데서 그치지 않아요. 고객이 실제로 어떤 소구 포인트에 반응했는지를 계속 학습하는 구조이기도 하거든요. 만약 실용성, 스타일링, 활용 상황 같은 요소가 클릭과 전환으로 이어졌다면, 이 정보는 추천 신호인 동시에 다음 콘텐츠를 만들 때 참고할 수 있는 제작 신호가 되는 거예요.

콘텐츠 제작-추천-반응 학습 피드백 루프

앞으로 만들고 싶은 선순환은 이거래요.

콘텐츠 제작 → 추천 → 반응 학습 → 다시 콘텐츠. 추천이 단순히 무엇을 보여줄지 결정하는 역할에 머무는 게 아니라, 다음에 어떤 콘텐츠를 만들어야 하는지까지 알려주는 구조인 거예요. 추천을 넘어 검색과 탐색, 그리고 콘텐츠 제작까지 연결되는 방향이죠.

이번에 확인된 건 세 가지예요. 영상은 상품 메타데이터만으로 담기지 않는 더 풍부한 신호를 제공한다는 것. 추천에 필요한 신호만 구조화해서 남기는 게 중요했다는 것. 그리고 그 연결은 새 시스템을 처음부터 만드는 게 아니라 기존 추천 인프라 위에 자연스럽게 확장해도 충분히 된다는 것.

Part 1이 숏픽 추천의 진화 과정이었다면, Part 2는 왜 영상을 중요한 신호로 봐야 하는지에 대한 이야기였고, 이번 Part 3는 그 신호를 실제 추천 시스템 언어로 바꿔 넣은 이야기였어요.

GS SHOP이 풀고자 했던 문제는 영상 모델을 쓰는 것 자체가 아니었어요. 이미 가지고 있는 영상과 고객 반응을 추천 가능한 데이터 구조로 다시 해석하는 일. 그게 이 프로젝트의 본질이었고, 숫자가 그걸 증명해 줬어요.