VOVA와 Milvus로 이미지 검색 쇼핑 경험 구축하기
이동:
- 이미지 검색은 어떻게 작동하나요?
- YOLO 모델을 사용한 대상 감지
- ResNet을 사용한 이미지 특징 벡터 추출
- Milvus 기반 벡터 유사도 검색
- VOVA의 이미지로 쇼핑하기 도구
온라인 쇼핑은 2020년에 급증했으며, 주로 코로나바이러스 팬데믹으로 인해 44% 증가했습니다. 사람들이 사회적 거리두기를 실천하고 낯선 사람과의 접촉을 피하려 하면서, 비대면 배송은 많은 소비자에게 매우 매력적인 선택지가 되었습니다. 이러한 인기는 또한 사람들이 전통적인 키워드 검색으로 설명하기 어려울 수 있는 틈새 상품을 포함해 더 다양한 상품을 온라인에서 구매하도록 이끌었습니다.
사용자가 키워드 기반 쿼리의 한계를 극복하도록 돕기 위해, 기업은 사용자가 검색에 단어 대신 이미지를 사용할 수 있게 하는 이미지 검색 엔진을 구축할 수 있습니다. 이는 사용자가 설명하기 어려운 상품을 찾을 수 있게 할 뿐만 아니라, 실제 생활에서 마주치는 물건을 쇼핑하는 데도 도움이 됩니다. 이러한 기능은 독특한 사용자 경험을 구축하는 데 도움이 되며 고객이 높이 평가하는 전반적인 편의성을 제공합니다.
VOVA는 합리적인 가격과 사용자에게 긍정적인 쇼핑 경험을 제공하는 데 중점을 둔 신흥 전자상거래 플랫폼으로, 수백만 개의 제품을 포괄하는 상품 목록과 20개 언어 및 35개 주요 통화 지원을 제공합니다. 사용자 쇼핑 경험을 향상하기 위해, 이 회사는 Milvus를 사용하여 전자상거래 플랫폼에 이미지 검색 기능을 구축했습니다. 이 글에서는 VOVA가 Milvus로 이미지 검색 엔진을 성공적으로 구축한 방법을 살펴봅니다.
이미지 검색은 어떻게 작동하나요?
VOVA의 이미지로 쇼핑하기 시스템은 사용자가 업로드한 이미지와 유사한 제품 이미지를 회사의 재고에서 검색합니다. 다음 차트는 시스템 프로세스의 두 단계인 데이터 가져오기 단계(파란색)와 쿼리 단계(주황색)를 보여줍니다.
- YOLO 모델을 사용하여 업로드된 사진에서 대상을 감지합니다;
- ResNet을 사용하여 감지된 대상에서 특징 벡터를 추출합니다;
- Milvus를 사용하여 벡터 유사도 검색을 수행합니다.
VOVA의 이미지로 검색 기능의 시스템 프로세스.
YOLO 모델을 사용한 대상 감지
Android와 iOS에서 제공되는 VOVA의 모바일 앱은 현재 이미지 검색을 지원합니다. 이 회사는 사용자 업로드 이미지에서 객체를 감지하기 위해 YOLO(You only look once)라는 최첨단 실시간 객체 감지 시스템을 사용합니다. YOLO 모델은 현재 다섯 번째 반복 버전입니다.
YOLO는 단일 단계 모델로, 하나의 합성곱 신경망(CNN)만 사용하여 다양한 대상의 카테고리와 위치를 예측합니다. 작고 컴팩트하며 모바일 사용에 적합합니다.
YOLO는 합성곱 계층을 사용하여 특징을 추출하고 완전연결 계층을 사용하여 예측값을 얻습니다. GooLeNet 모델에서 영감을 얻어, YOLO의 CNN은 24개의 합성곱 계층과 2개의 완전연결 계층을 포함합니다.
다음 그림에서 볼 수 있듯이, 448 × 448 입력 이미지는 여러 합성곱 계층과 풀링 계층에 의해 7 × 7 × 1024차원 텐서(아래에서 끝에서 세 번째 큐브로 표시됨)로 변환된 다음, 두 개의 완전연결 계층에 의해 7 × 7 × 30차원 텐서 출력으로 변환됩니다.
YOLO P의 예측 출력은 형태가 [batch,7 ×7 ×30]인 2차원 텐서입니다. 슬라이싱을 사용하면, P[:,0:7×7×20]은 카테고리 확률, P[:,7×7×20:7×7×(20+2)]는 신뢰도, P[:,7×7×(20+2)]:]는 경계 상자의 예측 결과입니다.
YOLO 네트워크 아키텍처.
ResNet을 사용한 이미지 특징 벡터 추출
VOVA는 방대한 제품 이미지 라이브러리와 사용자가 업로드한 사진에서 특징 벡터를 추출하기 위해 잔차 신경망(ResNet) 모델을 채택했습니다. ResNet은 학습 네트워크의 깊이가 증가할수록 네트워크의 정확도가 감소한다는 한계가 있습니다. 아래 이미지는 단락 회로 메커니즘을 통해 잔차 유닛을 포함하도록 수정된 VGG19 모델(VGG 모델의 변형)을 실행하는 ResNet을 보여줍니다. VGG는 2014년에 제안되었으며 단 14개의 레이어만 포함하는 반면, ResNet은 1년 후에 등장했으며 최대 152개까지 가질 수 있습니다.
ResNet 구조는 수정하고 확장하기 쉽습니다. 블록의 채널 수와 적층된 블록 수를 변경하면 네트워크의 너비와 깊이를 쉽게 조정하여 서로 다른 표현 능력을 가진 네트워크를 얻을 수 있습니다. 이는 학습 깊이가 증가함에 따라 정확도가 떨어지는 네트워크 퇴화 효과를 효과적으로 해결합니다. 충분한 학습 데이터를 사용하면 네트워크를 점진적으로 깊게 만들면서 표현 성능이 향상되는 모델을 얻을 수 있습니다. 모델 학습을 통해 각 사진의 특징이 추출되고 256차원 부동소수점 벡터로 변환됩니다.
ResNet 구조.
Milvus 기반 벡터 유사도 검색
VOVA의 제품 이미지 데이터베이스에는 3천만 장의 사진이 포함되어 있으며 빠르게 증가하고 있습니다. 이 대규모 데이터셋에서 가장 유사한 제품 이미지를 빠르게 검색하기 위해 Milvus를 사용하여 벡터 유사도 검색을 수행합니다. 여러 최적화 덕분에 Milvus는 벡터 데이터를 관리하고 머신러닝 애플리케이션을 구축하는 빠르고 간소화된 접근 방식을 제공합니다. Milvus는 인기 있는 인덱스 라이브러리(예: Faiss, Annoy)와의 통합을 제공하고, 여러 인덱스 유형과 거리 메트릭을 지원하며, 여러 언어의 SDK를 보유하고, 벡터 데이터 관리를 위한 풍부한 API를 제공합니다.
Milvus는 조 단위 벡터 데이터셋에서 밀리초 단위로 유사도 검색을 수행할 수 있으며, nq=1일 때 쿼리 시간이 1.5초 미만이고 평균 배치 쿼리 시간이 0.08초 미만입니다. 이미지 검색 엔진을 구축하기 위해 VOVA는 Milvus의 샤딩 미들웨어 솔루션인 Mishards의 설계(시스템 설계는 아래 차트 참조)를 참고하여 고가용성 서버 클러스터를 구현했습니다. Milvus 클러스터의 수평 확장성을 활용함으로써 대규모 데이터셋에 대한 높은 쿼리 성능이라는 프로젝트 요구 사항을 충족했습니다.
Milvus의 Mishards 아키텍처.
VOVA의 이미지 쇼핑 도구
아래 스크린샷은 회사의 Android 앱에서 제공되는 VOVA의 이미지 검색 쇼핑 도구를 보여줍니다.
VOVA의 이미지 검색 쇼핑 도구 스크린샷.
더 많은 사용자가 제품을 검색하고 사진을 업로드함에 따라 VOVA는 시스템을 구동하는 모델을 계속 최적화할 것입니다. 또한 회사는 사용자의 온라인 쇼핑 경험을 더욱 향상할 수 있는 새로운 Milvus 기능을 도입할 것입니다.
참고 자료
YOLO:
https://arxiv.org/pdf/1506.02640.pdf
https://arxiv.org/pdf/1612.08242.pdf
ResNet:
https://arxiv.org/abs/1512.03385
Milvus:
https://milvus.io/docs/overview.md
계속 읽기

Zilliz Cloud On-Demand Compute: Pay Only for What You Use
The customer case behind Zilliz Cloud On-Demand: how a $10K vector search bill came down to under $500, and the engineering changes that made it possible.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

DeepRAG: Thinking to Retrieval Step by Step for Large Language Models
Discover DeepRAG, an advanced retrieval-augmented generation (RAG) model that improves LLM accuracy by retrieving only essential data through step-by-step reasoning.



