NGT-labs/NGT

Nearest Neighbor Search with Neighborhood Graph and Tree for High-dimensional Data

해결하는 문제

NGT는 일반적으로 수십에서 수천 차원에 이르는 대규모 고차원 벡터 데이터에서 고속 근사 최근접 이웃(ANN) 검색을 수행하는 문제를 해결합니다.

작동 방식

이 프로젝트는 속도, 메모리 사용량, 확장성의 균형을 맞추기 위해 세 가지 주요 인덱싱 방법을 제공합니다:

  • NGT: 그래프와 트리 기반 인덱싱을 결합한 하이브리드 접근 방식.
  • QG (Quantized Graph): 표준 NGT 접근 방식보다 높은 성능을 위한 양자화 그래프 기반 방법.
  • QBG (Quantized Blob Graph): 수십억 개의 객체를 처리할 수 있는 전용 방법.

자원 사용을 최적화하기 위해 NGT는 메모리 매핑 파일을 통해 공유 메모리를 지원하여 RAM보다 큰 데이터셋을 처리할 수 있으며, 스칼라 및 곱셈 양자화와 같은 다양한 양자화 옵션을 제공하여 데이터 크기를 줄입니다.

대상 사용자

대규모 데이터셋에서 유사한 항목을 빠르고 확장 가능한 방식으로 검색해야 하는 고차원 벡터 공간에서 작업하는 개발자 및 연구자에게 적합합니다.

주요 특징

  • 광범위한 거리 지원: L1, L2, 코사인 유사도, 각도, 해밍, 자카르드, 포앙카레, 로렌츠, 내적을 지원.
  • 대규모 확장성: QBG는 수십억 개의 객체를 처리할 수 있음.
  • 다중 언어 바인딩: Python, Ruby, PHP, Rust, Go, C, C++ 지원.
  • 메모리 효율성: 물리적 메모리 한계를 초과하는 인덱스에 대해 공유 메모리를 지원.

관련

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