주요 컨텐츠로 이동

pgvector란 무엇인가요?

기존 데이터베이스 내에서 벡터 임베딩을 기본적으로 저장하고 검색하기 위한 PostgreSQL 확장 프로그램입니다.

4 Personas AI Agents 6
데이터 + AI 기반Less than a minute

작성자: Databricks 직원

Summary

  • pgvector는 Postgres에서 직접 벡터 저장 및 유사성 검색을 가능하게 하는 PostgreSQL 확장 기능으로, 의미론적 검색, RAG, 추천과 같은 대부분의 AI 사용 사례에 대해 별도의 벡터 데이터베이스가 필요하지 않습니다.
  • SQL 내에서 여러 거리 측정 기준, 두 가지 인덱스 유형(HNSW 및 IVFFlat), 필터링된 검색 및 하이브리드 검색을 지원하므로 이미 Postgres를 사용하는 팀에게 운영상 단순합니다.
  • pgvector는 수백만 개의 벡터를 잘 처리하지만, 매우 높은 규모에서는 성능이 저하됩니다. pgvectorscale 및 Pinecone 또는 Weaviate와 같은 전용 벡터 데이터베이스는 워크로드가 증가함에 따라 자연스러운 다음 단계입니다.

pgvector는 벡터 임베딩(데이터의 수치 표현)을 저장, 인덱싱 및 검색하는 기능을 추가하는 오픈 소스 PostgreSQL 확장 기능입니다. 벡터 데이터와 유사성 검색을 애플리케이션 데이터가 있는 동일한 시스템으로 가져와 외부 벡터 데이터베이스에 의존하지 않고 의미론적 검색, 추천 및 검색 증강 생성(RAG)을 지원할 수 있습니다. pgvector는 이러한 AI 기반 사용 사례를 지원하기 위해 Postgres를 확장합니다.

많은 최신 AI 애플리케이션은 단순히 정확한 일치뿐만 아니라 의미론적으로 유사한 데이터를 검색하는 데 의존합니다. pgvector를 사용하면 팀이 기존 Postgres 스택 내에서 런타임에 이러한 유형의 검색을 수행할 수 있습니다. 예를 들어, 애플리케이션은 쿼리와 단어는 다르더라도 문맥상 유사한 콘텐츠를 검색해야 하는 경우가 많습니다. 이 접근 방식은 종종 코사인 유사도, 최근접 이웃 검색 또는 임베딩 기반 검색이라고 합니다.

이 문서는 상세한 구현 지침보다는 pgvector에 대한 높은 수준의 교육적 개요를 제공합니다.

pgvector 작동 방식

pgvector는 Postgres에 vector라는 새 데이터 유형을 추가합니다. 이를 통해 텍스트, 이미지 또는 기타 콘텐츠의 수치 표현인 임베딩을 별도의 시스템 없이 관계형 데이터와 함께 저장할 수 있습니다. 이러한 임베딩은 일반적으로 콘텐츠를 텍스트나 이미지와 같은 수치 형태로 변환하는 머신러닝 모델에 의해 생성됩니다.

전반적으로 프로세스는 간단합니다. 임베딩은 데이터베이스에 저장됩니다. 쿼리가 수신되면 입력에서 쿼리 임베딩이 생성되고 pgvector는 해당 쿼리와 가장 유사하거나 의미상 가장 가까운 벡터를 가진 레코드를 반환합니다. 키워드를 일치시키는 대신 의미에 따라 결과가 검색됩니다.

pgvector는 거리 측정 기준을 사용하여 유사성을 결정합니다.

  • L2 (유클리드 거리): 벡터 간의 거리를 측정하며, 값이 작을수록 유사성이 높음을 나타냅니다.
  • 코사인 유사도: 벡터가 같은 방향을 가리키는 정도를 측정하며, 종종 의미의 유사성을 반영합니다.
  • 내적: 벡터 간의 정렬을 측정하며, 정규화된 임베딩과 함께 자주 사용됩니다.

pgvector의 주요 기능

