시리즈 목차
- Part 1. 쇼핑에 영상을 더하다: GSSHOP 숏픽 추천 알고리즘 진화기
- Part 2. 쇼핑에 영상을 더하다: 영상을 '이해'하기 시작하다
- Part 3. 쇼핑에 영상을 더하다: 이해한 영상을 추천으로 연결하기
고객이 워킹화 숏폼을 클릭했을 때, 추천 시스템은 무엇을 기록했을까요?
아마 이렇게 남겼을 겁니다. "운동화 선호". 맞는 말이긴 한데, 뭔가 많이 잘려나간 느낌이 듭니다.
고객이 실제로 반응한 건 운동화라는 카테고리가 아니라, 영상이 전달한 "편안하고 활동적인 일상"이라는 맥락이었을지도 모릅니다. 그 차이를 시스템이 읽지 못하면, 추천은 늘 비슷한 운동화만 반복하게 됩니다.
Part 1에서는 숏픽 추천이 어떻게 진화해 왔는지, Part 2에서는 왜 영상을 중요한 신호로 봐야 하는지를 다뤘습니다.
이번 글은 그 다음 이야기입니다. 영상에서 읽어낸 의미를 실제 추천 시스템에 어떻게 연결했는지, 그 과정을 정리해 보려고 합니다.
GS SHOP은 상품 데이터만 많은 커머스가 아니라, 방송 영상, 숏폼 콘텐츠, 고객 행동 데이터가 함께 축적되는 환경을 가지고 있습니다. 그렇기 때문에 이 문제는 단순히 "영상을 분석해 보자"는 실험이 아니라, 기존 커머스 추천 시스템이 활용하지 못했던 신호를 실제 서비스에 어떻게 편입할 것인가에 중점을 두었습니다.
GS SHOP에서는 왜 이 문제가 중요했을까
홈쇼핑과 커머스 서비스에서 영상은 오래전부터 중요한 자산이었습니다. 상품명, 가격, 카테고리, 리뷰, 대표 이미지 같은 정형 정보만으로도 기본적인 추천은 충분히 가능합니다. 실제로 많은 추천 시스템이 이런 신호들 위에서 잘 동작해 왔습니다.
하지만 GS SHOP이 다루는 콘텐츠는 그보다 훨씬 풍부합니다. 라이브 방송에는 쇼핑호스트의 설명, 시연 장면, 사용 맥락, 비교 포인트가 담겨 있고, 숏픽 같은 숏폼에는 짧은 시간 안에 상품의 핵심 메시지와 사용 장면이 압축되어 있습니다.
문제는 기존 추천 시스템이 이런 차이를 대부분 상품 중심의 정형 신호로만 읽고 있었다는 점입니다. 예를 들어 같은 패션 상품이라도 영상에서는 "체형 커버", "출근룩", "편안한 착용감"처럼 전혀 다른 메시지가 강조될 수 있고, 같은 리빙 상품이라도 "캠핑", "전자레인지 사용 가능", "정리 수납"처럼 고객이 반응하는 포인트가 달라질 수 있습니다.
즉, GS SHOP 입장에서는 이미 충분한 영상 자산을 가지고 있었지만, 추천 시스템이 그 안의 의미를 충분히 활용하지 못하고 있었습니다.
이 간극을 메우는 것이 이번 작업의 출발점이었습니다.

