timescale/pg_vectorsearch

High-performance vector search for PostgreSQL

해결하는 문제

이 프로젝트는 PostgreSQL용 고성능 벡터 검색 인덱스를 제공하여 기존 대안보다 대규모 데이터 세트(1억 개 이상의 벡터)를 더 효율적으로 처리하도록 설계되었습니다. 고급 양자화와 계층적 분할을 사용하여 기존 벡터 인덱싱 방법의 성능 병목 현상을 해결합니다.

작동 방식

PRISM(Partitioned Routing Index for Similarity Matching) 인덱스를 도입합니다. 이는 네이티브 PostgreSQL 액세스 메서드입니다. 계층적 중심 트리를 사용하여 벡터를 클러스터링하고 RaBitQ 양자화를 사용하여 이론적 오류 범위를 유지하면서 데이터를 압축합니다. 검색 중에 시스템은 중심 트리를 탐색하여 관련 클러스터를 식별하고, 양자화된 데이터를 사용하여 후보를 필터링한 다음, 최종 고정밀 재순위화를 수행합니다. SIMD 명령(AVX2, AVX512, NEON)을 활용하여 빠른 거리 계산을 수행하고 PostgreSQL 버퍼 캐시와 직접 통합됩니다.

대상 사용자

PostgreSQL에서 AI 기반 애플리케이션을 구축하는 데이터베이스 관리자와 개발자를 위한 것입니다. 대규모 벡터 임베딩에 대해 빠르고 확장 가능한 유사성 검색을 수행하고 메모리 사용량과 쿼리 대기 시간을 최적화하려는 사용자에게 적합합니다.

주요 기능

  • 고성능: 대규모 데이터 세트에서 IVFFlat 및 HNSW보다 쿼리 및 인덱스 구축 시간이 훨씬 빠릅니다.
  • 메모리 효율성: 그래프 기반 대안보다 훨씬 적은 메모리를 사용하여 1억 개 이상의 벡터에서 높은 재현율을 달성합니다.
  • pgvector 호환: 테이블 재작성 없이 기존 vector 또는 halfvec 열의 드롭인 대체로 사용할 수 있습니다.
  • 고급 양자화: RaBitQ를 사용하여 전체 정밀도 재순위화의 필요성을 줄여 검색 작업을 가속화합니다.
  • SIMD 최적화: 최신 CPU 명령어 세트를 활용하여 거리 계산을 가속화합니다.

관련

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