pgvector에는 Postgres 내에서 벡터 검색을 실용적으로 만드는 여러 기능이 포함되어 있습니다.

  • 인덱싱: 두 가지 인덱스 유형을 지원합니다: HNSW 및 IVFFlat. HNSW는 쿼리 속도를 우선시하며 메모리에 그래프 구조를 구축하지만 더 많은 메모리가 필요합니다. IVFFlat은 메모리 효율성이 더 높고 학습 단계를 사용하여 벡터를 클러스터로 분할하지만 쿼리가 느릴 수 있습니다.
  • 거리 측정 기준: L2, 코사인 유사도 및 내적은 대부분의 임베딩 기반 사용 사례를 다룹니다. Hamming 거리는 이진 벡터를 지원하고, Jaccard 거리는 더 특수한 시나리오에서 희소 벡터를 지원합니다.
  • 필터링된 검색: 벡터 유사성을 표준 관계형 필터와 결합할 수 있습니다. 예를 들어, 결과에는 재고가 있는 가장 의미론적으로 유사한 제품이 특정 가격 범위 내에 있거나 특정 범주에 속하는 제품이 포함될 수 있습니다.
  • 하이브리드 검색: pgvector는 Postgres 전체 텍스트 검색과 페어링하여 키워드 검색과 의미론적 검색을 혼합할 수 있습니다. 이를 통해 단일 쿼리에서 문맥상 관련성이 높고 텍스트상 정확한 결과를 얻을 수 있습니다.
  • 추가 데이터 유형: halfvec, sparsevecbit 유형과 같은 옵션은 대규모 임베딩 데이터 세트를 작업할 때 메모리 사용량을 줄이는 데 도움이 됩니다.

pgvector의 일반적인 사용 사례

pgvector는 AI 기반 애플리케이션 기능을 지원하는 데 널리 사용됩니다.

의미론적 검색 및 RAG

애플리케이션은 키워드가 아닌 의미에 따라 문서를 검색할 수 있습니다. 이는 검색 증강 생성(RAG)의 핵심 구성 요소로, 대규모 언어 모델이 검색된 컨텍스트를 사용하여 정확하고 관련성 높은 응답을 생성합니다. pgvector는 Postgres 내에서 직접 유사성 검색을 실행하므로 별도의 시스템 없이 실시간으로 검색이 가능합니다.

추천 시스템

항목을 과거 행동 또는 선호도와 일치시켜 추천을 지원할 수 있습니다. 이 패턴은 애플리케이션에서 제품 추천, 콘텐츠 검색 및 개인화에 일반적으로 사용됩니다. pgvector는 사용자 행동 또는 콘텐츠 패턴을 기반으로 관련 항목을 효율적으로 식별할 수 있게 합니다.

이미지 유사성

이미지 임베딩을 저장하고 비교하여 시각적으로 유사한 이미지를 빠르게 찾을 수 있습니다. 이는 미디어 플랫폼, 전자 상거래 및 창작 도구에서 널리 사용됩니다. 이러한 임베딩을 애플리케이션 데이터와 함께 저장하면 추가 인프라 없이 유사성 검색을 실행하기가 더 쉬워집니다.

이상 탐지

벡터 공간에서 일반적인 패턴과 거리가 먼 데이터 포인트를 찾아 이상치를 식별할 수 있습니다. 이는 사기 탐지, 모니터링 및 품질 관리에 유용합니다. pgvector는 벡터를 비교하고 편차를 감지하기 쉽게 하여 이를 가능하게 합니다.

중복 제거

표현 방식이나 형식이 다르더라도 중복되거나 거의 중복된 콘텐츠를 식별할 수 있습니다. 이는 콘텐츠 관리, 검색 품질 및 데이터 위생에 중요합니다. 유사성 기반 비교를 통해 정확한 일치를 넘어 중복을 감지할 수 있습니다.

pgvector 대 전용 벡터 데이터베이스: 각 도구 사용 시기

벡터 검색이 더 많은 애플리케이션에 포함됨에 따라 팀은 종종 실질적인 결정에 직면합니다. 벡터 검색을 Postgres에 유지해야 할까요, 아니면 전용 벡터 데이터베이스가 필요할까요? 답은 규모, 성능 요구 사항 및 운영 복잡성에 따라 달라집니다.

차이점은 주요 차원을 기준으로 요약할 수 있습니다.

도구

운영 복잡성

확장성 한계

하이브리드 쿼리 지원

비용

생태계 성숙도

pgvector

가장 낮음 (기존 DB)

높음 (~1억 개 이상 벡터)

가장 좋음 (기본 SQL 조인)

가장 낮음 (포함됨)

높음 (Postgres 생태계)

Pinecone

낮음 (서버리스/SaaS)

가장 높음 (수십억 개 이상)

