도커 컴포즈를 사용한 PGVector 환경 구축
PostgreSQL에 PGVector 확장을 추가해서 랭체인 벡터 저장소로 활용한다.
디렉토리 구성
Section titled “디렉토리 구성”Directoryvector-search/
- docker-compose.yaml
Directorypostgres/
- schema.sql
PGVector 도커 컴포즈 설정
Section titled “PGVector 도커 컴포즈 설정”- 작업 디렉토리 생성 및 docker-compose.yaml 파일 생성
Terminal window mkdir vector-searchcd vector-searchtouch docker-compose.yamlmkdir postgrescd postgrestouch schema.sql - schema.sql 파일 편집
schema.sql -- Enable pgvector extensionCREATE EXTENSION IF NOT EXISTS vector;-- Create sample tableCREATE TABLE items (id SERIAL PRIMARY KEY,name VARCHAR(255) NOT NULL,item_data JSONB,embedding vector(1536) -- vector data); - docker-compose.yaml 파일 편집
docker-compose.yaml services:pgvector-db:image: pgvector/pgvector:pg17container_name: pgvector-dbenvironment:POSTGRES_USER: langchainPOSTGRES_PASSWORD: langchainPOSTGRES_DB: langchainports:- "5432:5432"volumes:- pgdata:/var/lib/postgresql/data- ./postgres/schema.sql:/docker-entrypoint-initdb.d/schema.sqlvolumes:pgdata: # Stores data outside the container to ensure persistence - PostgreSQL 기동
Terminal window docker-compose up -d
PostgreSQL 연결
Section titled “PostgreSQL 연결”- PostgreSQL 연결
Terminal window docker exec -it pgvector-db psql -U langchain -d langchain - 확장 목록 조회
Terminal window -- Check installed extensions\dxName | Version | Schema | Description---------+---------+------------+------------------------------------------------------plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural languagevector | 0.8.1 | public | vector data type and ivfflat and hnsw access methods(2 rows) - 테이블 생성 확인
-- Check table creation\dtSchema | Name | Type | Owner--------+-------+-------+-----------public | items | table | langchain(1 row)
- items 테이블 구성 조회
-- Check table structure\d itemsColumn | Type | Collation | Nullable | Default-----------+------------------------+-----------+----------+-----------------------------------id | integer | | not null | nextval('items_id_seq'::regclass)name | character varying(255) | | not null |item_data | jsonb | | |embedding | vector(1536) | | |Indexes:"items_pkey" PRIMARY KEY, btree (id)
참조문서 링크
Section titled “참조문서 링크”Build Your Own AI Search Engine (3 Part Series)