피드로 돌아가기
Binary and Scalar Embedding Quantization for Significantly Faster & Cheaper Retrieval
Hugging Face BlogHugging Face Blog
Backend

Hugging Face가 임베딩 양자화(Binary, Scalar) 기법으로 메모리 32배 감소 및 검색 속도 32배 향상 달성

Binary and Scalar Embedding Quantization for Significantly Faster & Cheaper Retrieval

2024년 3월 22일10intermediate

Context

최신 임베딩 모델들은 1024차원을 float32로 인코딩하여 차원당 4바이트를 사용하므로, 2.5억 개 벡터 검색 시 약 1TB의 메모리가 필요하다. OpenAI text-embedding-3-large는 250만 개 임베딩 저장에 월 $10,871의 비용이 소모된다.

Technical Solution

  • Binary Quantization: float32 임베딩을 0을 기준으로 1비트(0 또는 1)로 변환하여 메모리 32배 감소
  • Hamming Distance 활용: 양자화된 바이너리 임베딩 간 유사도를 2 CPU 사이클로 계산하여 검색 속도 향상
  • Rescore(Rerank) 단계: Binary 검색으로 상위 k*rescore_multiplier개 결과를 먼저 추출한 후, float32 쿼리 임베딩으로 최종 재점수 계산
  • Scalar Quantization: 임베딩 값을 256개 버킷(int8)으로 양자화하여 메모리 4배 감소
  • Matryoshka Representation Learning(MRL)과의 조합: 1024차원을 128차원으로 축소 후 양자화 적용 가능

Impact

  • Binary Quantization + Rescore: 메모리 및 디스크 공간 32배 감소, 검색 속도 32배 향상, 총 검색 성능 ~96% 유지
  • Binary Quantization 단독: 총 검색 성능 ~92.5% 유지
  • OpenAI text-embedding-3-large MRL 적용: 12배 압축 시 성능 유지율 93.1%
  • MRL + Binary Quantization 조합 가능성: 32배 검색 속도 향상 시 품질 손실 ~3%, 256배 향상 시 품질 손실 ~10%

Key Takeaway

임베딩 양자화는 차원 축소와 달리 각 값의 정밀도만 감소시키므로 MRL과 직교적으로 조합 가능하며, Rescore 단계를 추가하면 성능 손실을 최소화하면서 대규모 검색 비용을 획기적으로 절감할 수 있다.


2.5억 개 이상의 임베딩 벡터를 다루는 검색 시스템에서 Binary Quantization + Rescore 파이프라인을 적용하면, 메모리 비용을 월 $3,623에서 약 $113로 감소시키고 검색 레이턴시를 32배 개선하면서도 검색 정확도 손실을 4% 이내로 유지할 수 있다.

원문 읽기