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 애플리케이션: 고차원 벡터를 생성하고 실시간 최근접 이웃 쿼리가 필요한 모든 애플리케이션.
📚 문서 및 리소스
- Python 문서: https://spotify.github.io/voyager/python
- Java 문서: https://spotify.github.io/voyager/java
- GitHub 저장소: https://github.com/spotify/voyager (CI 상태 배지, 기여 가이드, 라이선스 포함).
🛡️ 라이선스
Voyager는 Apache 2.0 License(허용적인 오픈 소스 라이선스)로 릴리스되었습니다. 상업용 제품을 포함하여 무료로 사용, 수정 및 배포할 수 있습니다.
🙋♀️ 기여하기
기여를 환영합니다. 버그 보고, 기능 개선 제안 또는 풀 리퀘스트 제출 방법에 대한 지침은 저장소의 CONTRIBUTING.md 파일을 참조하세요.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트