spotify/voyager

🛰️ An approximate nearest-neighbor search library for Python and Java with a focus on ease of use, simplicity, and deployability.

🎯 Voyager란 무엇인가요?

Voyager는 근사 최근접 이웃(ANN) 알고리즘을 사용하여 대규모 벡터 컬렉션(예: 임베딩)을 빠르게 검색할 수 있게 해주는 오픈 소스 라이브러리입니다. 인기 있는 hnswlib 프로젝트를 기반으로 HNSW(Hierarchical Navigable Small World) 그래프 방식을 구현했으며, 성능과 사용 편의성을 대폭 개선했습니다. 이 라이브러리는 Python, Java, Scala에서 사용할 수 있으며, 두 언어 바인딩이 동일한 인덱스 형식을 공유하므로 한 번 인덱스를 빌드하면 어떤 런타임에서든 쿼리할 수 있습니다.


🚀 핵심 기능 (README 설명 기준)

기능 상세 내용
빠른 ANN 검색 높은 재현율과 낮은 쿼리 지연 시간으로 유명한 HNSW 사용.
다중 언어 바인딩 Python, Java, Scala에서 동일한 인덱스 형식과 기능 세트 제공.
프로덕션급 품질 Spotify에서 배포되어 매일 수억 건의 쿼리를 처리.
인메모리 전용 초고속 조회를 위해 RAM에 인덱스 상주 (디스크 영속성 없음).
광범위한 플랫폼 지원 macOS, Linux, Windows 지원; Python은 x86_64 및 ARM (Apple Silicon), Java는 Linux/macOS에서 ARM 지원.
쉬운 설치 Python은 pip install voyager, Java/Scala는 Maven/Gradle 또는 SBT 좌표 사용.
Apache 2.0 라이선스 상업적 및 비상업적 용도로 무료 사용 가능.

📦 시작하기

Python

pip install voyager
import voyager as vg
# 예시 (의사 코드, 정확한 API는 문서 참조)
index = vg.Index(dim=128)
index.add(vectors, ids)
neighbors = index.search(query_vector, k=10)

Java (Maven)

<dependency>
  <groupId>com.spotify</groupId>
  <artifactId>voyager</artifactId>
  <version>2.1.0</version>
</dependency>
import com.spotify.voyager.Index;
// 인덱스 빌드 및 쿼리 – 정확한 호출 방법은 Java 문서 참조

Scala (SBT)

libraryDependencies += "com.spotify" % "voyager" % "2.1.0"

🎯 일반적인 사용 사례

  • 시맨틱 검색: 텍스트 임베딩을 통한 검색 (유사 문서, FAQ, 제품 설명 찾기 등).
  • 추천 시스템: 임베딩 공간에서 가장 가까운 항목을 검색해야 하는 시스템.
  • 클러스터링 / 중복 제거: 빠른 유사도 조회가 필요한 파이프라인.
  • AI/ML 애플리케이션: 고차원 벡터를 생성하고 실시간 최근접 이웃 쿼리가 필요한 모든 애플리케이션.

📚 문서 및 리소스


🛡️ 라이선스

Voyager는 Apache 2.0 License(허용적인 오픈 소스 라이선스)로 릴리스되었습니다. 상업용 제품을 포함하여 무료로 사용, 수정 및 배포할 수 있습니다.


🙋‍♀️ 기여하기

기여를 환영합니다. 버그 보고, 기능 개선 제안 또는 풀 리퀘스트 제출 방법에 대한 지침은 저장소의 CONTRIBUTING.md 파일을 참조하세요.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트