Nearest Neighbor Descent 기반의 순수 Python 근사 최근접 이웃 검색 라이브러리로, 다양한 거리 메트릭을 지원합니다.
microsoft/SPTAG
대규모 근사 최근접 이웃 벡터 검색을 위한 C++ 라이브러리로, 인덱스 구축·검색·분산 서빙 도구를 제공합니다.
- 스타
- 5,021
- 포크
- 625
- 열린 이슈
- 143
- 마지막 커밋
- 그저께
어떤 프로젝트인가요?
SPTAG(Space Partition Tree And Graph)는 벡터를 대상으로 근사 최근접 이웃 검색을 수행하는 라이브러리로, 시맨틱 검색과 추천 시스템에서 사용하는 조회 방식입니다. 쿼리 벡터를 입력하면 L2 또는 코사인 거리가 가장 작은 저장 벡터를 반환하며, 전수 비교보다 훨씬 빠르게 조회하는 대신 정확도를 약간 낮춥니다.
두 가지 인덱스 변형을 제공합니다. kd-tree를 사용하는 SPTAG-KDT는 인덱스 구축 비용이 낮고, 균형 k-means 트리를 사용하는 SPTAG-BKT는 차원이 매우 높은 데이터에서 더 높은 검색 정확도를 목표로 합니다. 두 변형 모두 공간 분할 트리와 상대 근접 그래프를 결합하며, 검색 시 두 구조를 번갈아 탐색해 결과를 찾습니다.
전체 인덱스를 다시 구축하지 않고도 벡터를 온라인으로 삽입하고 삭제할 수 있으며, 여러 머신에 검색을 분산할 수 있습니다. Python wrapper를 포함하고 Linux, Windows, Docker에서 빌드할 수 있습니다.
핵심 기능
- 01벡터 유사도 계산에 L2 거리와 코사인 거리를 지원합니다.
- 02kd-tree(SPTAG-KDT)와 균형 k-means 트리(SPTAG-BKT) 인덱스 변형을 제공합니다.
- 03인덱스를 다시 구축하지 않고도 벡터를 온라인으로 삽입하고 삭제할 수 있습니다.
- 04서빙을 위해 여러 머신에 검색을 분산합니다.
- 05Python wrapper와 온라인 벡터 검색 서비스를 구축하는 튜토리얼을 제공합니다.
활용 사례
- 임베딩 벡터를 대상으로 대규모 시맨틱 검색 백엔드를 구축할 때.
- 추천이나 이미지 유사도 검색을 위한 최근접 이웃 조회를 제공할 때.
- 자주 바뀌어 온라인 업데이트가 필요한 데이터셋을 인덱싱할 때.
- 인덱스 하나에 담기에는 너무 큰 데이터를 여러 머신에 걸쳐 검색할 때.
빠른 시작
- 1
서브모듈을 포함해 저장소를 클론합니다
git clone --recurse-submodules https://github.com/microsoft/SPTAG - 2
build 디렉터리에서 CMake로 빌드합니다(swig, cmake, boost 필요)
mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make - 3
Release 폴더에서 SPTAGTest 바이너리를 실행해 빌드를 확인합니다
사용 전 알아둘 점
- 소스에서 빌드하려면 swig, cmake, boost가 필요하며 Linux와 Windows의 절차가 다릅니다.
- 저장소를 빠르게 클론하려면 Git LFS와 서브모듈이 필요합니다.
포함된 컬렉션
토픽
자주 묻는 질문
- SPTAG은(는) 무엇인가요?
- 대규모 근사 최근접 이웃 벡터 검색을 위한 C++ 라이브러리로, 인덱스 구축·검색·분산 서빙 도구를 제공합니다. SPTAG(Space Partition Tree And Graph)는 벡터를 대상으로 근사 최근접 이웃 검색을 수행하는 라이브러리로, 시맨틱 검색과 추천 시스템에서 사용하는 조회 방식입니다. 쿼리 벡터를 입력하면 L2 또는 코사인 거리가 가장 작은 저장 벡터를 반환하며, 전수 비교보다 훨씬 빠르게 조회하는 대신 정확도를 약간 낮춥니다.
- SPTAG은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- SPTAG은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- SPTAG은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. SPTAG의 마지막 커밋은 2026년 11월 6일입니다.
- SPTAG은(는) 어디에 사용할 수 있나요?
- 임베딩 벡터를 대상으로 대규모 시맨틱 검색 백엔드를 구축할 때. 추천이나 이미지 유사도 검색을 위한 최근접 이웃 조회를 제공할 때. 자주 바뀌어 온라인 업데이트가 필요한 데이터셋을 인덱싱할 때. 인덱스 하나에 담기에는 너무 큰 데이터를 여러 머신에 걸쳐 검색할 때.
- SPTAG는 어떻게 설치하나요?
- 서브모듈을 포함해 저장소를 클론합니다: git clone --recurse-submodules https://github.com/microsoft/SPTAG build 디렉터리에서 CMake로 빌드합니다(swig, cmake, boost 필요): mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make Release 폴더에서 SPTAGTest 바이너리를 실행해 빌드를 확인합니다
- SPTAG은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/microsoft/SPTAG
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
HNSW 그래프 알고리즘을 사용해 빠른 근사 최근접 이웃 검색을 수행하는 Python 바인딩 포함 헤더 전용 C++ 라이브러리입니다.
그래프 및 트리 인덱스를 사용해 고차원 벡터에서 빠른 근사 최근접 이웃 검색을 수행하는 C++ 라이브러리이자 명령줄 도구입니다.
Python, JavaScript, Rust, Java, Go, Swift 등 바인딩을 제공하는 근사 최근접 이웃 벡터 검색 및 클러스터링용 단일 파일 C++ 라이브러리입니다.
pgvector에 DiskANN 기반 인덱스와 라벨 필터링을 추가해 벡터 검색을 더 빠르고 저렴하게 만드는 Rust 기반 Postgres 확장입니다.
관계형 데이터와 함께 임베딩을 저장하고 쿼리할 수 있는 Postgres용 오픈 소스 벡터 유사도 검색 확장 프로그램입니다.