기존 추천의 한계
숏픽 추천은 꾸준히 발전해 왔지만, 한 가지 전제는 꽤 오랫동안 유지되고 있었습니다. 숏픽이 노출되더라도, 어떤 영상을 보여줄지는 결국 상품 추천 결과에 따라 결정되는 구조였습니다. 즉, 추천의 중심은 여전히 상품이었고, 입력 신호 역시 상품 ID, 카테고리, 브랜드 같은 정형 데이터가 대부분이었습니다.
이 구조는 상품 추천 관점에서는 충분히 합리적이었습니다. 하지만 영상 추천 관점에서는 분명한 한계가 있었습니다.
고객이 무엇을 클릭했는지는 볼 수 있었지만, 왜 반응했는지는 알기 어려웠습니다.
예를 들어 고객이 어떤 숏픽을 클릭했을 때, 시스템은 이를 "이 상품을 좋아했다" 정도로만 해석할 수 있었습니다. 하지만 실제 고객은 상품 자체보다 영상이 전달한 분위기, 사용 상황, 스타일링, 기능성 같은 요소에 더 크게 반응했을 수도 있습니다. 즉, 영상은 노출되고 있었지만, 영상 안에 담긴 맥락은 추천에 거의 쓰이지 못하고 있었습니다.
이 구조는 서비스 운영 관점에서는 이해할 수 있는 선택이기도 했습니다. 기존 추천 시스템은 상품 추천을 중심으로 발전해 왔고, 영상은 그 결과를 보조적으로 보여주는 방식이 더 단순하고 안정적이었기 때문입니다. 다만 숏폼과 영상 소비가 커질수록, 추천 시스템 입장에서는 조금 난감해졌습니다. 고객은 분명히 영상에 반응하고 있는데, 시스템이 읽을 수 있는 것은 여전히 상품 코드 중심이었기 때문입니다.
클릭을 다시 해석하기
그래서 저희는 숏픽 클릭을 조금 다르게 보기 시작했습니다.
영상 클릭은 단순한 상품 선호가 아니라, 고객 취향의 단서를 남긴다.
예를 들어 워킹화 숏폼을 클릭한 고객을 생각해보겠습니다. 기존 방식이라면 이를 "운동화 선호"로 해석하기 쉽습니다. 하지만 실제로는 편안함, 기능성, 활동적인 라이프스타일, 실용적인 코디에 반응했을 가능성이 더 클 수 있습니다.
이 차이는 생각보다 중요합니다. "운동화"라는 카테고리 하나로 해석하면 비슷한 상품만 반복 추천하게 되지만, "편안하고 활동적인 스타일"이라는 맥락으로 해석하면 다른 상품군까지도 더 자연스럽게 연결할 수 있기 때문입니다.
그래서 저희는 숏픽 클릭을 상품 선호가 아니라 맥락 선호, 혹은 취향 신호로 해석해 보기로 했습니다.
조금 과장해서 말하면, 고객은 꽤 풍부하게 반응하고 있었는데 시스템이 너무 단순하게 받아쓰고 있었던 셈입니다.
영상만이 줄 수 있는 신호, 소구 포인트
문제는 여기서 끝나지 않았습니다. 영상에서 의미를 읽었다고 해도, 추천 시스템이 그대로 이해해 주는 것은 아니기 때문입니다. 추천 시스템은 결국 숫자와 점수로 움직입니다. 그래서 영상이 전달하는 설명을 추천에 활용할 수 있도록 구조화한 개념이 바로 소구 포인트입니다.
소구 포인트는 고객이 영상에서 실제로 반응했을 만한 핵심 메시지입니다. 예를 들면 "전자레인지 OK", "캠핑용", "실용성", "기능성", "활용도 높은 스타일링" 같은 표현들입니다.
여기서 중요한 점은, 카테고리나 브랜드는 이미 기존 추천 신호가 어느 정도 잘 설명하고 있었다는 점입니다. 그래서 영상에는 영상만이 드러낼 수 있는 신호를 맡기기로 했습니다. 즉, 영상에서 소구 포인트를 추출하고, 이를 임베딩해 비슷한 맥락의 영상을 찾을 수 있도록 설계했습니다. 이렇게 하면 고객이 최근 반응한 영상과 비슷한 결을 가진 다른 영상이나 상품을 추천 후보로 활용할 수 있습니다.
영상 임베딩, 무엇을 담아야 할까
처음에는 영상 전체를 설명하는 긴 텍스트를 임베딩해 유사 영상을 찾는 방식도 시도했습니다. 결과는 꽤 그럴듯해 보였습니다. 그런데 자세히 들여다보니, 비슷하다고 묶이는 영상들이 대부분 같은 카테고리나 같은 브랜드 숏폼이었습니다. 영상을 열심히 읽었는데, 결국 상품 코드 근처를 맴도는 결과였습니다. 원점에 가까웠습니다.
그래서 방향을 조금 바꿨습니다. 카테고리와 브랜드 선호는 기존 상품 추천이 맡고, 영상 쪽은 소구 포인트 키워드 자체를 더 잘 표현하도록 역할을 분리했습니다. 결과적으로 Pegasus와 Claude를 통해 추출한 소구 포인트를 임베딩하고, 그 벡터를 기반으로 비슷한 맥락의 영상을 찾는 구조로 정리할 수 있었습니다.
소구 포인트 임베딩은 처음에는 더 높은 차원으로 다뤘지만, 검색 속도와 저장 비용을 함께 고려해야 했습니다. 실서비스에서는 추천 품질뿐 아니라 인덱싱 비용, 조회 속도, 운영 복잡도도 함께 봐야 하기 때문입니다. 그래서 정보 보존율, 복원 오차, 유사도 유지율, 검색 속도 등을 비교하며 차원 축소를 진행했고, 운영 가능한 수준으로 최적화했습니다. 상품 임베딩과 같은 차원으로 맞춰 둔 덕분에 운영 측면에서도 훨씬 단순한 구조를 만들 수 있었습니다.

