벡터 인덱스 압축은 더 낮은 정밀도의 표현을 저장해 RAM 사용량을 줄이지만, 그 결과 발생하는 거리 왜곡으로 최근접 이웃 재현율이 낮아질 수 있습니다.
홈 RAG 인덱스는 10만 개 청크까지는 여유 있게 수용하다가, 수년에 걸쳐 문서와 사진, 트랜스크립트가 쌓이면 메모리 한계에 도달할 수 있습니다. 양자화를 사용하면 더 많은 벡터를 메모리에 상주시킬 수 있지만, 검색 품질은 압축된 거리가 원본 정밀도에서의 후보 순서를 그대로 보존하는지에 따라 달라집니다. 결과는 임베딩 분포, 압축률, 인덱스 유형, 후보 범위, 그리고 재순위화를 위해 원본 벡터를 계속 사용할 수 있는지에 따라 달라집니다.
압축은 벡터 페이로드를 줄일 뿐, 모든 인덱스 비용을 줄이지는 않습니다
벡터 인덱스는 임베딩 값, 그래프 또는 파티션 구조, 식별자, 메타데이터, 메모리 할당자 오버헤드, 임시 쿼리 버퍼에 메모리를 사용합니다. 압축은 주로 임베딩 표현의 크기를 줄입니다. HNSW 링크와 메타데이터는 비슷한 수준으로 유지될 수 있으므로, 전체 RAM 절감량은 벡터 압축률이 시사하는 것보다 작을 수 있습니다.
고차원 벡터가 비용이 많이 드는 이유는 각 차원을 완전 정밀도 값으로 저장하면 메모리와 거리 계산 비용이 함께 증가하기 때문입니다. 이러한 값을 압축된 코드로 바꾸면 메모리에 상주하는 페이로드를 줄이고 캐시 효율을 높일 수 있습니다.
따라서 실제 절감량은 인덱스 구성에 따라 달라집니다. 일반적으로 고차원 부동소수점 벡터는 절감 효과가 크지만, 그래프 연결성이 높은 소형 벡터는 비례 기준으로 절감량이 더 작을 수 있습니다. 원시 벡터 바이트에 문서 수를 곱하는 대신, 압축 전후의 프로세스 상주 메모리와 인덱스 파일을 측정해야 합니다.
양자화는 거리 왜곡을 일으킵니다
스칼라 양자화는 각 차원을 더 작은 숫자 범위에 매핑하고, 곱 양자화는 벡터를 여러 부분공간으로 나눈 뒤 코드북 선택 항목을 저장합니다. 두 방식 모두 정확한 좌표를 근사값으로 대체합니다. 따라서 쿼리 거리는 원본 부동소수점 벡터가 아니라 복원된 값 또는 코드북 거리와 비교해 계산됩니다.
곱 양자화 실험에서는 복원된 거리의 왜곡과 재현율을 측정해 압축 성능을 평가합니다. 더 작은 코드는 지연 시간이나 메모리 사용량을 줄일 수 있지만, 실제 거리가 서로 비슷한 후보의 순서를 정확히 정하기는 더 어려워집니다.
모든 거리가 조금씩 부정확해진다고 해서 재현율이 반드시 떨어지는 것은 아닙니다. 관련 이웃이 후보 컷오프 아래로 밀려날 때 재현율이 하락합니다. 관련 청크와 무관한 청크 사이에 거리가 뚜렷하게 벌어진 쿼리는 강한 압축에서도 견딜 수 있지만, 서로 매우 가까운 후보가 많은 밀집된 의미 공간에서는 더 민감합니다.
후보 확장과 재순위화로 재현율을 회복할 수 있습니다
2단계 검색은 압축된 벡터로 폭넓은 후보 목록을 찾은 다음, 해당 후보의 거리를 더 높은 정밀도의 벡터로 다시 계산합니다. 오버샘플링을 사용하면 관련 항목이 근사 1단계에서 살아남을 가능성이 커지고, 재순위화는 작은 거리 차이가 압축 코드로 흐려진 경우에도 순서를 복원합니다.
더 높은 압축 수준은 일반적으로 재현율을 낮추지만, 오버샘플링과 재순위화를 사용하면 정확도를 높일 수 있습니다. 다만 회복 과정에서 추가 읽기, 메모리, 쿼리 작업이 필요하므로 압축은 품질 비용을 없애기보다 리소스의 사용처를 바꾸는 방식입니다.
전체 벡터를 디스크에 보관하면 RAM 사용량은 낮게 유지할 수 있지만 재순위화 시 스토리지 지연 시간이 추가됩니다. 벡터를 RAM에 보관하면 지연 시간은 줄어들지만 메모리 절감 효과는 감소합니다. 적절한 구성은 홈 서버가 메모리 용량, 스토리지 IOPS, 응답 시간 목표 중 무엇에 의해 제한되는지에 따라 달라집니다.
재현율은 로컬 검색 작업에서 측정해야 합니다
대표적인 쿼리에 대해 정확 검색 또는 고정밀도 검색을 실행해 기준 데이터 세트를 만든 다음, 압축 검색이 top-k 안에서 동일한 관련 이웃을 반환하는지 비교합니다. 패러프레이즈, 고유명사, 거의 중복된 문서, 희귀 용어, 그리고 답변이 미세한 증거 차이에 좌우되는 쿼리를 포함해야 합니다.
이는 검색 근거 신뢰도를 평가하는 데도 도움이 됩니다. 이웃 유사도와 답변 뒷받침 정도는 서로 관련 있지만 동일하지는 않습니다. 검색 기준에 대한 Recall@k를 측정하고, 순위가 바뀌거나 누락된 청크로 인해 생성 모델이 활용할 수 있는 증거가 달라지는지도 확인해야 합니다.
압축을 최대로 하는 것과 정밀도를 최대로 하는 것 중 보편적으로 더 나은 선택은 없습니다. RAM, 지연 시간, 작업 재현율이 원하는 균형에 도달할 때까지 압축을 높인 뒤, 임베딩 모델이나 코퍼스가 변경되면 다시 테스트해야 합니다. 폭넓은 사진 유사도 검색에 적합한 구성이 의미적으로 인접한 구절이 많은 기술 문서 검색에는 지나치게 손실이 클 수 있습니다.
기술 및 AI 허브
더 읽어보기

서비스를 추가할수록 Jellyfin 홈 서버 아키텍처가 달라지는 이유
Jellyfin 박스에 앱이 추가될수록 서비스 스택으로 확장되므로, CPU, 스토리지, 네트워크, 시크릿, 백업 및 복구 경계의 담당 주체를 명확히 정해야 합니다.

캐시를 용량으로 착각하지 않고 Jellyfin 성능을 측정하는 방법
신뢰할 수 있는 Jellyfin 벤치마크는 콜드 상태와 웜 상태를 별도로 표시하여 캐시된 메타데이터나 파일 시스템 페이지를 영구적인 하드웨어 성능으로 잘못 간주하지 않도록 합니다.

다중 사용자 Jellyfin에 필요한 iGPU 여유 성능은 어느 정도일까요?
Jellyfin iGPU의 여유 용량은 작업 부하에 따라 달라집니다. 임의의 사용률을 기준으로 삼지 말고, 반복적으로 재현 가능한 가장 높은 동시 트랜스코딩 조합을 처리한 뒤에도 여유를...

