본문 바로가기
2026년 5월 13일1분 읽기

pgvector에서 Qdrant로 마이그레이션 — 1.2억 벡터인데 다운타임 어디까지 줄일 수 있나요

김
김영삼
조회 396댓글 4

RAG 파이프라인에서 pgvector를 1년 운영하고 있는데, 벡터 수가 1.2억을 넘어가면서 인덱스 빌드가 6시간 걸리고 p99 검색이 480ms로 안 됩니다. Qdrant로 옮기려고 하는데 다운타임을 어디까지 줄일 수 있을지 막막합니다.

현재 상황

  • PG 17 + pgvector 0.8, 1.2억 벡터(1024차원 float16)
  • 인덱스 빌드 6h, p99 search 480ms, RAM 96GB
  • 쓰기는 분당 800, 읽기는 초당 60

고민:

  1. dual-write로 한 달간 양쪽에 쓰고 검증한 뒤 cutover? 일관성 어떻게 확인하나요
  2. 아니면 snapshot dump → Qdrant import → WAL catch-up?
  3. Qdrant 클러스터 노드는 몇 대가 적당한지 (현재 96GB RAM 1대)

비슷한 규모로 옮겨보신 분 경험 있으시면 공유 부탁드립니다.

댓글 4

김김영삼5개월 전

1.2억 정도면 Qdrant로의 전환 가치 충분합니다. 비슷한 규모(8천만)에서 마이그레이션한 경험으로 정리합니다.


패턴 — dual-write + shadow read 권장


snapshot 기반은 1.2억이면 dump만 4시간, import도 6시간 정도 걸립니다. 그동안 WAL catch-up이 따라가지 못해서 결국 쓰기 정지 윈도가 1~2시간 필요합니다. 다운타임 거의 0으로 가려면 dual-write가 답입니다.


// 1단계 — application-level dual write
async function upsertVector(id, vec, meta) {
await pg.query('INSERT INTO vectors ...')
// shadow write — 실패해도 main flow 안 막음
qdrant.upsert({ collection: 'docs', points: [{ id, vector: vec, payload: meta }] })
.catch(e => log.warn('shadow write failed', e))
}

일관성 검증 — sampling 100K로 양쪽에 같은 query 날려서 top-10 overlap 측정. 95% 이상 일치 + 1주 안정이면 cutover. 그동안 read는 PG가 source of truth.


노드 수 — Qdrant는 RAM 효율이 pgvector 대비 약 60% 좋습니다. 1.2억 1024차원 = 약 480GB → 3-node 클러스터(192GB 각) 또는 quantization으로 single-node 256GB도 가능. shard replication factor 2 권장.


quantization 고려 — Scalar Quantization(int8) 적용 시 메모리 1/4, recall 손실 2~3%. 실측 후 결정.

데데이터사이언스현5개월 전

1.5억 규모로 옮긴 적 있는데 한 가지 추가하면, payload 필터 패턴이 다릅니다. pgvector는 SQL WHERE로 자유롭지만 Qdrant는 payload 필터에 인덱스 등록한 키만 빠릅니다.


예를 들어 tenant_id, region 같은 자주 쓰는 필터는 미리 payload index 만들어야 query 100ms → 8ms 됩니다. 안 만들면 풀스캔이라 pgvector보다 느려질 수도 있어요.


// 컬렉션 만들 때
client.createPayloadIndex({
collection_name: 'docs',
field_name: 'tenant_id',
field_schema: 'keyword',
})

그리고 hybrid search(BM25 + vector) 하실 거면 Qdrant 1.10+의 sparse vector 지원 확인하세요.

박박지윤(guest)5개월 전
저는 4000만짜리를 dual-write 없이 옮겼는데 read-only 모드로 4시간 다운타임 잡고 한 번에 했습니다. 사용자가 쓰기를 안 하는 새벽이라 가능했어요. 1.2억은 쓰기가 분당 800이면 dual-write가 맞는 것 같네요.
참고로 Qdrant 클라우드는 비싸서 자체호스팅 권장합니다. r7g.4xl 3대로 충분했어요.
jjp_dev(guest)5개월 전
1.2억이면 Weaviate도 고려해보세요. Qdrant보다 hybrid search(BM25 + dense)가 한 줄로 됩니다. 다만 RAM 효율은 Qdrant가 좀 더 좋습니다.
Ctrl+Enter로 등록