datastax/jvector
JVector: the most advanced embedded vector search engine
JVector란 무엇인가
JVector는 그래프 기반 근사 최근접 이웃(ANN) 인덱스를 구현한 오픈소스 Java 라이브러리입니다. 두 가지 잘 알려진 ANN 알고리즘인 HNSW(Hierarchical Navigable Small World)와 DiskANN의 Vamana 아이디어를 결합하여, 메모리와 디스크에 걸쳐 존재할 수 있는 빠르고 확장 가능한 검색 구조를 제공합니다.
왜 중요한가
거대한 고차원 데이터셋에서 가장 유사한 k개의 벡터를 찾는 것은 많은 AI 시스템(의미론적 검색, 추천, 클러스터링 등)의 핵심 작업입니다. 정확한 검색은 대규모 환경에서 너무 느리기 때문에 대부분의 프로덕션 시스템은 ANN을 사용합니다. JVector의 하이브리드 그래프 설계는 다음과 같은 이점을 제공합니다:
- 로그 시간 내 검색을 수행하면서 작은 메모리 풋프린트를 유지합니다.
- RAM보다 큰 인덱스 구축이 가능합니다. 메모리 내에서의 빠른 압축 1단계와 디스크에서 데이터를 읽는 정밀한 2단계로 구성된 2단계 접근 방식을 사용합니다.
- CPU 코어 수에 따라 선형적으로 구축 성능이 확장됩니다. 비차단 동시성 덕분에 수십억 개의 벡터를 인덱싱해야 할 때 매우 유용합니다.
핵심 기능 (README 설명 기준)
| 기능 | 역할 |
|---|---|
| 다중 계층 그래프 | 상위 계층은 초고속 탐색을 위한 순수 메모리 내 인접 리스트이며, 하위 계층은 디스크에 위치합니다. |
| 2단계 검색 | 1단계는 속도와 낮은 메모리 사용을 위해 압축 표현(Product Quantization, Binary Quantization 또는 fused PQ)을 사용하고, 2단계는 전체 정밀도 float32 또는 NVQ 벡터로 결과를 정밀하게 조정합니다. |
| 증분 구축 | 정적 데이터셋을 요구하는 많은 파티션 기반 ANN 방식과 달리, 인덱스를 증분적으로 업데이트하고 구축할 수 있습니다. |
| 비차단 동시성 | README의 확장 차트에서 볼 수 있듯이 코어 수에 따라 구축 성능이 선형적으로 확장됩니다. |
| 크로스 플랫폼 네이티브 SIMD | Meson/Ninja로 빌드된 네이티브 라이브러리(libjvector.so)가 Linux x86‑64 및 AArch64에서 SIMD 가속 거리 계산을 제공합니다. |
| 멀티 릴리스 JAR | Java‑11 호환 코드와 Java‑20 전용 최적화를 단일 아티팩트로 패키징하여 Java 11+ 프로젝트에서 사용할 수 있습니다. |
| 벤치마크 및 예제 | 즉시 실행 가능한 Bench 및 SiftSmall 클래스와 jvector-examples의 튜토리얼 코드가 포함되어 있습니다. |
누가 사용해야 하는가
- 의미론적 검색이나 추천 서비스를 구축하는 엔지니어. 수십억 개의 임베딩 벡터에 대해 밀리초 미만의 지연 시간이 필요한 경우.
- 새로운 ANN 알고리즘을 프로토타이핑하는 연구자. Java로 작성된 견고하고 프로덕션 수준의 베이스라인을 원하는 경우.
- 임베딩 벡터를 디스크에 저장하는 기업(예: 대규모 문서 또는 이미지 벡터). 전체 인덱스를 RAM에 올릴 수 없는 경우.
시작하기 (빠른 단계)
- 서브모듈과 함께 클론 – 리포지토리는 Google의 Highway SIMD 라이브러리를 가져옵니다.
- 네이티브 라이브러리 빌드 –
build_native_lib.sh(Linux 전용)를 실행하여libjvector.so를 얻습니다. - Java 모듈 컴파일 –
mvn clean install(Java 11의 경우mvn -Pjdk11). - 튜토리얼 실행 –
docs/tutorials/1-intro-tutorial.md를 따르거나VectorIntro.java를 확인하세요. - 벤치마크 –
mvn compile exec:exec@bench를 실행하여 표준 데이터셋에서의 성능을 확인하세요.
AI 생태계에서의 위치
JVector는 모델 학습 프레임워크가 아닙니다. 이미 벡터 임베딩(LLM, CLIP, sentence‑transformers 등에서 생성된)을 보유한 애플리케이션의 백엔드에서 작동하는 검색 엔진 구성 요소입니다. 고성능의 디스크 기반 ANN 인덱스를 제공함으로써, 거대한 RAM 없이도 최근접 이웃을 빠르게 검색할 수 있게 하여 대규모 의미론적 AI 시스템을 더욱 실용적으로 만듭니다.
위의 모든 정보는 리포지토리의 README에서 직접 가져왔습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트