VIPSHOP이 Milvus로 이커머스 추천 시스템을 10배 더 빠르게 향상시킨 방법
추천 시스템은 전자상거래 성공에 필수적인 요소가 되었으며, 사용자 경험을 향상하고 고객 참여를 촉진하며 비즈니스 수익을 높이는 전략적 촉매 역할을 합니다. 중국의 선구적인 온라인 리테일러인 VIPSHOP은 중대한 전환점에 직면했습니다. 5,200만 명을 넘어서는 빠르게 성장하는 고객 기반과 연간 2억 7,000만 건의 주문 급증 속에서, 기존 Elasticsearch 기반 추천 시스템은 느리고 부적절한 것으로 드러났습니다. VIPSHOP에서 더 빠르고 개인화된 솔루션에 대한 요구는 더욱 절박해졌습니다. 이 글에서는 VIPSHOP이 직면한 과제와 Milvus 도입이 추천 시스템을 어떻게 개선했는지 살펴보겠습니다.
효율적인 벡터 검색 엔진을 향한 탐색
민첩한 추천 시스템의 기반은 벡터 검색 기능에 있으며, 이는 의미적으로 유사한 결과를 신속하게 제공하는 데 매우 중요합니다. VIPSHOP은 처음에 벡터 검색을 위해 Elasticsearch에 의존했지만, 제품 범위가 확장되면서 곧 과제에 직면했습니다. 기존 시스템은 두 가지 주요 장애물—긴 응답 시간과 치솟는 유지보수 비용—에 부딪혔습니다.
속도 저하는 Top-K 결과를 검색할 때 평균 300ms에 달하는 Elasticsearch의 높은 지연 시간 때문이었습니다. 이후 처리 단계와 결합되면서 최종 응답 시간은 몇 초에 달해 사용자 경험에 부정적인 영향을 미쳤습니다. 또한 공유 인덱스는 복잡한 미로로 변해 구축 및 유지보수 비용을 증가시켰습니다. 해싱 플러그인으로 Elasticsearch를 되살리려는 시도에도 불구하고 결과는 기대에 미치지 못했습니다. 새로운 벡터 검색 스택을 찾는 일은 응답성 있는 추천 시스템을 위한 팀의 다음 과제가 되었습니다.
VIPSHOP은 추천 시스템 업그레이드를 위해 Milvus를 선택했습니다
Milvus는 수십억 개의 벡터 임베딩을 처리할 수 있는 속도와 다양한 기능을 약속하는 오픈 소스 벡터 데이터베이스입니다. 또한 분산 배포, 다국어 SDK, 읽기/쓰기 분리라는 매력도 제공했으며, 이는 Elasticsearch와 다른 벡터 검색 기술을 능가하는 구성 요소였습니다. 신중한 검토와 평가 끝에 VIPSHOP은 추천 시스템을 재구축하기 위해 Milvus를 선택했습니다.
Milvus가 VIPSHOP의 추천 시스템에서 작동하는 방식
이 다이어그램은 Milvus로 구동되는 VIPSHOP 추천 시스템의 아키텍처를 엿볼 수 있게 해줍니다.
딥러닝 모델은 제품 특징을 벡터 임베딩으로 변환합니다. 그런 다음 이러한 임베딩은 MySQL과 ETL 도구를 사용하여 저장 및 검색을 위해 Milvus로 수집됩니다.
동시에 소비자의 쿼리와 구매 선호도도 유사한 변환을 거쳐 벡터 임베딩이 되고, Milvus 내에서 유사도 검색을 시작합니다. 여기서 Milvus는 소비자 벡터와 제품 벡터 간의 공간적 거리를 평가하여 Approximate Nearest Neighbors (ANN) 검색을 수행하고, 가장 관련성이 높은 Top-K 결과를 제공합니다. 마지막으로 이 결과가 소비자에게 제시됩니다.
Milvus는 데이터 업데이트와 리콜 프로세스 모두에서 뛰어난 효율성을 보여주었습니다.
데이터 업데이트와 리콜은 이 복잡한 오케스트레이션 내에서 빠른 벡터 검색과 개인화된 추천을 위한 핵심 요소입니다. 데이터 업데이트 절차는 벡터 데이터 쓰기, 데이터 볼륨 감지, 인덱스 구축, 인덱스 사전 로딩, 별칭 관리와 같은 작업을 포함하여 원활한 동기화를 보장합니다. 반면 제품 추천에 필수적인 리콜 프로세스는 소비자 쿼리와 구매 행동에 관련된 벡터를 검색하고, 그 거리를 계산하며, 결과를 병합하는 과정을 포함합니다.
Milvus는 데이터 업데이트와 리콜 프로세스 모두에서 뛰어난 효율성과 민첩성을 보여주었으며, 평균 지연 시간은 단 10ms를 달성했습니다. 아래 표는 데이터 업데이트 및 리콜과 관련된 세 가지 주요 Milvus 서비스의 성능 지표를 보여줍니다.
| 서비스 | 역할 | 입력 매개변수 | 출력 매개변수 | 응답 지연 시간 |
|---|---|---|---|---|
| 사용자 벡터 획득 | 사용자 벡터 확보 | 사용자 정보 + 쿼리 | 사용자 벡터 | 10 ms |
| Milvus Search | 벡터 유사도를 계산하고 Top-K 결과 반환 | 사용자 벡터 | 아이템 벡터 | 10 ms |
| 스케줄링 로직 | 동시 결과 리콜 및 병합 | 다중 채널에서 리콜된 아이템 벡터와 유사도 점수 | Top-K 아이템 | 10 ms |
10배 더 빠른 추천과 대규모 비용 절감으로 사용자 경험 향상
Milvus를 VIPSHOP의 추천 시스템에 통합하면서 환경이 재편되었고, 사용자 경험의 새로운 시대가 열렸습니다.
전체 응답 10배 향상: Milvus는 전체 벡터 쿼리 시간을 30ms 미만으로 줄였습니다. 이 놀라운 속도는 이전 Elasticsearch 솔루션보다 10배 빠른 것으로, 사용자가 번개처럼 빠른 추천을 받을 수 있도록 보장합니다.
비즈니스 데이터 급증 처리 역량 강화: Milvus의 분산 배포와 수평 확장 기능은 VIPSHOP의 추천 시스템이 증가하는 데이터 규모와 사용자 쿼리를 손쉽게 관리할 수 있도록 지원했습니다. 컴퓨팅과 스토리지를 독립적으로 확장할 수 있는 능력은 VIPSHOP의 변화하는 요구 사항과 매끄럽게 부합하며, 탁월한 유연성을 제공합니다.
유지보수 비용 절감: Milvus는 간소화된 쿼리 메커니즘을 통해 VIPSHOP이 추천 시스템의 유지보수 비용을 줄이는 데 도움을 주었습니다. 이러한 절감은 운영 효율성을 높이고 플랫폼 전반의 비용 효율성에도 기여합니다.
Milvus 사용 시 과제와 교훈
Milvus를 도입하는 과정에서 VIPSHOP 팀은 몇 가지 과제도 마주했으며, Zilliz의 기술 지원 팀의 도움을 받아 이를 해결했습니다. 이 섹션에서는 시스템 성능 최적화를 위해 얻은 교훈과 인사이트를 공유합니다. * 읽기 작업이 우선시될 때 읽기-쓰기 분리 배포 전략을 채택하면 전체 시스템 성능을 향상시킬 수 있습니다.
Milvus Java client는 리콜 서비스 내 메모리에 상주하기 때문에 기본 재연결 메커니즘이 없습니다. VIPSHOP 팀은 Java client와 서버 간 하트비트 테스트를 구현하여 일관된 연결성을 보장하는 전용 연결 풀을 구축했습니다.
Milvus에서 간헐적으로 발생하는 느린 쿼리는 새 컬렉션의 워밍업이 충분하지 않기 때문입니다. 이 과제를 해결하기 위해 VIPSHOP 팀은 새로 생성된 컬렉션에서 쿼리를 시뮬레이션하는 전략을 구현했습니다.
검색 성능과 정확도 사이의 적절한 균형을 달성하는 것이 중요합니다. VIPSHOP 팀은 특정 비즈니스 시나리오에 맞춘 세밀한 부하 테스트 실험을 수행할 것을 권장합니다. 이러한 매개변수를 효과적으로 최적화하려면 합리적인 임계값을 설정하는 것이 필수적입니다.
정적 데이터를 다루는 시나리오에서는 먼저 모든 데이터를 컬렉션으로 가져온 뒤 인덱스 구축 프로세스를 나중 단계로 미루는 효율적인 접근 방식을 사용할 수 있습니다.
계속 읽기

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.



