RyanCodrai/turbovec
A vector index built on TurboQuant, written in Rust with Python bindings
해결하는 문제
turbovec은 방대한 벡터 임베딩 컬렉션을 저장하고 검색하기 위한 고성능의 메모리 효율적인 방법을 제공합니다. 차원당 2비트 또는 4비트로 벡터를 저장하여 메모리 사용량을 크게 줄이면서도 높은 검색 속도와 재현율을 유지합니다. 이는 전용 데이터베이스 서버의 오버헤드 없이 대규모 벡터 저장이 필요한 로컬 인프로세스 애플리케이션에 적합합니다.
작동 원리
이 라이브러리는 공유 랜덤 직교 행렬로 벡터를 회전시켜 좌표가 예측 가능한 분포를 따르도록 하는 양자화 기술인 TurboQuant를 사용합니다. 그런 다음 미리 계산된 Lloyd-Max 코드북을 사용하여 이러한 좌표를 양자화하고 비트로 패킹합니다. 검색 시에는 SIMD 최적화 커널을 사용하여 압축된 데이터에서 직접 빠른 내적 검색을 수행합니다. 증분 업데이트, 원자적 파일 동기화, 허용 목록 또는 비트마스크를 통한 필터링을 지원합니다.
대상 사용자
Python 또는 Rust로 로컬 AI 애플리케이션을 구축하면서 RAM 제약이 있는 환경에서 대규모 데이터 세트(예: 수백만 개의 임베딩)에 대해 빠른 유사도 검색을 수행해야 하는 개발자를 위한 것입니다. 독립형 벡터 데이터베이스 서비스보다 인프로세스 라이브러리를 선호하고 손실이 있는 양자화 검색 방식을 수용할 수 있는 사용자를 위해 설계되었습니다.
주요 특징
- 극단적인 압축: float32 저장 방식 대비 메모리 사용량을 최대 15.5배까지 절감.
- 고성능: ARM 및 x86 아키텍처 모두에서 FAISS FastScan보다 훨씬 빠른 검색 속도 제공.
- 학습 불필요: 수학적 코드북을 사용하므로 새로운 데이터를 추가할 때 학습 단계나 인덱스 재구성이 필요 없음.
- 간편한 통합: LangChain, LlamaIndex, Haystack, Agno와 같은 인기 프레임워크와 호환.
- 로컬 및 영속성: 프로세스 내에서 완전히 작동하며 원자적이고 충돌에 안전한 영속성 지원.
관련
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트