보통 (메타데이터만 해당)

높음 (사용량 기반)

높음 (AI 전용)

Weaviate

보통 (멀티모달)

매우 높음

높음 (GraphQL/벡터)

보통

높음 (오픈 소스)

Qdrant

보통 (Rust 기반)

매우 높음

높음 (필터링 중심)

보통

빠르게 성장 중

pgvector는 이미 Postgres를 사용하고 있으며 확장 한계 이하에서 운영되는 팀에게는 자연스러운 시작점입니다. 벡터 검색이 기존 애플리케이션 워크플로의 일부이고 데이터 볼륨 또는 쿼리 요구 사항이 관리 가능한 수준으로 유지될 때 잘 작동합니다. 전용 벡터 데이터베이스는 쿼리 볼륨, 검색 정확도 요구 사항 또는 멀티 테넌트 워크로드가 Postgres가 효율적으로 지원할 수 있는 수준을 초과할 때 더 관련성이 높아집니다.

pgvectorscale

pgvectorscale은 전용 벡터 데이터베이스를 채택하기 전에 pgvector의 성능을 확장하려는 팀을 위해 설계되었습니다. 특히 인덱싱 속도와 쿼리 지연 시간과 관련하여 데이터 볼륨 및 쿼리 요구 사항이 증가함에 따라 발생하는 성능 및 확장성 문제를 해결합니다. pgvector가 대규모에서 성능을 향상시킴으로써 팀은 시스템을 재설계하지 않고도 Postgres를 더 오래 계속 사용할 수 있습니다. 이는 pgvector 자체만으로는 처리할 수 있는 한계에 가까워지는 애플리케이션에 실용적인 중간 단계입니다.

보고서

기업을 위한 에이전틱 AI 플레이북

제한 사항 및 확장 고려 사항

pgvector는 강력하지만 절충점이 있습니다.

  • 추가 최적화 또는 도구 없이 매우 높은 벡터 수(1천만 개 이상)에서는 성능이 저하될 수 있습니다.
    • HNSW 인덱스는 메모리 집약적이므로 대규모 배포에는 상당한 RAM이 필요할 수 있습니다.
    • Postgres는 벡터 워크로드에 대한 기본 샤딩을 제공하지 않으므로 수평 확장을 위해서는 외부 도구나 관리형 공급자가 필요합니다.
    • 검색 속도와 검색 정확도는 실제 절충 관계입니다. 검색 정확도(반환되는 실제 관련 결과의 백분율)는 최적화를 위해 의도적인 구성이 필요합니다.

이러한 제한 사항을 이해하면 pgvector가 충분한지, 추가 인프라가 필요한 시기를 결정하는 데 도움이 됩니다.

pgvector 시작하기

pgvector는 Homebrew와 같은 표준 패키지 관리자를 사용하여 macOS 및 대부분의 Linux 배포판에 설치할 수 있습니다. AWS RDS, Supabase, Azure Database for PostgreSQL, Google Cloud SQL 및 Neon을 포함한 많은 관리형 Postgres 플랫폼에서도 사용할 수 있습니다.

설치 및 설정 지침은 프로젝트 작성자가 유지 관리하는 단계별 지침을 포함하는 공식 pgvector GitHub 리포지토리에서 확인할 수 있습니다.

Postgres를 사용하는 Databricks 고객은 플랫폼별 지침을 위해 Databricks OLTP 확장 문서를 참조할 수도 있습니다.

pgvector와 최신 AI 데이터 스택

pgvector는 애플리케이션 런타임 시 낮은 지연 시간 검색이 필요한 AI 시스템의 운영 서빙 계층에서 작동합니다. 일반적으로 애플리케이션 내에서 의미론적 검색, 추천 및 검색 증강 생성(RAG)을 지원하는 데 사용됩니다.

반면, Databricks Mosaic AI Vector Search는 데이터 파이프라인이 레이크하우스에서 관리되는 대규모 배치 처리 AI 워크로드에 더 적합합니다. 이러한 환경은 중앙 집중식 데이터 처리, 대규모 데이터셋 및 복잡한 워크플로를 지원합니다.

이러한 접근 방식은 상호 보완적이며 팀은 종종 스택의 다른 계층에서 두 가지 모두를 사용합니다. pgvector는 실시간 애플리케이션 쿼리를 지원하는 반면, Databricks와 같은 플랫폼은 대규모 데이터 준비, 임베딩 생성 및 모델 기반 워크플로를 처리합니다.

