벡터 데이터베이스 용량 계산기
입력
| 벡터 수 | 1,000,000 |
|---|---|
| 차원 | 1,536 |
| 값당 바이트 | 4 |
| 인덱스 오버헤드 | 25 % |
벡터 데이터베이스 용량 계산기
벡터 수, 벡터 차원, 값당 바이트 수, 그리고 근사 최근접 이웃 구조가 추가하는 인덱스 오버헤드로부터 임베딩 인덱스의 저장 용량을 추정합니다.
입력
벡터
인덱스
결과
값을 입력하면 계산 결과가 표시됩니다.
세부 정보
벡터 데이터베이스 용량이란
벡터 데이터베이스 용량은 임베딩 벡터 집합과 그 위에 구성된 검색 인덱스를 담는 데 필요한 저장 공간의 양입니다. 검색 시스템이 말뭉치를 임베딩하면 각 문서 청크는 벡터, 즉 고정 길이의 숫자 목록이 되며, 이 모든 벡터는 빠른 유사도 검색을 지원하는 어딘가에 저장되어야 합니다. 용량을 좌우하는 것은 세 가지로, 벡터가 몇 개인지, 각 벡터가 얼마나 긴지, 그리고 각 값이 몇 바이트를 차지하는지 입니다.
용량이 쌓이는 방식
벡터 하나는 차원 수만큼의 숫자로 이루어진 배열입니다. 각 숫자는 선택한 정밀도로 저장되는데, 32비트 부동소수점은 4바이트, 16비트 부동소수점은 2바이트, 8비트 양자화 정수는 1바이트입니다. 값 하나의 바이트 크기에 차원을 곱하면 벡터 하나의 크기가 나오고, 여기에 벡터 수를 곱하면 원시 용량이 됩니다.
원시 벡터 위에는 인덱스가 놓입니다. 쿼리를 저장된 모든 벡터와 비교하는 방식은 정확하지만 벡터 수가 수백만에 이르면 느려지므로, 벡터 데이터베이스는 근사 최근접 이웃 구조, 가장 흔하게는 HNSW 그래프를 구성하여 탐색이 전체 벡터 중 일부만 방문하도록 합니다. 이 그래프는 벡터마다 이웃 연결을 저장하며, 이 연결은 추가 데이터로서 보통 원시 용량의 5분의 1에서 절반 사이를 더합니다.
공식
벡터가 개, 차원이 , 각 값이 바이트를 차지할 때 원시 저장 용량은
Sraw=N⋅d⋅b이며, 분수 형태의 인덱스 오버헤드 를 더하면 총 용량은 다음과 같습니다.
S=Sraw⋅(1+o)계산 예시
차원 768인 모델에서 나온 벡터 2,400,000개를 완전 정밀도로 유지하여 각 값이 4바이트를 차지하고, HNSW 인덱스가 35퍼센트의 오버헤드를 더하는 경우를 생각해 보겠습니다. 원시 용량은
Sraw=2,400,000×768×4=7,372,800,000 bytes≈7.37 GB이고, 인덱스를 더하면
S=7.37 GB×1.35≈9.95 GB가 됩니다. 같은 벡터를 값당 1바이트인 8비트 양자화로 바꾸면 원시 용량은 약 1.84 GB, 총 용량은 약 2.49 GB로 떨어집니다. 거리 계산에서 약간의 정밀도 손실을 대가로 용량이 4분의 1로 줄어드는 것입니다.
참고와 변형
이 추정치는 벡터와 인덱스만 다룹니다. 대부분의 데이터베이스는 각 벡터 옆에 원본 텍스트 청크와 메타데이터도 저장하며, 짧은 청크에서는 그 데이터가 벡터 자체에 맞먹을 수 있으므로 총 디스크 용량을 산정할 때는 별도로 더해야 합니다. 차원 축소와 양자화는 인덱스를 줄이는 두 가지 주된 수단으로, 차원을 절반으로 줄이거나 int8로 양자화하면 각각 인덱스 오버헤드를 적용하기 전 원시 용량을 크게 줄여 줍니다.
활용
저장 용량은 호스팅 비용의 입력값입니다. 인덱스가 몇 기가바이트를 차지하는지 알면 벡터 데이터베이스 비용 계산기가그 값을 월 청구액으로 환산해 줍니다. 여기서 크기를 산정하는 벡터는 임베딩 비용 계산기에서가격을 매기는 임베딩 단계에서 생성되며, 벡터 수는 보통 원본 문서를 어떻게 나누는지에 따라 결정됩니다.
자주 묻는 질문 (FAQ)
인덱스는 왜 오버헤드를 추가합니까?
원시 벡터를 저장하면 쿼리를 모든 벡터와 비교할 수 있지만, 이 무차별 탐색은 규모가 커지면 느립니다. HNSW 같은 근사 최근접 이웃 인덱스는 탐색이 전체 벡터 중 일부만 방문하도록 탐색 가능한 그래프를 구성합니다. 이 그래프는 벡터마다 이웃 연결을 저장하므로 벡터 자체에 더해지는 추가 데이터가 되며, 그래프가 얼마나 촘촘히 연결되었는지에 따라 보통 20에서 50퍼센트 정도 더 늘어납니다.
양자화는 용량을 얼마나 절약합니까?
임베딩 값은 32비트 부동소수점으로 생성되며 값당 4바이트입니다. 이를 16비트 부동소수점으로 저장하면 용량이 절반이 되고, 8비트 정수 양자화는 4분의 1로 줄입니다. 양자화는 거리 계산에 작은 반올림 오차를 들이지만 검색에서 순위 품질의 손실은 대개 미미하므로, int8은 큰 인덱스를 줄이는 흔한 방법입니다. 값당 바이트 입력란으로 세 가지 선택지를 직접 비교할 수 있습니다.
여기에 메타데이터와 텍스트가 포함됩니까?
아닙니다. 이 추정치는 벡터와 검색 인덱스만 다룹니다. 대부분의 벡터 데이터베이스는 각 벡터 옆에 원본 텍스트 청크와 문서 ID, 제목, 태그 같은 메타데이터도 저장합니다. 짧은 청크에서는 이 데이터가 벡터 용량에 맞먹거나 그 이상이 될 수 있으므로, 총 디스크 사용량을 산정할 때는 별도로 더해야 합니다.
면책조항
이것은 벡터와 인덱스에 대한 근사 용량입니다. 실제 데이터베이스는 원본 텍스트, 메타데이터, 내부 관리 정보도 저장하며, 특정 인덱스의 오버헤드는 그 구성에 따라 달라집니다. 결과는 정확한 디스크 수치가 아니라 계획용 추정치로 다루시기 바랍니다.