Asymmetric Quantization은 late interaction 검색에서 쿼리 벡터는 비교적 정밀하게 유지하고, 장기간 저장되는 문서 벡터만 극단적으로 압축하는 방식이다. Mixedbread는 문서 벡터를 1비트 부호(binary sign)로 저장하고 쿼리를 int8로 유지해, 내부 벤치마크에서 문서 벡터 저장량을 32배 줄이면서 NDCG@10을 90.26에서 89.65로만 낮췄다고 보고한다.
왜 late interaction에 필요한가
late interaction 모델은 문서를 하나의 벡터로 압축하지 않고 여러 토큰 벡터로 보존한다. 검색 품질은 좋아지지만 문서 하나가 수백 개 이상의 벡터를 만들 수 있어 저장 비용과 I/O 비용이 급증한다. Mixedbread의 예시에서는 786개의 128차원 벡터를 fp32로 저장하면 문서당 약 393 KiB가 필요하다.
핵심 설계
| 표현 | 문서당 저장량 | 특징 |
|---|---|---|
| 단일 벡터 fp32 | 12 KiB | 일반적인 단일 임베딩 기준 |
| 멀티 벡터 fp32 | 393 KiB | late interaction 품질은 좋지만 저장 비용이 큼 |
| 멀티 벡터 int8 | 98.25 KiB | 4배 절감 |
| 멀티 벡터 binary | 12.28 KiB | 단일 벡터 fp32와 비슷한 수준 |
문서 벡터는 오래 저장되고 반복해서 읽힌다. 반면 쿼리는 짧고 일회성이다. 그래서 문서 쪽 압축이 비용 절감에 훨씬 큰 영향을 준다. 쿼리까지 binary로 낮추면 품질 손실이 커지므로, 비대칭으로 쿼리 정밀도는 남겨둔다.
스코어링 아이디어
문서 벡터의 각 차원을 -1 또는 +1 부호로 저장하면 내적은 곱셈 없이 계산할 수 있다.
q · b = 2 * sum(q_i where b_i = +1) - sum(q_i)즉 문서 비트가 양수인 위치의 쿼리 값 합과 전체 쿼리 합만 있으면 된다. Mixedbread는 ARM NEON 명령어를 활용해 int8 쿼리와 binary 문서 벡터를 빠르게 스코어링하는 커널을 설명한다.
실무 의미
이 방식은 RAG와 검색 시스템에서 “정확도 높은 late interaction은 너무 비싸다”는 제약을 완화한다. 특히 대규모 문서 코퍼스를 오브젝트 스토리지에 두고 쿼리 시 필요한 벡터를 불러오는 구조에서는 문서 벡터 크기가 콜드 스타트, 캐시 효율, 네트워크 I/O, 저장 비용을 모두 좌우한다.
관련 문서
- rag — 외부 지식을 LLM에 실시간으로 주입하는 검색 증강 생성 기술
- pgvector — PostgreSQL 기반 벡터 검색 확장
- kv-cache-compression — LLM 추론 메모리 비용을 줄이는 KV 캐시 압축
- turboquant — LLM KV 캐시·임베딩을 저비트로 압축하는 온라인 벡터 양자화 알고리즘
참고 자료
- Asymmetric Quantization: Near-Lossless Late interaction Retrieval with 97% Storage Reduction — Mixedbread Blog (2026-06-29)