대규모 근사 최근접 이웃 벡터 검색을 위한 C++ 라이브러리로, 인덱스 구축·검색·분산 서빙 도구를 제공합니다.
NGT-labs/NGT
그래프 및 트리 인덱스를 사용해 고차원 벡터에서 빠른 근사 최근접 이웃 검색을 수행하는 C++ 라이브러리이자 명령줄 도구입니다.
- 스타
- 1,376
- 포크
- 133
- 열린 이슈
- 29
- 마지막 커밋
- 7일 전
어떤 프로젝트인가요?
NGT는 수십 차원에서 수천 차원에 이르는 고차원 벡터의 대규모 컬렉션을 대상으로 근사 최근접 이웃 검색을 수행하는 명령과 라이브러리를 제공합니다. 주변 이웃 그래프와 트리 인덱스를 구축해 쿼리를 저장된 모든 항목과 비교하지 않고도 유사한 객체를 찾을 수 있습니다.
이 프로젝트는 그래프 및 트리 기반 인덱스(NGT), 양자화 그래프 방식(QG), 그리고 매우 큰 데이터셋을 대상으로 하는 양자화 블롭 그래프 방식(QBG) 등 여러 방법을 제공합니다. 지원하는 거리 함수에는 L1, L2, cosine, angular, Hamming, Jaccard, inner product, hyperbolic(Poincare 및 Lorentz) 거리가 포함됩니다. 벡터는 4바이트 또는 2바이트 부동소수점 수, 혹은 1바이트 부호 없는 정수로 저장할 수 있으며, 인덱스는 메모리 매핑 공유 메모리에 둘 수 있습니다.
NGT는 CLI, C++ API와 Python, Rust, Go, Ruby, PHP, JavaScript 바인딩을 제공합니다. 인덱스를 만든 뒤에도 객체를 추가하거나 제거할 수 있습니다. Linux, macOS, MinGW-w64/MSYS2를 사용하는 Windows에서 빌드할 수 있으며, QG와 QBG에는 BLAS와 LAPACK이 필요합니다.
핵심 기능
- 01그래프 및 트리 인덱스를 사용한 근사 최근접 이웃 검색
- 02L1, L2, cosine, angular, Hamming, Jaccard, inner product 및 hyperbolic 거리 지원
- 03인덱스를 만든 뒤에도 객체 추가 및 제거 가능
- 04Float32, float16, uint8 데이터 타입과 그래프 인덱스를 위한 product 및 scalar quantization
- 05대규모 데이터셋을 위한 공유 메모리(메모리 매핑 파일) 인덱스 옵션
- 06Python, Rust, Go, Ruby, PHP 및 JavaScript 바인딩
활용 사례
- 맞춤형 검색 서비스에서 벡터 유사도를 기준으로 유사한 이미지, 문서 또는 임베딩 찾기
- 여러 프로세스가 메모리의 하나의 인덱스를 공유하며 최근접 이웃 쿼리 처리하기
- QBG 방식으로 수십억 개 벡터를 대상으로 유사도 검색 실행하기
- 더 큰 시스템을 선택하기 전에 명령줄이나 Python에서 벡터 검색 프로토타이핑하기
빠른 시작
- 1
Homebrew로 macOS에 설치
brew install ngt - 2
Releases 페이지에서 소스 아카이브 다운로드
- 3
QG와 QBG 없이 Linux에서 빌드 구성
cmake -DNGT_QBG_DISABLED=ON ..
사용 전 알아둘 점
- Microsoft Visual C++(MSVC)를 사용한 네이티브 빌드는 지원되지 않습니다. 현재 Windows에서는 MinGW-w64를 사용하고 QBG를 비활성화해야 합니다.
- QG와 QBG에는 BLAS 및 LAPACK 라이브러리가 필요하며 Linux와 macOS에서만 실행됩니다.
포함된 컬렉션
토픽
자주 묻는 질문
- NGT은(는) 무엇인가요?
- 그래프 및 트리 인덱스를 사용해 고차원 벡터에서 빠른 근사 최근접 이웃 검색을 수행하는 C++ 라이브러리이자 명령줄 도구입니다. NGT는 수십 차원에서 수천 차원에 이르는 고차원 벡터의 대규모 컬렉션을 대상으로 근사 최근접 이웃 검색을 수행하는 명령과 라이브러리를 제공합니다. 주변 이웃 그래프와 트리 인덱스를 구축해 쿼리를 저장된 모든 항목과 비교하지 않고도 유사한 객체를 찾을 수 있습니다.
- NGT은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- NGT은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- NGT은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. NGT의 마지막 커밋은 2026년 10월 30일입니다.
- NGT은(는) 어디에 사용할 수 있나요?
- 맞춤형 검색 서비스에서 벡터 유사도를 기준으로 유사한 이미지, 문서 또는 임베딩 찾기 여러 프로세스가 메모리의 하나의 인덱스를 공유하며 최근접 이웃 쿼리 처리하기 QBG 방식으로 수십억 개 벡터를 대상으로 유사도 검색 실행하기 더 큰 시스템을 선택하기 전에 명령줄이나 Python에서 벡터 검색 프로토타이핑하기
- NGT는 어떻게 설치하나요?
- Homebrew로 macOS에 설치: brew install ngt Releases 페이지에서 소스 아카이브 다운로드 QG와 QBG 없이 Linux에서 빌드 구성: cmake -DNGT_QBG_DISABLED=ON ..
- NGT은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/NGT-labs/NGT
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
관계형 데이터와 함께 임베딩을 저장하고 쿼리할 수 있는 Postgres용 오픈 소스 벡터 유사도 검색 확장 프로그램입니다.
Lance 형식으로 저장된 데이터에서 벡터, 전문 검색, SQL 검색을 지원하는 멀티모달 AI용 임베디드 검색 라이브러리 겸 데이터베이스입니다.
Nearest Neighbor Descent 기반의 순수 Python 근사 최근접 이웃 검색 라이브러리로, 다양한 거리 메트릭을 지원합니다.
NVIDIA GPU에서 머신러닝, 선형대수, 정보 검색을 위한 재사용 가능한 프리미티브를 제공하는 CUDA 가속 C++ 헤더 전용 라이브러리 및 Python 래퍼입니다.
Python, JavaScript, Rust, Java, Go, Swift 등 바인딩을 제공하는 근사 최근접 이웃 벡터 검색 및 클러스터링용 단일 파일 C++ 라이브러리입니다.