zvec

Vector DatabasesCLIC++

★ 15,905주당 +61조회 5

무엇인가

벡터 유사도 검색 계열에서 별도 서버 프로세스 대신 애플리케이션 프로세스 내부에 링크되는 라이브러리로 자리한다. 알리바바 그룹 내부 운영 환경에서 쓰인 뒤 오픈소스로 공개됐다. 본체는 C++로 구현됐고 Python, Node.js, Go, Rust, Dart/Flutter 바인딩이 함께 배포된다.

어떻게 동작하나

데이터는 컬렉션 단위로 로컬 디스크에 저장된다. 쓰기는 WAL(write-ahead log)에 먼저 기록되어 프로세스 크래시나 전원 차단 후에도 유실되지 않는다. 인덱스는 밀집 벡터와 희소 벡터를 모두 다루며 메모리에서 디스크까지 확장되는 여러 인덱스 타입을 제공한다. 0.7.0에서 IVF-RaBitQ 인덱스와 PQ-INT8 양자화기가 추가됐고, RaBitQ는 실행 시 AVX2/AVX512를 디스패치해 같은 바이너리가 CPU에 맞는 경로를 고른다. DiskANN은 io_uring 비동기 I/O 백엔드를 쓰고, 쓸 수 없는 환경에서는 자동으로 다른 I/O 옵션으로 폴백한다. 전문 검색은 N-gram 토크나이저를 포함한 토크나이저로 문자열 필드를 질의하고, 하이브리드 질의는 벡터 유사도·전문 검색·구조화 필터를 한 질의에서 융합한다. DocIterator는 C++, C, Python에서 컬렉션 전체 문서를 스트리밍 순회한다.

무엇과 다른가

서버형 벡터 DB는 별도 프로세스를 띄우고 네트워크 프로토콜로 질의를 보내야 한다. Zvec은 그 네트워크 홉과 서버 운영을 없애고 라이브러리 호출로 검색한다. 반면 FAISS나 hnswlib 같은 ANN 라이브러리는 인덱스 자료구조만 제공하고 영속성, 구조화 필터, 전문 검색이 없다. Zvec은 WAL 기반 영속 저장과 필터, 전문 검색, 하이브리드 질의를 같은 컬렉션 위에 올린다.

어떻게 쓰나

Python은 `pip install zvec`, Node.js는 `npm install @zvec/zvec`, Rust는 `cargo add zvec-rust`, Dart/Flutter는 `flutter pub add zvec`로 설치한다. Go 바인딩도 제공된다. 코드나 문서 검색에는 zvec-grep(`zg`) CLI를 쓴다. ripgrep, BM25, 벡터 검색을 하나의 CLI 뒤로 묶은 로컬 우선 워크스페이스 검색 도구다. 데이터를 훑고 질의를 디버깅할 때는 Zvec Studio를 쓴다. 소스 빌드는 Building from Source 가이드를 따른다.

전제와 한계

Python SDK는 64비트 Python 3.10–3.14를 요구한다. 지원 플랫폼은 Linux x86_64·ARM64(glibc와 musl), macOS ARM64·x86_64, Windows x86_64다. 0.7.0에서 musl libc/Alpine Linux와 Linux ARM64·macOS ARM64 DiskANN 지원이 추가됐다. 같은 컬렉션을 여러 프로세스가 동시에 읽을 수 있지만 쓰기는 단일 프로세스 전용이다. 인프로세스 라이브러리이므로 원격 접속용 서버 모드는 없다.

유사 도구