TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 44 READS

임베딩 저장 공간 97% 줄이고 검색 품질은 97.5% 유지하는 비대칭 양자화

임베딩 저장 공간 97% 줄이고 검색 품질은 97.5% 유지하는 비대칭 양자화

임베딩 모델을 만드는 Mixedbread AI가 벡터 검색의 고질적인 저장 공간 문제를 푸는 방법을 공개했는데요. 결론부터 말하면, 저장 공간을 97% 줄이면서도 검색 품질은 원본의 97.5%, 재정렬까지 하면 99.4%를 유지한다고 합니다. 숫자만 보면 마법 같은데, 원리를 뜯어보면 의외로 단순하고 우아해요.

벡터 검색의 저장 공간 문제

먼저 배경부터 볼게요. RAG나 시맨틱 검색을 만들 때 문서를 임베딩 벡터로 바꿔서 저장하잖아요. 1024차원짜리 float32 벡터 하나가 4KB거든요. 문서가 10억 개면 인덱스는 빼고 순수 벡터만 4TB예요. 이걸 빠르게 검색하려면 메모리에 올려야 하니까 비용이 어마어마해지죠.

그래서 보통 양자화(quantization)를 씁니다. 이게 뭐냐면, 소수점 숫자를 더 적은 비트로 뭉뚱그려 표현하는 거예요. 사진 화질을 낮춰서 용량을 줄이는 것과 비슷해요. 극단적으로는 각 차원을 1비트(0이냐 1이냐)로만 표현하는 이진 양자화까지 가는데, 당연히 화질(검색 품질)이 떨어진다는 게 지금까지의 상식이었어요.

핵심 아이디어: 쿼리와 문서를 다르게 취급하기

Mixedbread의 주장은 이 품질 손실의 상당 부분이 양자화 자체 때문이 아니라 대칭(symmetric) 양자화, 즉 쿼리와 문서를 똑같이 압축했기 때문이라는 거예요.

생각해 보면 검색이라는 작업은 구조가 비대칭이거든요. 쿼리 벡터 하나를 문서 벡터 수백만 개와 비교하죠. 저장 공간을 잡아먹는 건 문서 쪽이고, 쿼리는 검색하는 그 순간에만 하나 들고 있으면 끝이에요. 그럼 둘을 다르게 압축하면 되잖아요?

그러면 유사도 계산이 달라집니다. 이진 벡터끼리 비교할 때 쓰는 해밍 거리(비트가 다른 개수 세기) 대신, 풀 정밀도 쿼리와 ±1로 표현된 문서 벡터의 내적을 계산해요. 이 차이가 왜 중요하냐면, 쿼리가 가진 차원별 크기 정보가 문서의 각 비트에 가중치를 주기 때문이에요. "이 차원이 얼마나 중요한지"라는 정보를 쿼리 쪽에서 온전히 보존하는 거죠.

숫자로 보는 차이

MTEB 검색 벤치마크(mxbai-embed-large-v1 기준)에서 결과가 극적이에요. 똑같이 문서를 1비트로 압축했는데, 대칭 방식(해밍 거리)은 원본 float32 품질(NDCG@10)의 89.8%에 그친 반면 비대칭 방식은 97.5%를 찍었거든요. 압축률은 동일한데 계산 방식만 바꿔서 8%포인트 가까이 회복한 겁니다. 속도도 오히려 빨라져서, AVX-512 같은 CPU 벡터 명령어와 궁합이 좋아 float32끼리 비교할 때보다 4~6배 빠르다고 해요.

실전 레시피는 재정렬(rescoring)까지 얹는 건데요. 1단계에서 비대칭 이진 스코어링으로 상위 100개 후보를 뽑고, 2단계에서 그 100개만 디스크에 있는 int8이나 float32 원본 벡터로 다시 점수를 매기는 거예요. 100개만 만지니까 원본 벡터는 싼 스토리지에 둬도 되고, 최종 품질은 원본의 99.4%까지 올라갑니다. 메모리는 3%만 쓰면서요.

업계 흐름: 다들 비대칭으로 가고 있어요

사실 이 방향은 업계가 수렴하는 흐름이기도 해요. 구글의 ScaNN이 쓰는 비등방성(anisotropic) 양자화, ColBERT 계열의 후기 상호작용(late interaction)과 PLAID도 결이 같은 비대칭 설계거든요. 이미 Vespa, Qdrant 같은 벡터 DB에 구현돼 있고, pgvector도 bit 타입과 커스텀 연산자로 가능합니다. Matryoshka 임베딩과 조합하면 512차원으로 자른 뒤 이진화해서 문서당 64바이트에 약 95% 품질까지 가능하다고 하네요.

주의할 점 하나: 차원 수가 중요해요. 1024차원쯤 되면 이진 벡터에도 신호가 충분히 남는데, 512차원 아래로 내려가면 품질이 빠르게 나빠진다고 합니다.

한국 개발자에게

RAG 서비스 운영하면서 벡터 DB 메모리 비용에 시달리고 있다면 당장 검토해 볼 만해요. 특히 pgvector로 수백만 건 이상 운영 중이라면 인프라 비용이 한 자릿수 퍼센트로 떨어질 수 있는 이야기거든요. 재정렬 파이프라인만 잘 짜면 품질 손실은 사실상 체감하기 어려운 수준이고요.

한 줄 정리: 쿼리는 그대로 두고 문서만 1비트로 압축하면, 저장 비용 97% 절감과 검색 품질을 거의 다 가질 수 있다. 여러분의 벡터 검색 스택에서는 양자화를 어디까지 밀어붙여 보셨나요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.mixedbread.com/blog/asymmetric-quant
SHARE
처리 중...