pgvector 운영에서 구분할 두 상황
- 스키마 이전 — 벡터 컬럼이 있는 테이블에도 Alembic, dbmate, sqlx 같은 기존 이전 도구를 그대로 쓸 수 있어. 다만 데이터가 이미 든 테이블에 vector(N) NOT NULL 컬럼을 추가하려면 기존 값을 채울 계획이 필요해.
- 재임베딩 — 모델을 바꾸면서 차원이 달라지면 ALTER COLUMN으로 해결할 수 없어. 새 컬럼이나 새 테이블을 추가해야 해.
중단 없이 재임베딩하는 절차
ALTER TABLE chunks ADD COLUMN embedding_v2 vector(1024) NULL;을 실행해.- 텍스트를 읽어 임베딩한 뒤 embedding_v2가 NULL인 행을 배치로 채워.
- v2 인덱스를 만들어.
- 코드가 embedding_v2를 읽도록 전환해.
- 일주일 뒤 기존 embedding 컬럼을 삭제해.
백업
pg_dump와 특정 시점 복구는 평소처럼 작동해. 벡터 컬럼은 기본적으로 긴 텍스트로 직렬화되므로 매우 큰 테이블에서는 논리 덤프보다 기본 백업과 WAL 보관을 선호해.