paint-brush
주요 기술 회사의 벡터 검색에 대한 5가지 사용 사례 살펴보기~에 의해@rocksetcloud
634 판독값
634 판독값

주요 기술 회사의 벡터 검색에 대한 5가지 사용 사례 살펴보기

~에 의해 Rockset12m2024/05/03
Read on Terminal Reader

너무 오래; 읽다

AI를 애플리케이션에 통합한 벡터 검색의 얼리 어답터인 Pinterest, Spotify, eBay, Airbnb 및 Doordash에 대해 자세히 알아보세요.
featured image - 주요 기술 회사의 벡터 검색에 대한 5가지 사용 사례 살펴보기
Rockset HackerNoon profile picture


우리가 인터뷰한 많은 조직은 AI 기반 개인화, 권장 사항, 의미 체계 검색 및 이상 탐지를 위해 벡터 검색을 사용하는 탐색 단계에 있습니다. BERT 및 OpenAI를 포함한 대규모 언어 모델(LLM)의 정확성과 접근성이 최근 천문학적으로 향상됨에 따라 기업은 관련 검색 및 분석 경험을 구축하는 방법을 다시 생각하게 되었습니다.


이 블로그에서는 AI를 애플리케이션에 통합한 Pinterest, Spotify, eBay, Airbnb 및 Doordash 등 벡터 검색의 얼리 어답터 5명의 엔지니어링 이야기를 포착합니다. 이 이야기가 임베딩 생성부터 프로덕션 배포까지 벡터 검색의 전체 수명주기를 고려하고 있는 엔지니어링 팀에게 도움이 되기를 바랍니다.

벡터 검색이란 무엇입니까?

벡터 검색은 고차원 공간에서의 데이터 표현을 기반으로 대규모 데이터 세트에서 유사한 항목을 효율적으로 찾고 검색하는 방법입니다. 이러한 맥락에서 항목은 문서, 이미지, 사운드 등 무엇이든 될 수 있으며 벡터 임베딩으로 표시됩니다. 항목 간의 유사성은 두 벡터 임베딩의 근접성을 수량화하는 코사인 유사성 또는 유클리드 거리 와 같은 거리 측정법을 사용하여 계산됩니다.


벡터 검색 프로세스에는 일반적으로 다음이 포함됩니다.


  • 임베딩 생성 : 원시 데이터에서 관련 기능을 추출하여 word2vec , BERT 또는 Universal Sentence Encoder 와 같은 모델을 사용하여 벡터 표현을 생성합니다.
  • Indexing : Vector Embedding을 FAISS , HNSW 등의 알고리즘을 사용하여 효율적인 검색이 가능한 데이터 구조로 구성
  • 벡터 검색 : 주어진 쿼리 벡터와 가장 유사한 항목이 코사인 유사성 또는 유클리드 거리와 같은 선택된 거리 측정법을 기반으로 검색됩니다.


벡터 검색을 더 잘 시각화하기 위해 각 축이 특징에 해당하는 3D 공간을 상상할 수 있습니다. 공간 내 한 지점의 시간과 위치는 이러한 특징의 값에 따라 결정됩니다. 이 공간에는 비슷한 물건들이 더 가까이 위치하고, 다른 물건들은 더 멀리 떨어져 있습니다.


깃허브 줄리-밀스

 ^ | x Item 1 | / | / | /x Item 2 | / | / | /x Item 3 | / | / | / +------------------->


쿼리가 주어지면 데이터 세트에서 가장 유사한 항목을 찾을 수 있습니다. 쿼리는 항목 임베딩과 동일한 공간에 벡터 임베딩으로 표현되며, 쿼리 임베딩과 각 항목 임베딩 사이의 거리가 계산됩니다. 쿼리 임베딩과의 거리가 가장 짧은 항목 임베딩이 가장 유사한 것으로 간주됩니다.


 Query item: x | ^ | | x Item 1| | / | | / | | /x Item 2 | | / | | / | | /x Item 3 | | / | | / | | / | +------------------->


벡터 검색이 고차원 공간에서 작동하므로 이는 분명히 단순화된 시각화입니다.


다음 섹션에서는 벡터 검색에 관한 5개의 엔지니어링 블로그를 요약하고 주요 구현 고려 사항을 강조하겠습니다. 전체 엔지니어링 블로그는 아래에서 확인할 수 있습니다.



Pinterest: 관심분야 검색 및 발견

Pinterest는 홈 피드의 추천 콘텐츠, 관련 핀, 멀티태스킹 학습 모델을 사용한 검색 등 플랫폼의 여러 영역에서 이미지 검색 및 발견을 위해 벡터 검색을 사용합니다.


