본문 바로가기
Conference

[DB] PostgreSQL pgvector Extension

by rla124 2025. 4. 3.

이전에 PostgreSQL의 파급성과 pgvector extension에 대해 알게 되었던 경험을 바탕으로 정리를 해보려고 한다.
 

Open Source No.1 DBMS

PostgreSQL은 OSS 사상을 바탕으로 다양한 분야의 커뮤니티로 확대 적용되어 PostgreSQL Ecosystem으로 자리잡았다고 생각한다. 실제 ML/AI 분야에서도 PostgresML, pgVector, pg_sparse 등 PostgreSQL 기반의 다양한 기술들이 적용되고 있다. 
 
PostgreSQL이 대두될 수 있었던 원인은 뭘까?
1. 수직적인 확장성을 보장하기 때문에
2. 사용자 정의 데이터 유형도 지원하기 때문에
3. 쉬운 서드파티 도구와 통합될 수 있기 때문에
4. 오픈소스 및 커뮤니티 중심의 지원이 가능하기 때문에
 
실제 약 1000개 이상의 extension을 지원하고 있으며 그 중 pgvector extension을 살펴보고자 한다.
 

Vector DataBase vs PostgreSQL

벡터DB란 여러 가지 정보를 말 그대로 벡터로 저장하는 DB로 아래의 특징을 가진다.
- 벡터 임베딩 저장 및 인덱스화 → 비정형/반정형 데이터 기반 대규모 dataset 색인
- 고차원 벡터 데이터 기반 트리 구조||해시 기반 인덱싱 적용 → 검색 성능 최적화 →  빠른 검색 가능
- 코사인 유사도, 유클리드 거리 등 유사성 측정 방법 제공 → 벡터 간 유사성 평가 → 유사도 기반 검색 가능
- 벡터 데이터에 대한 통계 분석 및 패턴 인식 제공 →  클러스트링, 차원 축소, 이상 탐지 등 다양한 벡터 분석 알고리즘 적용 가능
 
그렇다면 PostgreSQL과 Vector DataBase의 차이점은 뭘까?

  PostgreSQL VectorDB
사용 사례 범용 RDBMS
- 트랜잭션, 분석 등
- 다양한 app에 적용 가능
- 분석 처리 특화
- 트랜잭션 처리 부적합
성능 자체 성능은 우수하나 분석 측면에서 VectorDB보다 약할 수 있음 고차원 데이터 분석 시나리오에서 우수
- 고차원 데이터 처리를 위한 벡터 스토리지
- 벡터화 연산 기능 제공
CRUD - ACID 트랜잭션
- 데이터 일관성 및 안정성 보장
- CUD가 아닌 R에 대한 지속성을 제공
- 검색을 위한 벡터화/색인화 특화

 
VectorDB와 PostgreSQL을 비교한 이유는 벡터DB의 장점을 지원해주는 PostgreSQL의 extension이 존재하기 때문이다.
PostgreSQL에서 지원하는 vector 유사성 검색 extension이 있다면 어떻게 활용될 수 있고 그 장점은 무엇일까?
 

pgvector를 활용한 간단한 예제

해당 익스텐션은 PostgreSQL과 함께 사용될 수 있는 extension이며 장점은 아래와 같다.
1. 벡터 데이터 저장, 쿼리, 분석 기능 제공
2. ACID 준수, 시점 복구, Join 및 Postgres의 기능을 지원
 
pgvector를 활성화해서 간단한 사용법을 소개하고자 한다.

ㄱ) pgvoctor extension을 import 한다.
ㄴ) execute query 명령을 통해 embedding vector(384) 설정을 해서 384차원 벡터를 담을 수 있는 테이블을 생성한다.
ㄷ) input과 같이 3개의 문장을 입력 데이터로 지정한다.
ㄹ) SentenceTransformer를 통해서 문장을 처리할 모델을 지정한다.
ㅁ) 입력 문장을 벡터 데이터로 인코딩한다. 
ㅂ) 테이블에 문장과 embedding 벡터값을 insert 한다.
 
결과는 아래 캡쳐본과 같이 확인이 가능하다.

 

pgvector의 가치

RDBMS 상에서 추상적인 문장 데이터를 연산이 가능한 수학적 단위인 벡터로 변환하여 저장하는 것이 가능해졌기 때문에 수많은 기법들을 사용한 분석이 가능해졌다는 것에 의의가 있다. 이를 활용해서 실제 적용을 통한 결과를 낼 기회가 있었으면 좋겠다.