pgvector는 PostgreSQL(Postgres라고도 함)용 확장 프로그램으로, 벡터 작업을 간소화하여 관계형 데이터베이스에 직접 벡터를 저장, 검색, 색인 생성할 수 있게 해줍니다.
pgvector를 사용하면 새로운 벡터 데이터 유형을 연결하기 위해 데이터를 이동하거나 애플리케이션 아키텍처를 변경할 필요 없이 유사성 검색과 같은 고급 기능을 애플리케이션과 AI 에이전트에 간단하고 확장 가능하게 추가할 수 있습니다.
pgvector는 기존 PostgreSQL 데이터베이스 내에서 직접 고차원 벡터를 저장, 색인 생성, 검색할 수 있도록 지원하는 PostgreSQL용 오픈소스 확장 프로그램입니다. pgvector는 다음을 지원하는 것으로 알려져 있습니다.
벡터는 데이터의 주요 특성을 포착하는 방식으로 데이터를 수치적으로 표현하여 가상 수학 공간에 매핑합니다. 이 공간에서는 단어, 이미지, 객체와 같은 유사한 항목이 서로 가까이 배치됩니다.
예를 들어 '코트'와 '재킷'이라는 단어를 생각해 보겠습니다. 기존의 키워드 기반 검색은 글자가 상당히 다르기 때문에 이 두 단어를 유사한 단어로 연결하지 않습니다. 이러한 키워드를 통합하려는 전자상거래 시스템은 수동으로 통합해야 합니다. 그러나 이 두 단어는 의미가 비슷하기 때문에 벡터 표현이 매우 유사합니다. 따라서 사용자에게 더 정확한 검색 결과를 제공하고 개발자의 시간을 절약할 수 있습니다.
마찬가지로 고양이 사진 두 장을 찍으면 픽셀 단위로 보면 크게 다를 수 있습니다. 그러나 벡터 임베딩은 수학적 공간에서 이 두 이미지를 매우 가까이 배치합니다. 사람이 이 두 이미지를 모두 고양이 이미지로 쉽게 식별하는 것과 마찬가지입니다.

