MRVQ는 하나의 인덱스로 차원과 비트레이트를 모두 커버한다

MRVQ: One Resident Index for Dimension- and Rate-Elastic Vector Search

arXiv2610.03651v1

Sean Culatana2026-10-02

무엇인가

밀집 검색 서비스는 지연시간, 품질, 메모리 예산이 바뀔 때마다 임베딩 프리픽스 차원(Matryoshka 표현)과 인덱스 비트레이트를 함께 바꿔야 한다. 문제는 품질을 최대로 뽑으려면 rate마다 양자화기를 따로 튜닝해야 하고, 그러면 검색 티어가 여러 개의 코드 스트림과 양자화기 상태를 동시에 상주시켜야 한다는 점이다. 이 논문은 하나의 상주 문서 코드가 차원과 rate 두 축을 모두 커버할 수 있는지를 묻는다.

어떻게 동작하나

제안 방법 MRVQ(Matryoshka Residual Vector Quantization)는 동결된 문서 임베딩 위에 사후(post-hoc)로 적합하는 잔차 벡터 양자화기다. 단계 수 L, 단계당 코드워드 K=256인 잔차 양자화기에서 각 단계 인덱스는 1바이트를 차지하므로, 앞의 b개 단계만 디코딩하면 b바이트 코드가 된다. 차원 탄력성은 코드북을 학습할 때 프리픽스 차원 m ∈ M 각각에 대해 재구성 오차를 가중 합하는 손실(식 1)로 얻는다. 가중치 w_m은 균등하고 16개 잔차 단계도 동일 가중치를 준다. 서빙 시점에는 (m, b)가 재구성 벡터의 앞 m개 좌표를 선택할 뿐이고, 재인코딩도 추가 문서 코드도 필요 없다. 질의는 부동소수점 그대로 두고 PQ/OPQ, RaBitQ처럼 비대칭 스코어링을 한다.

무엇과 다른가

메모리 회계가 이 논문의 핵심 기여다. L=16일 때 MRVQ의 상주 상태는 fp32 코드북 4LKD 바이트에 벡터당 16바이트 코드를 더한 4LKD+16n이다. 반면 b ∈ {4,8,16}마다 QINCo2를 따로 두면 Σ(P_b + nb), 공유 모델 스틸맨은 P_16+16n이 된다. 문서 코드 항만 봐도 28n에서 16n으로 줄어 점근적으로 1.75배이고, 논문이 평가한 코퍼스 크기에서는 고정 양자화기 상태를 공유하는 효과가 훨씬 커진다. 저자들은 이 수치가 파라미터·코드 바이트만 센 해석적 회계이며 실제 프로세스 RSS 측정값이 아니라고 명시한다.

어떻게 쓰나

실험은 BEIR의 FiQA(문서 57,638개, 질의 648개)와 NFCorpus(문서 3,633개, 질의 323개)에서 수행했다. 임베딩 계열은 MPNet(D=768), Mxbai(D=1024), Nomic(D=768), BGE(D=768) 네 가지이고, 계열마다 {128,256,384,512,768,1024}의 프리픽스 메뉴와 {4,8,16}바이트/벡터 rate를 쓴다. 지표는 nDCG@10, 유의성은 질의별 페어드 부트스트랩(5000회 리샘플, RaBitQ 연구는 10,000회)이다.

전제와 한계

결과적으로 MRVQ는 12.06~16.88 MiB를 쓰며 두 데이터셋, 네 계열 전부에서 가장 낮은 상주 메모리 구성이었다. QINCo2를 rate별로 세 개 따로 학습한 구성 대비 17.8~22.0배, 축소된 임베딩 폭과 fp16 변형까지 포함한 가장 가벼운 공유 모델 구성 대비 1.89~2.02배 적다. 대가는 분명하다. FiQA의 모든 계열-레이트 셀에서 rate별 QINCo2가 MRVQ보다 nDCG@10이 0.026~0.107 높다. 다만 같은 코드 크기에서 MRVQ는 per-prefix OPQ를 약 0.06~0.07, PQ를 0.10~0.12 앞서고 AdANNS-OPQ는 평가한 모든 셀에서 이긴다. 즉 품질이 지배적 제약이면 QINCo2, 상주 메모리가 제약이면 MRVQ라는 두 개의 유효한 파레토 코너다.

별도로 저비용 PCA-scalar 구성도 평가한다. PCA로 회전한 뒤 좌표 분산에 따라 스칼라 비트를 배분하고 각 좌표를 독립적으로 양자화하는 방식으로, 고유분해는 필요하지만 반복적인 학습 코드북 훈련은 필요 없다. ℓ2 정규화 벡터에 Faiss 1.13.2 비대칭 코사인 검색을 쓴 비교에서 b=1/2/4 비트/차원일 때 RaBitQ 대비 풀링된 nDCG@10 차이는 +0.0076/+0.0029/+0.0010 및 −0.0009/+0.0012/+0.0006으로, 모든 절대 효과가 0.008 미만이고 Mxbai 1비트 셀 하나는 RaBitQ가 0.0039 앞선다. 저자들은 이를 우월이 아니라 비교 가능한 수준이라고 표현한다. 세 개의 홀드아웃 BEIR 코퍼스, 18개 셀, 8스레드 CPU 조건에서 PCA 학습은 중앙값 기준 OPQ 적합보다 420배, 평균 기준 686배 빠르며(0.17~6.95초 대 72~416초) 편차는 47~1967배다.

실무 관점에서 이 논문이 주는 것은 속도가 아니라 메모리다. 차원 메뉴와 rate 메뉴를 동시에 운영하면서 rate별 전용 아티팩트를 여러 개 상주시키는 구조라면, 하나의 사후 코드로 메뉴 전체를 커버해 상주 풋프린트를 줄이는 선택지가 생긴다. 대신 품질 손실이 rate별 전용 학습보다 크고, 저자들이 측정한 것은 상주 메모리와 랭킹 품질뿐이며 종단 간 ANN 지연시간이나 빌드 에너지, recall-throughput 곡선은 측정하지 않았다는 점을 전제로 삼아야 한다. RAM 절감을 속도 향상으로 읽으면 안 된다.

한계도 저자들이 직접 보고한다. NFCorpus 16단계에서 rate별 QINCo2는 검증 MSE가 수렴했는데도 검색이 붕괴해 BGE 시드 3/3(최고 0.035), Nomic 시드 1/3에서 nDCG@10이 MRVQ의 절반 아래로 떨어졌고, 살아남은 최고 Nomic 시드도 16단계 0.294 대 8단계 0.320으로 rate에 대해 비단조였다. 잔차 에너지 기반의 파라미터 없는 랭킹 보존 예측기도 사전 지정 기준을 놓쳤다(풀링 순위 상관 0.825 대 요구 0.85, 비공허 바운드를 주는 셀 72% 대 요구 90%). 평가 범위 자체도 규모가 크지 않은 BEIR 코퍼스 두 개와 임베딩 계열 네 개이며, n이 아주 커지면 공유 모델 대비 이점은 회계가 예측하는 대로 좁아진다.