개요
PostgreSQL에서는 pgvector라는 PostgreSQL 확장(Extension)을 사용하여 벡터 데이터를 쉽게 저장하고 쿼리할 수 있게 해준다.
pgvector는 PostgreSQL에서 벡터 데이터를 저장하고 검색하는 데 유용한 확장이다. 이 확장을 사용하면 머신러닝 모델의 출력을 데이터베이스에 저장하고, 나중에 이 데이터를 기반으로 다양한 분석을 할 수 있다. 또한, 아래 그림처럼 Langchain과 pgvector를 사용하여 RAG 시스템을 구축할 수도 있다.
이렇듯, 데이터베이스에서 벡터 데이터를 다루는 게 점점 중요해지고 있다. 이 글에서는 이러한 벡터 데이터를 저장할 수 있는 여러가지 방법중에 pgvector를 사용하여 PostgreSQL 데이터베이스에서 활용하기 위한 pgvecor의 설치와 환경 구성 및 간단한 예제를 설명하고자 한다.
PostgreSQL 설치확인
터미널을 열고 아래 명령어를 통해 PostgreSQL 설치 여부를 확인한다.
$ postgres --version
$ pg_config
이 명령어로 PostgreSQL 버전이 제대로 출력되어야 한다. 특히, pg_config 바이너리가 반드시 존재해야 하며, 이를 실행하여 설치된 PostgreSQL의 config 정보를 확인할 수 있어야 한다.
만약 PostgreSQL이 설치가 되었지만 위 명령어 실행이 되지 않는다면, postgres, pg_config 바이너리가 있는 디렉토리를 PATH환경 변수에 등록한다.
export PATH=<path to pg binary dir>:$PATH
pgvector 설치
준비가 되었으면 pgvector를 설치해보자. 본 글에서는 github에서 소스코드를 가져와 직접 빌드하고, PostgreSQL에 설치해 보겠다.
$ git clone git@github.com:pgvector/pgvector.git
$ cd pgvector
$ make install
이 방법 외에도 Homebrew를 사용해서 아래 처럼 간단하게 설치할 수 있다. 터미널에서 아래의 명령어를 입력한다. 다만, Homebrew를 사용한다면 postgres@14 밖에 사용할 수 없다.
pgvector 설정
설치가 끝나면 PostgreSQL에 pgvector를 추가해야 한다. PostgreSQL에 접속하고, 아래의 SQL 명령어를 실행한다.
$ psql -d postgres
postgres=# CREATE EXTENSION vector;
이러면 pgvector를 통해 벡터 데이터를 저장할 수 있는 환경이 구성 되었다.
예제
다음과 같은 SQL 명령어를 통해 벡터 데이터를 저장할 수 있다.
CREATE TABLE documents (
id serial PRIMARY KEY,
content text,
vector vector(3) -- 여기서 3은 벡터의 차원 수
);
이렇게 하면 documents라는 테이블이 생성되고, 벡터 타입의 컬럼이 추가된다. 벡터의 차원 수는 원하는 대로 설정할 수 있다.
이제 아래 간단한 쿼리를 작성해서 데이터를 삽입해보자.
sql
INSERT INTO documents (content, vector) VALUES
('첫 번째 문서', '[0.1, 0.2, 0.3]'),
('두 번째 문서', '[0.4, 0.5, 0.6]');
이렇게 입력한 후에 아래 쿼리로 데이터를 조회해보면, 벡터 데이터가 잘 저장된 걸 확인할 수 있다.
SELECT * FROM documents;
결론
pgvector를 사용하면 데이터베이스에서 벡터 데이터를 효율적으로 저장하고 검색할 수 있다. 앞으로 데이터와 AI가 결합하는 시대에 맞춰 pgvector를 잘 활용한다면 더 다양한 방면으로 벡터 데이터를 활용할 수 있을 것으로 기대한다.
참고문헌
PostgreSQL PGVector 설치 및 사용하기(Feat. 벡터 데이터베이스(Vector Database) 구축)
'Postgres > Extension' 카테고리의 다른 글
Libsodium 라이브러리: 현대적인 암호화의 솔루션 (4) | 2025.05.25 |
---|---|
PostgreSQL의 PL/Proxy: 데이터베이스 샤딩과 원격 프로시저 호출을 위한 도구 (0) | 2025.05.24 |
pgcrypto의 단방향 암호화 알고리즘 (1) | 2025.05.21 |