이를 위해서는 임베딩 모델이 이미지나 텍스트와 같은 원시 데이터를 벡터 임베딩으로 변환해야 합니다. pgvector는 이러한 임베딩을 데이터베이스에 저장합니다. 사용자가 쿼리를 제출하면 해당 입력도 벡터로 변환됩니다. 그런 다음 pgvector는 쿼리 벡터와 저장된 벡터 사이의 거리를 계산하여 유사성 점수가 가장 높은 '최근접 이웃'을 효율적으로 식별합니다.
다양한 유형의 최근접 이웃 검색에 대해 궁금하신가요? 생성형 AI 앱 개발 가이드를 확인하세요.
PostgreSQL은 테이블, 행, 열을 사용하여 정형 데이터를 처리하도록 설계된 강력한 오픈소스 관계형 데이터베이스 관리 시스템입니다.
pgvector는 PostgreSQL 내에서 실행되는 확장 프로그램입니다. 데이터베이스에 새로운 데이터 유형인 '벡터'를 추가하여 표준 운영 데이터와 함께 벡터 임베딩을 저장하고 처리할 수 있습니다.
아니요, pgvector는 기존 PostgreSQL 데이터베이스에 직접 통합되는 확장 프로그램입니다. 이를 통해 새 인프라나 별도의 인프라를 관리하지 않고도 고급 AI 및 검색 기능을 추가할 수 있습니다.
오늘날의 AI 기반 기능을 지원하려면 벡터 임베딩을 저장하고 관리할 수 있어야 합니다.
PostgreSQL은 그 자체로도 강력하지만 데이터가 테이블, 행, 열로 엄격하게 구조화되어 있기 때문에 쿼리 기능이 주로 키워드 및 패턴 일치로 제한됩니다.
AI의 세계에서 텍스트, 이미지, 오디오와 같은 복잡한 데이터는 벡터 표현으로 인코딩됩니다. 이러한 인코딩을 통해 AI 모델은 데이터 내의 컨텍스트와 시맨틱 관계를 파악하여 지능형 검색, 추천, 생성형 AI와 같은 기능의 기반을 형성할 수 있습니다.
pgvector 확장 프로그램은 벡터 임베딩을 사용하여 SQL처럼 키워드 일치뿐만 아니라 쿼리의 의미를 기반으로 결과를 찾아 PostgreSQL에 시맨틱 검색을 제공합니다. 유사성 검색이라고 하는 이 프로세스를 통해 애플리케이션을 다시 설계하거나 데이터를 별도의 벡터 데이터베이스로 이동할 필요 없이 고급 검색 기능을 애플리케이션에 직접 추가할 수 있습니다.
벡터 임베딩에 대해 더 자세히 알아보고 싶으신가요? 생성형 AI 앱 개발 가이드를 확인하세요.
pgvector는 고차원 벡터를 처리할 수 있는 기능을 통해 다양한 고급 애플리케이션을 지원합니다.
기존 관계형 데이터베이스의 키워드 일치는 데이터에서 의미 있는 연결을 식별하지 못하는 경우가 많습니다. 유사성 검색은 유클리드 거리 및 코사인 거리와 같은 측정항목을 사용하여 벡터 근접성을 비교하여 더 깊은 패턴을 찾습니다. 이는 의미별로 결과의 순위를 매기는 이미지 인식 및 시맨틱 검색과 같은 애플리케이션에 매우 중요합니다. 예를 들어 전자상거래에서는 유사성 검색을 통해 사용자 행동을 분석하고 관련 항목을 찾아 제품을 추천할 수 있습니다.
벡터 기반 자연어 처리를 통해 AI 에이전트는 컨텍스트를 이해하여 더욱 맞춤화된 대화와 정확한 대답을 제공할 수 있습니다. 다국어 지원은 가상 어시스턴트 및 고객 서비스 플랫폼으로서의 성능을 향상시킵니다.
pgvector는 데이터에서 비정상적인 패턴을 식별하는 데 필수적인 벡터 임베딩을 저장하고 쿼리할 수 있도록 지원하여 AI 워크플로를 개선합니다. 벡터 근접성을 분석하여 사기 방지, 네트워크 보안 또는 품질 관리를 위해 실시간으로 이상치를 감지하는 데 도움이 됩니다.
감정 분석은 메시지의 의도를 분석하여 부정적인 댓글을 적절하게 라우팅하여 더 빠르게 조치를 취하고 맞춤형 해결책을 만들 수 있도록 합니다.
pgvector는 PostgreSQL의 확장성, 트랜잭션 지원, 강력한 안정성을 활용하여 고차원 데이터 세트를 효율적으로 관리합니다. 또한 친숙한 SQL 문법을 사용하므로 기존 팀이 쉽게 액세스할 수 있어 벡터 색인 생성 및 검색 전용의 추가 도구나 인프라가 필요하지 않습니다.
기존 PostgreSQL 기반 앱에 쉽게 통합됩니다.
데이터 세트 증가에 따른 PostgreSQL의 확장성을 개선합니다.
거리 측정항목 및 색인 생성과 같은 맞춤설정 가능한 기능을 제공합니다.
PostgreSQL의 신뢰할 수 있는 보안 및 안정성을 상속합니다.
정형 데이터와 비정형 데이터를 원활하게 쿼리할 수 있습니다.
대규모 고차원 데이터 작업을 위한 개발자 친화적인 솔루션을 제공합니다.
기존 SQL 쿼리와 최신 벡터 검색 모두에 뛰어난 단일 데이터베이스를 원한다면 PostgreSQL용 AlloyDB를 고려해 보세요. AlloyDB는 Google에서 개발한 ScaNN(확장 가능한 최근접 이웃) 벡터 유사성 검색 알고리즘을 사용하여 대규모 데이터베이스 내의 트랜잭션 및 분석 워크로드에 대해 다른 클라우드 기반 PostgreSQL 서비스보다 훨씬 높은 성능을 제공합니다.
AlloyDB가 정형 데이터와 비정형 데이터를 동시에 검색하는 방법을 알아보세요.
Cloud SQL과 PostgreSQL용 AlloyDB는 pgvector를 지원하므로 표준 SQL 명령어를 사용하여 벡터 임베딩을 저장하고 쿼리할 수 있습니다.
선호하는 PostgreSQL 클라이언트(예: psql, pgAdmin 또는 Google Cloud 콘솔)를 사용하여 Cloud SQL 또는 AlloyDB 인스턴스에 연결합니다.
다음 SQL 명령어를 실행하여 데이터베이스에서 확장 프로그램을 사용 설정합니다. 이 작업은 데이터베이스당 한 번만 수행하면 됩니다.
벡터 데이터의 열을 포함하도록 새 테이블을 만들거나 기존 테이블을 변경합니다. 벡터의 차원을 지정해야 합니다. 예를 들어 3차원 임베딩을 저장할 테이블을 만들려면 다음을 실행합니다.
표준 데이터와 마찬가지로 벡터 임베딩을 삽입할 수 있습니다. 벡터는 괄호로 묶인 배열 형식으로 지정됩니다.
이제 데이터를 쿼리하여 최근접 이웃을 찾을 수 있습니다. <-> 연산자는 유클리드 거리(L2 거리)를 계산하며, 이는 가장 유사한 항목을 찾는 데 일반적으로 사용됩니다.
더 큰 데이터 세트의 경우 색인을 추가하면 검색 성능을 크게 높일 수 있습니다. HNSW 및 ScaNN 색인은 일반적으로 사용되는 옵션입니다. HNSW 예시는 다음과 같습니다.