Pinterest에서 벡터 임베딩을 형성하는 데 사용되는 다양한 사용자 상호 작용 및 데이터 포인트입니다.


다중 작업 모델은 여러 작업을 동시에 수행하도록 학습되며 종종 기본 표현이나 기능을 공유하여 관련 작업 전반에 걸쳐 일반화 및 효율성을 향상시킬 수 있습니다. Pinterest의 경우 팀은 홈피드, 관련 핀 및 검색에서 추천 콘텐츠를 구동하기 위해 동일한 모델을 훈련하고 사용했습니다.


Pinterest는 사용자 검색 쿼리(q)를 사용자가 클릭한 콘텐츠 또는 저장한 핀(p)과 연결하여 모델을 학습합니다. Pinterest가 각 작업에 대해 (q,p) 쌍을 생성한 방법은 다음과 같습니다.


  • 관련 핀 : 선택한 주제(q)와 사용자가 클릭하거나 저장한 핀(p)에서 단어 임베딩이 파생됩니다.

  • 검색 : 검색어 텍스트(q)와 사용자가 클릭하거나 저장한 핀(p)을 바탕으로 단어 임베딩이 생성됩니다.

  • 홈피드 : 사용자의 관심도(q)와 사용자가 클릭하거나 저장한 핀(p)을 기반으로 워드 임베딩이 생성됩니다.


전체 엔터티 임베딩을 얻기 위해 Pinterest는 관련 핀, 검색 및 홈피드에 대한 관련 단어 임베딩의 평균을 계산합니다.


Pinterest는 GloVe, word2vec 및 단일 작업 학습 모델인 PinText-SR을 포함한 비지도 학습 모델에 대해 자체 감독 Pintext-MTL(다중 작업 학습)을 만들고 평가했습니다. PinText-MTL은 다른 임베딩 모델보다 정밀도가 높았습니다. 즉, 모든 긍정적인 예측 중에서 참긍정적인 예측의 비율이 더 높았음을 의미합니다.

Pinterest에서 평가한 다양한 임베딩 모델의 정밀도. 이 결과 표는 블로그 PinText: A Multitask Text Embedding System in Pinterest에서 가져온 것입니다.



또한 Pinterest는 다중 작업 학습 모델이 더 높은 재현율을 갖거나 모델에 의해 정확하게 식별된 관련 사례의 비율이 더 높아 검색 및 발견에 더 적합하다는 사실을 발견했습니다.


이 모든 것을 프로덕션에 통합하기 위해 Pinterest에는 홈피드, 검색 및 관련 핀의 스트리밍 데이터에 대해 훈련된 멀티태스킹 모델이 있습니다. 해당 모델이 훈련되면 Kubernetes+Docker 또는 맵 축소 시스템을 사용하여 대규모 배치 작업으로 벡터 임베딩이 생성됩니다. 플랫폼은 벡터 임베딩의 검색 색인을 구축하고 KNN(K-Nearest Neighbors) 검색을 실행하여 사용자에게 가장 관련성이 높은 콘텐츠를 찾습니다. Pinterest 플랫폼의 성능 요구 사항을 충족하기 위해 결과가 캐시됩니다.


Pinterest의 벡터 검색을 위한 데이터 스택입니다.



Spotify: 팟캐스트 검색

Spotify는 키워드와 의미 검색을 결합하여 사용자에게 관련 팟캐스트 에피소드 결과를 검색합니다. 예를 들어 팀은 Spotify 라이브러리에 관련 팟캐스트 에피소드가 있음에도 불구하고 결과가 0인 "전기 자동차 기후 영향"이라는 쿼리에 대한 키워드 검색의 한계를 강조했습니다. 회상률을 높이기 위해 Spotify 팀은 빠르고 관련성 높은 팟캐스트 검색을 위해 ANN(Approximate Nearest Neighbor)을 사용했습니다.


현재 Spotify에서 "전기 자동차 기후 영향"을 검색하고 있습니다.


팀은 Universal Sentence Encoder CMLM 모델을 사용하여 다국어 팟캐스트의 글로벌 라이브러리를 지원하는 벡터 임베딩을 생성하고 고품질 벡터 임베딩을 생성합니다. 텍스트 데이터의 대규모 코퍼스에 대해 훈련된 모델인 BERT를 포함한 다른 모델도 평가되었지만 BERT는 문장 임베딩보다 단어 임베딩에 더 적합하고 영어로만 사전 훈련된 것으로 나타났습니다.


