Vespa 개요

Vespa 개요

Vespa는 대규모 검색·추천 엔진이에요. 실시간 벡터 검색, 풀텍스트 검색, 머신러닝 추론을 하나의 서비스로 결합할 수 있는 게 특징이에요. Yahoo에서 시작한 오픈소스 프로젝트로, 수십억 도큐먼트를 관리하면서 낮은 지연으로 서빙하도록 설계됐어요.

출처: https://docs.vespa.ai/

핵심 개념

Vespa에서 검색 서비스는 크게 스키마(schema), 어플리케이션 패키지(application package), 검색/추론 단계로 구성돼요. 스키마는 도큐먼트 타입과 검색 방식을 정의하고, 어플리케이션 패키지는 배포 단위예요. 검색 시에는 캐스팅(casting)된 쿼리로 매칭하고, 랭킹(ranking) 단계에서 모델 추론까지 더할 수 있어요.

Vespa의 강점은 "검색 + 추천 + 머신러닝"을 하나의 곡선으로 처리한다는 점이에요. 예를 들어 벡터 검색으로 후보를 뽑고, 그 후보에 대해 랭킹 모델을 실행해서 최종 순서를 정하는 식으로요.

배포 구조

Vespa는 노드들이 각자 역할(컨테이너, 콘텐츠, 랭킹)을 맡는 분산 구조예요. 어플리케이션 패키지를 vespa deploy로 클러스터에 배포하고, vespa-cli나 REST API로 데이터를 넣고 검색해요. 도큐먼트는 콘텐츠 노드에 분산 저장되고, 검색은 분산 연산 후 병합해요.

검색 유형

Vespa는 다음 검색 방식을 지원해요.

  • 풀텍스트(키워드) 검색 — BM25 랭킹
  • 벡터 검색 — HNSW 기반 근접 이웃
  • 하이브리드 검색 — 벡터 + 풀텍스트 결합
  • 특징(feature) 기반 랭킹과 랭킹 프로파일

더 알아보기