Repolode
microsoft

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. 1

    서브모듈을 포함해 저장소를 클론합니다

    git clone --recurse-submodules https://github.com/microsoft/SPTAG
  2. 2

    build 디렉터리에서 CMake로 빌드합니다(swig, cmake, boost 필요)

    mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make
  3. 3

    Release 폴더에서 SPTAGTest 바이너리를 실행해 빌드를 확인합니다

사용 전 알아둘 점

  • 소스에서 빌드하려면 swig, cmake, boost가 필요하며 Linux와 Windows의 절차가 다릅니다.
  • 저장소를 빠르게 클론하려면 Git LFS와 서브모듈이 필요합니다.

포함된 컬렉션

토픽

#vector-search#approximate-nearest-neighbor#similarity-search#distributed-systems#cpp#indexing#approximate-nearest-neighbor-search#distributed-serving#fresh-update#neighborhood-graph

자주 묻는 질문

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 통계는 매일 갱신됩니다.

관련 프로젝트