Spotify는 입력 임베딩인 쿼리 텍스트와 팟캐스트 에피소드 임베딩에 대한 제목 및 설명을 포함한 텍스트 메타데이터 필드의 연결을 사용하여 벡터 임베딩을 구축합니다. 유사성을 확인하기 위해 Spotify는 쿼리와 에피소드 임베딩 간의 코사인 거리를 측정했습니다.


기본 Universal Sentence Encoder CMLM 모델을 훈련하기 위해 Spotify는 성공적인 팟캐스트 검색 및 에피소드의 긍정적인 쌍을 사용했습니다. 그들은 무작위 네거티브 쌍을 생성하기 위해 DPR(Open-Domain Question Answering)을 위한 Dense Passage RetrievalQue2Search: Fast and Accurate Query and Document Understanding for Search at Facebook 등의 논문에서 강조된 기술인 일괄 네거티브를 통합했습니다. 테스트는 합성 쿼리와 수동으로 작성된 쿼리를 사용하여 수행되었습니다.


제작 시 팟캐스트 추천 제공에 벡터 검색을 통합하기 위해 Spotify는 다음 단계와 기술을 사용했습니다.


  • 에피소드 벡터 인덱스 : Spotify는 ANN을 기본적으로 지원하는 검색 엔진인 Vespa를 사용하여 오프라인으로 에피소드 벡터를 일괄적으로 인덱스합니다. Vespa를 선택한 이유 중 하나는 에피소드 인기도와 같은 기능에 대한 검색 후 필터링을 포함하는 메타데이터를 통합할 수 있다는 것입니다.

  • 온라인 추론 : Spotify는 Google Cloud Vertex AI를 사용하여 쿼리 벡터를 생성합니다. Vertex AI는 대규모 변환기 모델을 사용하여 임베딩을 생성할 때 더 비용 효율적인 GPU 추론과 쿼리 캐시 지원을 위해 선택되었습니다. 쿼리 벡터 임베딩이 생성된 후 Vespa에서 상위 30개 팟캐스트 에피소드를 검색하는 데 사용됩니다.


의미 검색은 관련 팟캐스트 에피소드를 식별하는 데 기여하지만 키워드 검색을 완전히 대체할 수는 없습니다. 이는 사용자가 정확한 에피소드나 팟캐스트 이름을 검색할 때 의미론적 검색이 정확한 용어 일치에 미치지 못하기 때문입니다. Spotify는 Vespa의 의미론적 검색과 Elasticsearch 의 키워드 검색을 병합한 후 최종 순위 재지정 단계를 거쳐 사용자에게 표시되는 에피소드를 설정하는 하이브리드 검색 접근 방식을 사용합니다.


Spotify의 벡터 검색 작업 흐름.


이베이: 이미지 검색

전통적으로 검색 엔진은 검색 쿼리 텍스트를 항목이나 문서의 텍스트 설명과 정렬하여 결과를 표시했습니다. 이 방법은 선호도를 추론하기 위해 언어에 광범위하게 의존하며 스타일이나 미적 요소를 포착하는 데는 효과적이지 않습니다. eBay는 사용자가 원하는 스타일에 맞는 관련성 있고 유사한 항목을 찾을 수 있도록 이미지 검색을 도입했습니다.


eBay는 텍스트, 이미지, 오디오 또는 비디오와 같은 여러 양식 또는 입력 유형의 데이터를 처리하고 통합하여 예측을 하거나 작업을 수행하도록 설계된 다중 모드 모델을 사용합니다. eBay는 텍스트와 이미지를 모델에 통합하여 CNN(Convolutional Neural Network) 모델, 특히 Resnet-50을 활용하여 이미지 임베딩을 생성하고 BERT 와 같은 텍스트 기반 모델을 사용하여 제목 임베딩을 생성합니다. 모든 목록은 이미지와 제목 임베딩을 모두 결합한 벡터 임베딩으로 표현됩니다.


eBay에서 사용되는 다중 모드 임베딩 모델의 표현입니다.



이미지-제목 목록 쌍과 최근 판매된 목록의 대규모 데이터 세트를 사용하여 다중 모드 모델을 학습한 후에는 사이트 검색 환경에서 이를 프로덕션에 투입할 때입니다. eBay의 목록 수가 많기 때문에 데이터는 eBay의 데이터 웨어하우스인 HDFS에 일괄적으로 로드됩니다. eBay는 Apache Spark를 사용하여 목록 임베딩 생성을 포함하여 목록의 추가 처리에 필요한 이미지와 관련 필드를 검색하고 저장합니다. 목록 임베딩은 대규모 데이터를 집계하는 데 적합한 HBase와 같은 열 형식 저장소에 게시됩니다. HBase에서 목록 임베딩은 eBay에서 만든 검색 엔진인 Cassini에서 색인화되고 제공됩니다.