자주 묻는 질문

pgvector는 완전한 벡터 데이터베이스인가요?
pgvector를 사용하면 Postgres에서 임베딩을 저장하고 해당 데이터에서 직접 유사성 검색을 수행할 수 있습니다. 그러나 전용 벡터 데이터베이스는 아닙니다. 전용 벡터 데이터베이스는 더 큰 워크로드에 대한 추가 확장성 및 성능 최적화를 제공합니다.

pgvector에서 HNSW와 IVFFlat의 차이점은 무엇인가요?
HNSW는 빠른 쿼리 성능에 최적화되어 있으며 인메모리 그래프 구조를 사용하여 더 많은 메모리가 필요합니다. IVFFlat은 메모리 사용량이 적고 학습 단계를 통해 벡터를 클러스터로 구성하지만 성능은 데이터셋 및 워크로드에 따라 달라질 수 있습니다. 속도 또는 메모리 효율성 중 우선 순위에 따라 선택이 달라집니다.

pgvector는 얼마나 많은 벡터를 처리할 수 있나요?
pgvector는 일반적으로 하드웨어, 인덱싱 전략 및 쿼리 패턴에 따라 수백만에서 수천만 개의 벡터를 처리할 수 있습니다. 데이터셋이 커짐에 따라 신중한 조정이나 추가 도구 없이는 성능이 저하될 수 있습니다. 사용 가능한 메모리, 인덱스 유형 및 쿼리 빈도와 같은 요인이 모두 확장성에 영향을 미칩니다.

pgvector는 코사인 유사도를 지원하나요?
예, pgvector는 주요 거리 측정값 중 하나로 코사인 유사도를 지원합니다. 두 벡터가 같은 방향을 가리키는 정도를 측정하며, 이는 임베딩 기반 애플리케이션에서 의미론적 유사성을 자주 반영합니다. 따라서 의미론적 검색, 추천 시스템 및 자연어 처리(NLP)에 적합합니다.

pgvector는 무료이며 오픈 소스인가요?
예, pgvector는 허용적인 라이선스에 따라 릴리스된 오픈 소스 프로젝트입니다. 표준 Postgres 설치 및 많은 관리형 Postgres 서비스와 함께 사용할 수 있습니다. 이를 통해 벡터 검색 기능을 추가하기 위한 접근 가능한 시작점을 제공합니다.

pgvector는 하이브리드 검색을 수행할 수 있나요?
예, pgvector는 Postgres 전체 텍스트 검색과 결합하여 하이브리드 검색을 지원할 수 있습니다. 이를 통해 결과는 의미론적 관련성과 키워드 일치를 균형 있게 조정하여 정확성과 사용성을 모두 향상시킬 수 있습니다. 하이브리드 검색은 의미와 정확한 용어가 모두 중요한 제품 검색 및 문서 검색과 같은 시나리오에서 특히 유용합니다.

올바른 벡터 검색 접근 방식 선택

pgvector는 기존 Postgres 애플리케이션에 벡터 검색을 추가하려는 모든 팀에게 실용적인 시작점입니다. 임베딩을 관계형 데이터와 함께 저장하고 데이터베이스 내에서 직접 유사성 검색을 지원함으로써 별도의 벡터 저장소를 관리하는 운영 오버헤드를 제거합니다. 의미론적 검색, RAG 파이프라인, 추천 및 이상 탐지와 같은 많은 워크로드에 대해 새로운 시스템을 요구하지 않고도 팀에 필요한 것을 제공합니다.

데이터 볼륨이 증가하거나 쿼리 요구 사항이 증가함에 따라 pgvector의 확장성은 전용 벡터 데이터베이스가 필요한 시점까지 팀이 갈 수 있는 범위를 확장할 수 있습니다. 통합 데이터 플랫폼 전반에 걸쳐 대규모 AI 워크로드를 관리하는 조직의 경우 Databricks Mosaic AI Vector Search는 레이크하우스 계층을 위해 설계된 상호 보완적인 접근 방식을 제공합니다. 이러한 도구는 팀에게 실제 워크로드 요구 사항에 맞춰 벡터 검색 인프라를 조정할 수 있는 유연성을 제공합니다. — 어떤 규모에서든.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

Never miss a Databricks post

Subscribe to our blog and get the latest posts delivered to your inbox