v0.5.0 업데이트 FTS·DiskANN·하이브리드 검색 지원 벡터 DB
Zvec는 인프로세스 방식으로 밀리초 내 유사도 검색과 네이티브 FTS 및 DiskANN 온디스크 인덱스를 제공하는 경량 벡터 데이터베이스이다
TL;DR
Zvec는 애플리케이션 프로세스 내부에 임베딩 저장소를 직접 임베드하는 경량 벡터 데이터베이스로서 밀리초 단위 유사도 검색과 네이티브 Full-Text Search, 그리고 하이브리드 검색을 결합한 검색 기능을 제공한다. 내부적으로 dense와 sparse 벡터를 모두 지원하고 MultiQuery를 통해 벡터, 텍스트, 스칼라 필터를 단일 질의로 병합하며 대규모 처리를 위해 DiskANN 온디스크 인덱스를 도입해 메모리 사용을 줄인다. Write-Ahead Log로 데이터 내구성을 확보하고 다중 프로세스 읽기를 허용하는 구조를 갖추며 Python·Node.js와 더불어 공식 Go·Rust 바인딩과 Zvec Studio GUI를 통해 다양한 개발 환경에서 바로 적용할 수 있다.
주요 기능
- 검색 성능을 극대화한다. README에 따르면 수십억 개 벡터에 대해 밀리초 단위 응답을 달성할 수 있으며 이는 다양한 인덱스 타입과 내부 최적화 덕분이다. 인프로세스 라이브러리로 동작하여 별도 서버 구성 없이 애플리케이션에 직접 임베딩 저장 및 조회 기능을 통합할 수 있다.
- 다양한 벡터 타입을 지원한다. Zvec는 dense와 sparse 벡터를 모두 취급하며 멀티 벡터 쿼리를 통해 여러 임베딩 신호를 결합할 수 있다. 이로 인해 텍스트 임베딩과 feature 기반 희소 신호를 함께 활용하는 복합 질의가 가능하다.
- 네이티브 Full-Text Search 기능을 제공한다. 문자열 필드에 FTS 인덱스를 붙여 자연어 또는 구조화된 표현으로 질의할 수 있으며 외부 검색 엔진이 필요하지 않다. FTS와 벡터 검색을 같은 쿼리에서 결합하면 키워드 기반 신호와 의미 기반 신호를 동시에 활용할 수 있다.
- 내구성과 동시 접근성을 보장한다. Zvec는 Write-Ahead Log를 사용해 프로세스 충돌이나 전원 장애 시에도 데이터 영속성을 유지하도록 설계되어 있다. 동시에 여러 프로세스가 동일 컬렉션을 읽을 수 있고 쓰기는 단일 프로세스 전용으로 동작하여 일관성을 관리한다.
- 플랫폼과 언어 생태계가 확장되어 있다. Python과 Node.js 바인딩을 제공하며 공식 Go와 Rust SDK가 추가되어 있고 Zvec Studio 시각화 도구가 별도 리포지토리로 제공된다. 또한 Linux, macOS, Windows와 ARM64를 포함한 다양한 플랫폼에서 동작하도록 빌드 지원을 제공한다.
어떻게 동작하는가
Zvec는 애플리케이션 프로세스 내부에서 직접 실행되는 인프로세스 벡터 데이터베이스로 동작하여 별도의 서버나 복잡한 설정 없이 로컬에서 유사도 검색을 수행한다. 내부적으로는 dense 및 sparse 벡터용 다양한 인덱스 타입을 제공하고 MultiQuery API를 통해 dense 벡터, sparse 벡터, 스칼라 필터, 텍스트를 단일 질의로 결합하여 하이브리드 검색을 수행한다. 대규모 데이터셋에서는 DiskANN 온디스크 인덱스를 활용해 인덱스의 대부분을 디스크에 두고 필요한 부분만 메모리에 로드함으로써 메모리 사용을 줄이는 방식으로 확장성을 확보한다.
해결 문제
애플리케이션이 외부 벡터 서빙 인프라를 구축하지 않고도 낮은 지연으로 유사도 검색을 수행할 수 있는 문제를 해결한다. Zvec는 인프로세스 라이브러리 형태로 동작하여 설치와 설정 비용을 최소화하고 로컬 환경에서 바로 의미 기반 검색과 필터링을 구현하게 한다. 또한 네이티브 FTS와 하이브리드 검색, 디스크 기반 인덱싱 옵션을 제공하여 메모리 제약과 의미·키워드 결합 검색 요구를 동시에 만족시킨다.
지금 주목받는 이유
최근 v0.5.0 릴리스에서 네이티브 Full-Text Search, 하이브리드 검색, DiskANN 온디스크 인덱스와 공식 Go/Rust SDK 및 Zvec Studio가 추가되어 기능적으로 큰 확장이 이루어졌다. README에 Alibaba 그룹 내부의 실전 사용 경험이 언급되어 생산환경 안정성에 대한 신뢰를 보였다. 이러한 기능 확장은 대규모 로컬 임베디드 검색과 혼합 검색 워크로드에 대한 관심을 끌고 있다.
차별점
- 인프로세스 아키텍처로 설계되어 별도의 서버나 네트워크 레이어 없이 애플리케이션 내부에 직접 임베딩 저장소를 통합할 수 있다. 이 구조는 단일 프로세스 배포에서 설정과 운영 복잡도를 낮추며 노트북이나 엣지 환경에서도 동작한다. 동시에 여러 프로세스의 읽기 접근을 허용하여 공유 읽기 시나리오에서 유용하다.
- 네이티브 Full-Text Search를 통합해 텍스트 기반 키워드 검색을 외부 검색 엔진 없이 컬렉션 수준에서 처리한다. FTS 인덱스를 벡터 필드와 같은 레벨에서 붙일 수 있어 벡터 유사도와 텍스트 매칭을 한 번의 MultiQuery로 결합할 수 있다. 이로 인해 RAG 시스템에서 텍스트 필터와 의미 기반 순위의 동시 적용이 간단해진다.
- DiskANN 온디스크 인덱스를 도입해 대규모 데이터에서 메모리 사용을 획기적으로 낮추는 옵션을 제공한다. 인덱스의 대부분을 디스크에 두고 필요한 부분만 메모리로 로드하는 방식으로 메모리 제약 환경에서 수십억 벡터를 다루는 실용성을 확보한다. 이 기능은 로컬 인프라나 리소스가 제한된 엣지에서 특히 유의미하다.
- 공식 SDK와 시각화 툴을 함께 제공하여 다양한 언어와 개발 환경에 바로 적용할 수 있다. Python과 Node.js 패키지가 제공되며 별도 리포지토리로 Go, Rust 바인딩과 Zvec Studio GUI가 존재한다. 이 생태계 구성은 빠른 프로토타이핑과 운영 전환을 용이하게 만든다.
사용 사례
- 로컬 애플리케이션 내 임베디드 검색을 구현할 때 유용하다. 별도 서버 없이 애플리케이션 프로세스 안에서 벡터 저장과 검색을 수행하므로 배포와 운영 부담을 줄인다. 노트북 기반 실험, 데스크톱 앱, 혹은 단일 바이너리로 배포되는 서비스에서 특히 적합하다.
- RAG(검색 증강 생성) 파이프라인의 검색 계층으로 활용할 수 있다. 벡터 유사도와 FTS를 동시에 사용해 관련 문서를 정교하게 필터링하고 반환할 수 있으므로 LLM에 주입할 컨텍스트 품질을 개선한다. MultiQuery로 스칼라 필터와 텍스트 조건을 함께 적용하면 생성 품질을 높이는 입력 후보를 안정적으로 확보할 수 있다.
- 리소스 제약이 있는 환경에서 대규모 데이터 검색을 운영할 때 DiskANN을 이용해 메모리 사용을 최소화할 수 있다. 엣지 디바이스나 ARM 기반 서버에서 인덱스의 대부분을 디스크에 유지하면서도 실용적 응답성을 확보할 수 있다. 또한 다중 언어 SDK를 이용해 기존 애플리케이션에 쉽게 통합할 수 있다.
시작하기
Python 패키지로 빠르게 시작할 수 있다. README에 제시된 최소 예시대로 pip install zvec 후 CollectionSchema와 VectorSchema를 정의하고 create_and_open으로 로컬 경로에 컬렉션을 생성하면 바로 벡터 삽입과 질의가 가능하다. Node.js, Go, Rust SDK와 Zvec Studio GUI도 제공되어 코드 기반 접근과 시각적 디버깅 모두 가능한 진입점을 제공한다.
요구사항
- 지원 플랫폼은 Linux(x86_64, ARM64), macOS(ARM64), Windows(x86_64)로 README에 명시되어 있으며 다양한 아키텍처에서 빌드와 실행을 지원한다.
- Python 패키지를 사용하려면 Python 3.10 이상 3.14 이하 버전이 정상적으로 동작하도록 README에 표기되어 있다. Node.js와 다른 언어 바인딩을 사용할 경우 각 바인딩의 리포지토리 문서를 참고해 필요한 런타임을 준비해야 한다.
- 소스에서 빌드하려면 프로젝트의 Building from Source 가이드에 따른 빌드 툴체인과 플랫폼별 의존성이 필요하다. README는 빌드 가이드 참조를 권장하므로 복잡한 배포 환경에서는 사전 빌드 지침을 확인해야 한다.
14.1k
Stars
854
Forks
+210
Trending
3
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.