eBay의 벡터 검색 작업 흐름.


파이프라인은 작업 양이 많고 복잡하더라도 확장이 가능한 Apache Airflow를 사용하여 관리됩니다. 또한 Spark, Hadoop, Python에 대한 지원도 제공하므로 머신러닝 팀이 쉽게 채택하고 활용할 수 있습니다.


시각적 검색을 통해 사용자는 스타일과 미학이 구매 결정의 핵심인 가구 및 가정 장식 카테고리에서 유사한 스타일과 선호도를 찾을 수 있습니다. 앞으로 eBay는 모든 카테고리에 걸쳐 시각적 검색을 확장하고 사용자가 관련 항목을 검색하여 집 전체에서 동일한 모양과 느낌을 설정할 수 있도록 지원할 계획입니다.

AirBnb: 실시간 맞춤 목록

검색 및 유사한 숙소 기능은 AirBnb 사이트 예약의 99%를 유도합니다. AirBnb는 유사한 숙소 추천을 개선하고 검색 순위에 실시간 개인화 기능을 제공하기 위해 숙소 임베딩 기술을 구축했습니다.


AirBnb는 단순히 단어 표현을 넘어 클릭과 예약을 포함한 사용자 행동까지 포함하여 임베딩 적용을 확장할 수 있다는 사실을 일찍부터 깨달았습니다.


임베딩 모델을 훈련하기 위해 AirBnb는 450만 개가 넘는 활성 목록과 8억 개가 넘는 검색 세션을 통합하여 세션에서 사용자가 클릭하고 건너뛰는 목록을 기반으로 유사성을 결정했습니다. 세션에서 동일한 사용자가 클릭한 목록은 서로 더 가깝게 푸시됩니다. 사용자가 건너뛴 목록은 더 멀리 푸시됩니다. 팀은 오프라인 성능과 온라인 제공에 필요한 메모리 간의 균형을 고려하여 d=32인 목록 임베딩의 차원을 결정했습니다.


AirBnb는 특정 목록 특성은 가격과 같은 메타데이터에서 직접 얻을 수 있으므로 학습이 필요하지 않다는 것을 발견했습니다. 그러나 건축, 스타일, 분위기와 같은 속성을 메타데이터에서 파생시키는 것은 훨씬 더 어렵습니다.


AirBnb는 프로덕션으로 전환하기 전에 모델이 사용자가 실제로 예약한 목록을 얼마나 잘 추천하는지 테스트하여 모델을 검증했습니다. 또한 팀은 기존 목록 알고리즘과 벡터 임베딩 기반 알고리즘을 비교하는 A/B 테스트도 실행했습니다. 그들은 벡터 임베딩을 사용한 알고리즘을 통해 CTR이 21% 증가하고 자신이 예약한 목록을 발견하는 사용자가 4.9% 증가한 것으로 나타났습니다.


또한 팀은 검색 시 실시간 개인화를 위한 모델의 일부로 벡터 임베딩을 사용할 수 있다는 사실도 깨달았습니다. 각 사용자에 대해 지난 2주 동안의 사용자 클릭 및 건너뛰기의 단기 기록인 Kafka를 사용하여 실시간으로 수집하고 유지했습니다. 사용자가 수행한 모든 검색에 대해 두 가지 유사성 검색을 실행했습니다.


  • 최근 검색된 지리적 시장을 기반으로

  • 후보 목록과 사용자가 클릭/건너뛴 목록 간의 유사성


임베딩은 오프라인 및 온라인 실험을 통해 평가되었으며 실시간 개인화 기능의 일부가 되었습니다.


Doordash: 맞춤형 매장 피드

Doordash에는 사용자가 주문할 수 있는 다양한 매장이 있으며 개인별 선호도를 사용하여 가장 관련성이 높은 매장을 표시할 수 있으므로 검색 및 발견이 향상됩니다.


Doordash는 벡터 임베딩을 사용하여 매장 피드 알고리즘에 잠재 정보를 적용하려고 했습니다. 이를 통해 Doordash는 매장에 달콤한 품목이 있는지, 트렌디한 것으로 간주되는지, 채식 옵션이 있는지 등 잘 문서화되지 않은 매장 간의 유사점을 찾아낼 수 있습니다.


