Capacity Planning
1. 메모리(RAM) 산정
벡터를 모두 메모리에 적재해 최적의 검색 속도를 내고 싶다면 다음 식으로 대략적인 RAM 용량을 계산할 수 있다.
메모리 = 벡터 수 × 차원 수 × 4바이트 × 1.5
마지막 1.5배는 HNSW 그래프·메타데이터·임시 세그먼트 등 부가 오버헤드를 고려한 값이다.
예를 들어 1,000,000개의 1,024차원 벡터를 메모리에 올린다면
1,000,000 × 1,024 × 4 × 1.5 ≒ 5.7 GB
팁
양이 방대하다면 양자화(Quantization)를 적용해 필요한 RAM을 추가로 줄일 수 있다.
메모리에 올릴 벡터 양을 절반으로 줄이면 지연 시간(latency)이 대략 2배 증가한다고 가정하면 된다.
2. 페이로드 크기 산정
페이로드는 데이터 구조에 따라 편차가 크다.
타입 | 예시 크기 | 설명 |
---|---|---|
문자열 | 길이에 비례 | 텍스트 길이와 인코딩 방식에 영향 |
int64/float64 | 8 B | 숫자형 |
bool | 1 B | 불리언 |
페이로드 총 크기는 다음 식으로 추정한다.
총 페이로드 = 포인트 수 × 단일 페이로드 크기 × 1.5
예를 들어 5 KB JSON 페이로드를 가진 1 M 포인트라면 약 4.77 GB를 예상한다.
3. RAM ↔ 디스크 배치 전략
시나리오 | 권장 설정 |
---|---|
대규모 벡터, 평균 지연 허용 | 메모리 매핑(mmap). 벡터는 디스크에 두고 자주 조회되는 일부만 캐시 |
다중 테넌트/서브그룹 검색 | 메모리 매핑 + 테넌트별 서브셋만 캐시 |
전체를 메모리에 | 충분한 RAM 확보, 앞의 계산식 참고 |
디스크 I/O 속도 역시 성능에 큰 영향을 미친다. Qdrant Cloud 고용량 검색이 필요하다면 문의를 권장한다.
4. 디스크 확장(Qdrant Cloud)
UI에서 Scale Up 기능으로 디스크를 늘릴 수 있다.
한 번 늘린 디스크는 줄일 수 없으므로 계획적으로 결정해야 한다.
확장 이점
-
더 큰 데이터셋 저장 → 검색 품질 향상
-
HNSW 등 고급 인덱스 적용
-
RAM 여유 증가 → 캐싱 효율 향상
-
백업 및 중복성 확보
5. 요약 계산 식
항목 | 식 |
---|---|
벡터 메모리 | N_vectors × dim × 4B × 1.5 |
페이로드 메모리 | N_points × payload_size × 1.5 |
서브그룹 메모리 | N_active_vectors × dim × 4B × 1.5 |
모든 수치는 추정치이므로 실제 데이터로 프로파일링하여 검증하는 것이 가장 정확하다.