1. PostgreSQL 공식 리포지토리 추가 (권장)
Ubuntu 기본 리포지토리의 PostgreSQL 버전보다 최신 버전을 사용하기 위해 공식 PGDG(PostgreSQL Global Development Group) 리포지토리를 추가합니다.
# GPG 키 가져오기
sudo apt install curl ca-certificates gnupg
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/postgresql.gpg >/dev/null
# 리포지토리 추가 (현재 Ubuntu 버전에 맞게 자동으로 설정됨)
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# 패키지 목록 업데이트
sudo apt update
2. PostgreSQL 및 pgvector 설치
이제 리포지토리에서 최신 PostgreSQL(이 글 작성 시점 기준 16)과 해당 버전에 맞는 pgvector를 설치합니다.
# PostgreSQL 16 버전과 관련 도구(contrib), pgvector 확장 설치
sudo apt install postgresql-16 postgresql-contrib-16 postgresql-16-pgvector
3. pgvector 확장 활성화
PostgreSQL 서버에 pgvector 패키지가 설치되었지만, 실제로 사용할 데이터베이스(DB) 내에서 이 확장을 활성화해야 합니다.
- CREATE DATABASE vector_db;
- \c vector_db
- CREATE EXTENSION vector;
- \dx
- \q
4. pgvector 사용 예시 (테스트)
이제 vector 타입을 가진 테이블을 만들고 간단한 유사도 검색을 테스트할 수 있습니다.
CREATE TABLE items (
id bigserial PRIMARY KEY,
embedding vector(3) -- 3차원 벡터를 저장할 컬럼
);
INSERT INTO items (embedding) VALUES
('[1,2,3]'),
('[4,5,6]'),
('[1,1,1]');
5. 유사도 검색
(벡터 거리 측정) <=> 연산자는 L2 거리(유클리드 거리)를 계산합니다. [1,2,3]과 가장 가까운 벡터를 찾아봅니다.
SELECT *, embedding <=> '[1,2,3]' AS distance FROM items ORDER BY distance LIMIT 1;