Doordash는 자연어 처리에 사용되는 임베딩 모델인 word2vec의 파생 모델인 store2vec을 기존 데이터를 기반으로 적용하여 사용했습니다. 팀은 각 매장을 단어로 처리하고 단일 사용자 세션 동안 본 매장 목록을 사용하여 문장을 구성했습니다. 문장당 매장 수는 최대 5개입니다. 사용자 벡터 임베딩을 생성하기 위해 Doordash는 지난 6개월 동안 사용자가 주문한 매장의 벡터 또는 최대 100개의 주문을 합산했습니다.


예를 들어 Doordash는 벡터 검색을 사용하여 샌프란시스코의 인기 있고 트렌디한 조인트인 4505 Burgers 및 New Nagano Sushi에서 최근 구매한 사용자를 기반으로 유사한 레스토랑을 찾았습니다. Doordash는 사용자 임베딩에서 해당 지역의 매장 임베딩까지 코사인 거리를 측정하는 유사한 레스토랑 목록을 생성했습니다. 코사인 거리에서 가장 가까운 매장은 케자르 펍(Kezar Pub)과 목탄한인마을 BBQ인 것을 알 수 있습니다.


Doordash의 벡터 검색 예는 Vector Embeddings를 사용한 Personalized Store Feed 블로그에서 가져온 것입니다.


Doordash는 더 큰 추천 및 개인화 모델의 기능 중 하나로 store2vec 거리 기능을 통합했습니다. 벡터 검색을 통해 Doordash는 클릭률이 5% 증가하는 것을 확인할 수 있었습니다. 또한 팀은 seq2seq , 모델 최적화, 사용자의 실시간 현장 활동 데이터 통합과 같은 새로운 모델을 실험하고 있습니다.


벡터 검색에 대한 주요 고려사항

Pinterest, Spotify, eBay, Airbnb 및 Doordash는 벡터 검색을 통해 더 나은 검색 및 발견 경험을 제공합니다. 이들 팀 중 다수는 텍스트 검색을 사용하기 시작했지만 퍼지 검색이나 특정 스타일이나 미학 검색에 한계가 있음을 발견했습니다. 이러한 시나리오에서 경험에 벡터 검색을 추가하면 관련성이 높고 종종 개인화된 팟캐스트, 베개, 대여, 핀 및 식당을 더 쉽게 찾을 수 있습니다.


벡터 검색을 구현할 때 언급할 가치가 있는 이러한 회사의 몇 가지 결정이 있습니다.


  • 모델 임베딩 : 많은 사람들이 기성 모델을 사용하여 시작한 후 자체 데이터를 사용하여 훈련했습니다. 그들은 또한 word2vec과 같은 언어 모델을 최근 클릭된 항목 및 유사한 항목과 단어 및 설명을 교환하여 사용할 수 있다는 것을 인식했습니다. AirBnb와 같은 팀은 이미지 모델보다는 언어 모델의 파생물을 사용하는 것이 시각적 유사점과 차이점을 포착하는 데 여전히 효과적이라는 것을 발견했습니다.
  • 교육 : 이들 회사 중 다수는 기존 대규모 데이터 세트를 활용하여 과거 구매 및 클릭 데이터에 대한 모델을 교육하기로 결정했습니다.
  • 인덱싱 : 많은 회사가 ANN 검색을 채택했지만 Pinterest는 메타데이터 필터링과 KNN 검색을 결합하여 대규모 효율성을 달성할 수 있다는 것을 확인했습니다.
  • 하이브리드 검색 : 벡터 검색은 텍스트 검색을 거의 대체하지 않습니다. Spotify의 예에서와 같이 최종 순위 알고리즘은 벡터 검색 또는 텍스트 검색이 가장 관련성이 높은 결과를 생성했는지 결정하는 데 사용되는 경우가 많습니다.
  • 생산 중 : 이러한 임베딩이 거의 업데이트되지 않는다는 점을 고려하면 많은 팀에서 배치 기반 시스템을 사용하여 벡터 임베딩을 생성하는 것을 볼 수 있습니다. 이들은 주로 Elasticsearch라는 다른 시스템을 사용하여 라이브가 포함된 쿼리 벡터를 계산하고 검색에 실시간 메타데이터를 통합합니다.


실시간 검색 및 분석 데이터베이스인 Rockset은 최근 벡터 검색 에 대한 지원을 추가했습니다. 지금 $300 크레딧으로 무료 평가판을 시작하여 Rockset에서 벡터 검색을 통해 실시간 개인화, 추천, 이상 탐지 등을 시도해 보세요.