피드로 돌아가기
Building a Production-Grade Vector Database in Rust: What We Shipped
Dev.toDev.to
Database

FerresDB가 Rust 기반 벡터 데이터베이스에 HNSW 자동 튜닝과 PolarQuant 압축을 도입하여 프로덕션 수준의 성능을 달성했다

Building a Production-Grade Vector Database in Rust: What We Shipped

Rafael Ferres2026년 3월 31일12advanced

Context

FerresDB는 Rust로 구축된 벡터 데이터베이스로, 기존에 HNSW 인덱스와 SQ8 양자화를 지원했다. SQ8은 차원당 캘리브레이션 데이터와 10K 벡터 샘플링이 필요하며, 인덱스 사용 전 워밍업 단계가 존재했다.

Technical Solution

  • PolarQuant → f32 벡터를 극좌표 분해(반지름 + 각도)로 변환하여 캘리브레이션 없이 즉시 인덱스 사용 가능
  • FerresEngine → 60초마다 P95レイテン시를 모니터링하여 ef_search를 동적으로 조정하는 피드백 루프 구현
  • Cross-Encoder Reranking → HNSW에서 limit × 5 후보를 검색 후 BGE-Reranker 모델로 재순위화
  • PITR → 추가 전용 로그 구조로 세그먼트 기반 압축을 통한 포인트인타임 복구 지원
  • ANNIndex trait → HnswIndex, QuantizedHnswIndex, PolarQuantHnswIndex에 공통 인터페이스 제공

Impact

PolarQuant는 SQ8 대비 초기화 속도가 빠르며, SQ8은 고차원에서 데이터 분포 적응력이 높아 정밀도가 약간 우위

Key Takeaway

플러거블 백엔드 아키텍처의 핵심은 추상 trait을 조기에 정의하여 새로운 구현체가 인터페이스를 자동으로 상속받는 설계이다


벡터 검색 시스템에서 ANNIndex trait 같은 추상 인터페이스를 정의하면, PolarQuant와 같은 새로운 백엔드 추가 시 서버 및 스토리지 레이어 수정 없이 seamless한 확장 가능

원문 읽기