기존 추천을 버리지 않고, 얹었습니다
영상 신호를 도입한다고 해서 기존 추천 엔진을 처음부터 다시 만들지는 않았습니다. 오히려 저희가 택한 방식은 반대에 가까웠습니다.
기존 추천을 버린 것이 아니라, 영상 맥락 신호를 그 위에 얹었습니다.
기존에는 상품 점수, 카테고리 선호, 인기나 평점 같은 신호들이 추천의 중심을 이루고 있었습니다. 여기에 "이 고객이 최근 반응한 영상과 얼마나 비슷한 맥락인가"라는 영상 신호를 추가해, 최종 추천 점수를 함께 계산하도록 설계했습니다.
이 선택은 기술적으로도 중요했습니다. 새로운 추천 시스템을 별도로 만들면 품질 검증, 운영, fallback, 기존 지표와의 비교가 모두 어려워집니다. 반면 기존 추천 로직 위에 영상 신호를 레이어처럼 얹는 방식은, 기존 시스템의 안정성을 유지하면서도 새로운 신호의 효과를 상대적으로 명확하게 검증할 수 있다는 장점이 있었습니다. 말 그대로 "다 뜯어고치기"보다 "잘 쓰던 엔진에 새 감각을 붙이는" 쪽에 가까웠습니다.
이 구조를 저희는 Hybrid라고 부릅니다. 기존 추천의 강점은 유지하되, 영상이 전달하는 의미를 새로운 레이어로 더한 방식입니다.
영상은 의미를 담고 있고, 행동은 의도를 담고 있습니다
영상 기반 추천을 설계하면서 가장 중요하게 본 것은, 영상과 행동이 서로 다른 역할을 한다는 점이었습니다.
영상은 의미를 담고 있고, 행동은 의도를 담고 있습니다.
영상 쪽에서는 소구 포인트를 임베딩한 뒤 OpenSearch에서 유사한 맥락을 찾도록 했습니다. 반면 행동 쪽에서는 고객이 최근 어떤 영상을 클릭하고 시청했는지, 어떤 맥락에 반응했는지를 Redis에 빠르게 조회할 수 있는 형태로 쌓았습니다. 그리고 추천 시점에는 API가 이 두 정보를 함께 조회해 최종 추천을 만듭니다.
즉, "이 영상이 어떤 메시지를 갖고 있는가"와 "이 고객이 최근 어떤 메시지에 반응했는가"를 한 번에 보는 구조입니다. 조금 더 기술적으로 설명하면, 전체 구조는 크게 세 단계로 나눌 수 있습니다.
- 오프라인 처리 단계
영상에서 소구 포인트를 추출하고 임베딩을 생성해 검색 가능한 형태로 적재합니다. - 행동 집계 단계
고객의 클릭·시청 로그를 바탕으로 최근 선호 맥락을 사용자 단위로 누적합니다. - 온라인 추천 단계
추천 요청 시 OpenSearch에서 의미 기반 후보를 찾고, Redis에서 사용자 행동 기반 선호를 조회한 뒤, 여러 점수를 합산해 최종 결과를 반환합니다.
이렇게 역할을 나눈 이유는 명확합니다. 영상 의미를 계산하는 작업은 상대적으로 무겁고, 사용자 반응은 빠르게 갱신되어야 하며, 최종 추천 응답은 짧은 시간 안에 끝나야 하기 때문입니다. 한 시스템이 모든 걸 한 번에 다 잘해주기를 기대하기보다는, 각 단계가 잘하는 일을 나눠 맡기는 편이 훨씬 현실적이었습니다.

