NGT-labs/NGT
Nearest Neighbor Search with Neighborhood Graph and Tree for High-dimensional Data
해결하는 문제
NGT는 일반적으로 수십에서 수천 차원에 이르는 고차원 벡터 데이터의 막대한 양에서 고속 근사 근접 이웃(ANN) 검색을 수행하는 문제를 해결합니다.
작동 방식
NGT는 검색 속도와 메모리 사용량을 최적화하기 위해 세 가지 주요 인덱싱 방법을 사용합니다:
- NGT: 그래프와 트리 기반 인덱싱을 결합한 하이브리드 접근 방식.
- QG (Quantized Graph): 표준 그래프/트리 접근 방식보다 더 높은 성능을 위한 양자화된 그래프 기반 방법.
- QBG (Quantized Blob Graph): 수십억 개의 객체를 처리할 수 있는 전용 방법.
사용 가능한 RAM을 초과하는 데이터셋을 관리하기 위해, 프로젝트는 메모리 매핑 파일을 통한 공유 메모리를 지원합니다. 또한 데이터 표현을 추가로 최적화하기 위해 다양한 양자화 옵션(Product, Scalar)을 제공합니다.
대상 사용자
Linux, macOS 등 다양한 플랫폼과 Python, C++, Go, Rust, Ruby, PHP 등 다양한 프로그래밍 언어에서 고차원 공간 내 효율적인 유사성 검색을 구현해야 하는 개발자 및 데이터 엔지니어.
주요 특징
- 광범위한 거리 지원: L1, L2, 코사인 유사도, 각도, 해밍, 자카르드, 포인카레, 로렌츠, 내적을 지원합니다.
- 거대한 확장성: QBG는 수십억 개의 객체를 처리할 수 있으며, 공유 메모리 옵션을 통해 시스템 메모리보다 큰 데이터를 인덱싱할 수 있습니다.
- 다중 언어 지원: 다양한 인기 프로그래밍 언어용 네이티브 라이브러리 및 래퍼를 제공합니다.
- 유연한 데이터 유형: 4바이트 부동소수점, 2바이트 부동소수점(FP16), 1바이트 부호 없는 정수를 지원합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트