pgvector/pgvector

Open-source vector similarity search for Postgres

해결하는 문제

pgvector는 PostgreSQL용 오픈소스 확장으로, 데이터베이스 내부에서 벡터 임베딩을 직접 저장하고 검색할 수 있게 해줍니다. 이로 인해 전용 벡터 데이터베이스를 별도로 운영할 필요 없이, 관계형 데이터와 함께 임베딩을 유지하면서도 ACID 준수를 보장하고 표준 SQL 쿼리를 지원할 수 있습니다.

작동 방식

새로운 vector 데이터 유형과 유사성 검색을 위한 전용 거리 연산자를 도입합니다. 단정밀도, 반정밀도(halfvec), 이진(bit), 희소 벡터(sparsevec) 등 다양한 벡터 유형을 지원합니다.

검색 속도를 높이기 위해 두 가지 유형의 근사 최근접 이웃(ANN) 인덱스를 제공합니다:

  • HNSW (Hierarchical Navigable Small World): 다층 그래프 인덱스로 높은 쿼리 성능과 더 나은 속도-재현율 트레이드오프를 제공하지만, 더 많은 메모리와 느린 빌드 시간을 요구합니다.
  • IVFFlat (Inverted File Flat): 벡터를 리스트(클러스터)로 나누고 가장 가까운 리스트만 검색하는 인덱스로, HNSW보다 빠른 빌드 시간과 더 적은 메모리 사용량을 제공합니다.

대상 사용자

PostgreSQL을 이미 사용 중이며, RAG나 추천 시스템과 같은 AI 애플리케이션에 벡터 유사성 검색을 통합하고 싶지만, 새로운 인프라 복잡성을 피하고자 하는 개발자 및 데이터 엔지니어에게 적합합니다.

주요 특징

  • PostgreSQL 통합: JOIN, ACID 준수, 시점 복구 등 Postgres의 모든 기능을 활용할 수 있습니다.
  • 다양한 벡터 유형 지원: 단정밀도, 반정밀도, 이진, 희소 벡터를 처리할 수 있습니다.
  • 다양한 거리 메트릭: L2 거리, 내적, 코사인 거리, L1 거리, 하밍 거리, 자카르드 거리를 지원합니다.
  • 하이브리드 검색: Postgres의 전체 텍스트 검색과 결합하여 하이브리드 검색이 가능합니다.
  • 고급 인덱싱: WHERE 절을 사용한 필터링 시 재현율을 향상시키기 위해 반복 인덱스 스캔을 포함합니다.

관련

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