행동을 어떻게 선호도로 바꿨을까
행동 신호를 설계할 때는 단순 노출을 그대로 선호도로 보지 않았습니다. 대신 실제 시청과 클릭 행동을 중심으로, 의도 수준이 다른 행동을 구분해서 반영했습니다.
예를 들어 상품 클릭, 상품 상세 진입, 이벤트 클릭처럼 구매나 전환에 더 가까운 행동에는 더 높은 가중치를 두고, 재생, 끝까지 시청, 썸네일 클릭처럼 관심을 보여주는 행동은 그보다 낮은 단계의 선호 신호로 반영했습니다.
정리하면 행동 신호는 크게 두 층으로 나눌 수 있습니다.
- 구매·전환에 가까운 행동: 상품 클릭, 상품 상세 진입, 이벤트 클릭
- 관심에 가까운 행동: 재생, 끝까지 시청, 썸네일 클릭, 추천 영역 진입
중요한 점은, 보였다는 사실 자체보다 실제로 반응했는가를 더 강한 신호로 봤다는 것입니다. 숏폼 영역은 노출 위치나 UI 구조의 영향도 크기 때문에, 단순 impression까지 그대로 선호 신호로 쓰면 오히려 의도가 흐려질 수 있다고 판단했습니다. 또한 최근 행동일수록 더 큰 의미를 갖도록 반감기 개념을 적용해 시간에 따라 점수가 자연스럽게 감쇠되도록 설계했습니다. 이렇게 하면 오래전 행동보다 지금 고객이 실제로 관심을 보이는 맥락을 더 잘 반영할 수 있습니다.
선호도 저장 역시 무한정 누적하지 않았습니다. 실시간 조회가 필요한 데이터인 만큼 사용자별 상위 선호 항목만 유지하는 방식으로 관리했고, 이를 통해 추천 시점의 조회 비용과 응답 시간을 함께 제어했습니다. 선호도 점수는 개념적으로 보면, 낮은 구간은 "얼마나 오래 봤는가"에 더 가깝고, 높은 구간은 실제 클릭이나 상세 진입 같은 행동이 붙으면서 올라가는 구조입니다. 즉, 단순 시청과 적극적인 반응을 같은 무게로 보지 않도록 설계했습니다.
최종 추천 점수는 어떻게 만들었을까
최종 추천은 크게 다섯 단계를 거쳐 계산했습니다.
- 상품 점수
최근 클릭한 상품을 기준으로 유사 상품을 찾고, 최근에 클릭한 상품일수록 더 높은 가중치를 둡니다. - 숏폼 점수
최근 선호한 숏폼을 기준으로 유사 숏폼을 찾고, 해당 숏폼에 대한 사용자 선호 점수를 함께 반영합니다. - 카테고리 점수
사용자의 대/중 카테고리 선호를 반영해, 평소 관심을 보이던 축에 맞는 상품에 점수를 더합니다. - 최종 점수 계산
상품, 숏폼, 카테고리, 평점 등 여러 신호를 가중 합산해 1차 점수를 만듭니다. 이때 상품과 숏폼 신호를 중심에 두고, 카테고리와 평점은 보조 신호로 활용했습니다. - 후처리
마지막으로 MMR(Maximal Marginal Relevance)을 적용해 유사도뿐 아니라 다양성까지 함께 고려합니다.

