Why We Built Bitweave: Sub-Millisecond Hybrid Retrieval in <1.1 MB RSS Memory
개요
Bitweave는 로컬 RAG(Retrieval-Augmented Generation) 애플리케이션, 엣지 에이전트, 서버리스 AI 파이프라인 개발 시 발생하는 메모리 오버헤드 문제를 해결하기 위해 개발된 1.1MB RSS 메모리 이하에서 작동하는 서브 밀리초(sub-millisecond) 단위의 하이브리드 검색 엔진입니다.
주요 내용
- 메모리 효율성: Bitweave는 제로-카피(zero-copy) 및 SIMD 가속화된 Rust 기반 검색 엔진으로, 범주 필터링과 벡터 검색을 수행하면서도 활성 힙 메모리 사용량을 1.1MB RSS 미만으로 유지합니다.
- 아키텍처: 속도 극대화와 메모리 소비 최소화를 위해 3가지 핵심 구성 요소를 활용합니다.
- 범주 필터: 비트 슬라이스 비트맵(Bit-Sliced Bitmaps)을 사용하여 범주 필터링을 수행합니다.
- 1-Bit SIMD 사전 필터링: 쿼리 벡터(1536d)를 1비트 부호 마스크로 양자화(quantized)하고, SIMD 비트 연산(XOR, POPCNT)을 통해 햄밍 거리(Hamming Distance)를 마이크로초 단위로 계산하여 상위 K개 후보를 신속하게 선별합니다.
- 제로-카피 2-Pass Float32 재채점(exact_rescore=True): 사전 선별된 후보들의 원본 Float32 임베딩을 직접 오프셋 포인터를 통해 바이너리 버퍼에서 가져와 정확한 Float32 거리 재채점을 수행합니다.
- 제로-카피 메모리 매핑: 인덱스 파일을 Python RAM 또는 Rust 힙 공간으로 역직렬화하는 대신, 메모리 매핑 파일(.bweave)을 사용하여 운영체제의 페이지 캐시가 디스크에서 인덱스 세그먼트를 가상 주소 공간으로 지연 로딩하도록 합니다. 이를 통해 인덱스 레코드 수에 관계없이 RSS 메모리 사용량을 약 1.1MB로 일정하게 유지합니다.
- 성능 벤치마크: 200,000개의 밀집 벡터 레코드 처리 시, Python JSON 스캔(450MB RAM, >120ms), SQLite(45MB RAM, ~18ms) 대비 Bitweave는 1.1MB RAM에서 1.0ms 미만의 지연 시간과 제로-카피 특성을 보여줍니다.
- Python 통합: Linux, macOS, Windows용 사전 컴파일된 휠을 포함하여 PyPI에 게시되었으며,
pip install bitweave로 설치 가능합니다.HybridIndex클래스를 통해 인덱스 빌드, 저장, 로드 및 제로-카피 2-Pass 하이브리드 검색을 지원합니다.
시사점
Bitweave는 로컬 RAG 및 AI 파이프라인 개발에서 흔히 발생하는 메모리 병목 현상을 해결하며, 제한된 리소스 환경에서도 고성능의 벡터 검색 및 필터링 기능을 효율적으로 제공할 수 있는 실용적인 솔루션을 제시합니다.
원문을 불러오는 중...
댓글
GitHub Discussions