이 과정의 핵심은 단순히 비슷한 것을 찾는 데서 멈추지 않는다는 점입니다. 고객이 좋아할 가능성이 높은 후보를 모으고, 그 안에서 너무 비슷한 결과만 반복되지 않도록 다시 한 번 정리해 주는 구조입니다.
특히 GS SHOP 같은 커머스 환경에서는 정확도만큼이나 구성의 다양성도 중요합니다. 비슷한 맥락을 잘 맞추더라도 결과가 지나치게 한쪽 카테고리나 유사 상품군에 쏠리면 서비스 품질은 오히려 떨어질 수 있습니다. 그래서 MMR은 단순한 후처리가 아니라, 실제 사용자 경험을 보정하는 중요한 단계로 작동했습니다.
구현하면서 함께 고민한 것들
실서비스에 연결하는 과정에서는 추천 품질만큼이나 서빙 안정성도 중요했습니다. 그래서 Redis 조회와 상품/숏폼/카테고리 추천 계산은 가능한 한 병렬로 처리해 지연 시간을 줄였고, 여러 소스에서 같은 상품이 동시에 추천되면 하나로 묶어 점수를 통합했습니다. 이때 같은 상품이 여러 추천 소스에서 반복해서 등장하면 단순 중복 제거로 끝내지 않고, "여러 관점에서 동시에 추천된 후보"라는 의미로 보고 소량의 추가 점수를 주는 방식도 함께 사용했습니다. 완전히 새로운 규칙을 더한 것은 아니지만, 여러 신호에서 공통으로 살아남은 후보를 조금 더 위로 올려주는 데 도움이 되었습니다.
또한 추천 결과가 충분하지 않거나 예외 상황이 생길 때는 인기도 기반 결과로 자연스럽게 보완할 수 있도록 fallback도 마련했습니다. 기술적으로는 작은 디테일일 수 있지만, 실제 서비스에서는 이런 장치들이 사용자 경험을 안정적으로 유지하는 데 꽤 중요했습니다.
온라인 서빙에서는 응답 시간이 매우 중요하기 때문에, Redis 조회와 추천 파이프라인 전반에 적절한 타임아웃을 두었습니다. 추천 품질이 좋아도 응답이 늦어지면 서비스 품질은 바로 흔들리기 때문에, 이 부분은 모델 성능과는 다른 의미의 중요한 운영 조건이었습니다.
또 하나 중요했던 점은, 새 신호를 도입하더라도 기존 서비스 운영 체계를 크게 흔들지 않는 것이었습니다. 추천 품질 실험, 단계적 적용, 장애 대응, 비교 지표 검증까지 모두 고려해야 했기 때문에, 아키텍처와 로직 모두 "좋은 아이디어"보다 "서비스에 안전하게 얹을 수 있는 구조"를 우선해 설계했습니다.
그래서 무엇이 달라졌을까요?
추천 품질을 이야기할 때 결과 화면만 보면 쉽게 와닿을 수 있지만, 그 전에 먼저 봐야 할 변화는 추천에 들어가는 입력 자체가 달라졌다는 점입니다. 결과보다 먼저, 추천 시스템이 세상을 보는 방식이 달라졌다고 볼 수 있습니다.
기존에는 클릭한 상품, 카테고리, 브랜드 같은 정형 신호가 중심이었습니다. 하지만 영상 기반 추천에서는 여기에 영상이 전달한 맥락과 고객 행동의 의도가 함께 들어가기 시작했습니다. 즉, 추천의 기준이 "어떤 상품을 봤는가"에서 "어떤 맥락에 반응했는가"로 확장된 것입니다.
이 변화는 추천 결과에서도 드러났습니다. 기존에는 같은 카테고리 상품 위주로 영상이 붙어 나오는 경향이 강했다면, 이제는 카테고리가 다르더라도 실용성, 스타일링, 사용 상황처럼 맥락이 비슷한 영상과 상품이 함께 추천될 수 있게 되었습니다.
예를 들어 워킹화에 반응한 고객에게 단순히 운동화만 더 보여주는 것이 아니라, "편안하고 활동적인 일상"이라는 맥락에 맞는 다른 숏픽을 연결해줄 수 있고, 와이드 청바지에 반응한 고객에게 단순히 청바지만 더 보여주는 것이 아니라, "편안한 핏"이라는 맥락에 맞는 슬랙스, 티셔츠 관련 숏픽까지 연결해 줄 수 있게 된 것입니다.

실제로 어떤 변화가 있었을까
동일 영역, 동일 기간 기준으로 A/B 테스트를 진행한 결과 입니다.
| 클릭 UV | 총주문고객수 | CR | |
|---|---|---|---|
| 기존 로직 대비 증감율 | +21.7% | +57.5% | +29.4% |
클릭 UV, 총주문고객수, 전환율(CR) 모두에서 개선이 관찰됐고, 일별 지표를 보더라도 전환율이 유의미하게 상승한 구간들을 확인할 수 있었습니다. 즉, 영상 이해 신호를 추천에 연결한 효과는 실제 서비스 지표에서도 확인할 수 있었고, 비즈니스 성과에 실질적으로 기여함을 입증할 수 있었습니다.
앞으로의 방향
이번 작업을 통해 확인한 것은, GS SHOP이 이미 가지고 있는 영상 자산과 고객 반응 데이터를 더 잘 해석하면 추천 시스템이 훨씬 풍부해질 수 있다는 점이었습니다.
그리고 저희는 여기서 한 단계 더 나아가고자 합니다.
지금까지는 사람이 직접 숏폼 영상을 만들고, 저희가 그 영상에서 소구 포인트를 추출해 추천에 활용해 왔습니다. 그런데 추천 시스템은 무엇을 보여줄지 결정하는 역할에 그치지 않고, 고객이 실제로 어떤 소구 포인트에 반응했는지를 계속 학습하는 구조이기도 합니다. 만약 실용성, 스타일링, 활용 상황 같은 요소가 클릭과 전환으로 이어졌다면, 이 정보는 추천 신호인 동시에 다음 콘텐츠를 만들 때 참고할 수 있는 제작 신호가 됩니다.
그래서 앞으로는 다음과 같은 선순환을 만들고 싶습니다.
- 사람이 영상을 만들고
- AI가 그 핵심 메시지를 구조화하고
- 추천이 어떤 포인트가 실제로 효과 있었는지 검증하고
- 그 결과를 다시 다음 콘텐츠 제작에 반영하는 것
즉, 콘텐츠 제작 → 추천 → 반응 학습 → 다시 콘텐츠가 이어지는 구조입니다.
추천을 넘어 검색과 탐색, 그리고 나아가 콘텐츠 제작까지 연결되는 방향으로 발전시켜 나가고자 합니다.

마무리하며
이번 글을 통해 말씀드리고 싶었던 것은 세 가지입니다.
- 영상은 상품 메타데이터만으로 담기지 않는 더 풍부한 신호를 제공합니다.
- 추천에 필요한 신호만을 구조화해서 남기는 것이 중요했습니다.
- 그리고 그 연결은 새로운 시스템을 처음부터 만드는 방식이 아니라, 기존 추천과 결합하며 인프라 위에 자연스럽게 확장하는 방식으로도 충분히 구현할 수 있습니다.
Part 1이 숏픽 추천의 진화 과정이었다면, Part 2는 왜 영상을 중요한 신호로 봐야 하는지에 대한 이야기였고, 이번 Part 3는 그 신호를 실제 추천 시스템 언어로 바꿔 넣은 이야기였습니다.
이 글에서는 그 가능성을 GS SHOP 서비스 안에서 어떻게 시스템으로 만들었는가를 조금 더 구체적으로 남기고 싶었습니다.
결국 저희가 풀고자 했던 문제는 영상 모델을 쓰는 것 자체가 아니라, GS SHOP이 이미 가지고 있는 영상과 고객 반응을 추천 가능한 데이터 구조로 다시 해석하는 일이었습니다.
이제 GS SHOP은 영상을 노출하는 것을 넘어, 영상을 이해하며 추천하기 시작했습니다.
감사합니다 :)

이세윤 Erica | AX본부 홈쇼핑AX부문 검색추천파트(H)
추천 알고리즘 개발을 담당하고 있습니다.
사용자에게 도움이 되는 서비스를 개발하고,
합리적인 추론을 통해 변화를 만들어내는 일을 하고 싶습니다.
'Data&AI' 카테고리의 다른 글
| 쇼핑에 영상을 더하다: Part 2. 영상을 '이해'하기 시작하다 (0) | 2026.03.30 |
|---|---|
| 비개발자 리서처가 AI로 인터뷰를 자동화하기까지: GS리테일 리서치봇 구축기 (0) | 2025.12.08 |
| LLM을 활용한 AI 와인 라벨 이미지 검색 개발 여정 (3) | 2025.07.14 |
| 쇼핑에 영상을 더하다: GSSHOP 숏픽 추천 알고리즘 진화기 (0) | 2025.04.03 |
| 실시간 추천을 위한 kubeflow 환경 구축 (2) | 2022.01.04 |