오늘의 오픈 소스 프로젝트 (#98): Zvec — 벡터 검색의 SQLite, Alibaba의 임베디드 벡터 데이터베이스
요약
Alibaba Tongyi Lab에서 개발한 Zvec는 서버 설치 없이 애플리케이션 내부에 직접 임베드할 수 있는 인프로세스 벡터 데이터베이스입니다. Proxima 엔진을 기반으로 하며, 최근 업데이트를 통해 하이브리드 쿼리와 전체 텍스트 검색 기능을 지원하는 검색 엔진으로 진화했습니다.
핵심 포인트
- 네트워크 오버헤드 없는 인프로세스 방식의 가벼운 벡터 DB
- HNSW, FAISS, DiskANN 등 다양한 인덱스 유형 지원
- 벡터 유사도와 전체 텍스트 검색을 결합한 하이브리드 쿼리 제공
- 메모리 제한 환경에서도 대규모 데이터를 처리하는 DiskANN 활용
서론
"벡터 데이터베이스의 SQLite — 서버 없이 애플리케이션에 바로 임베디드 하세요."
이 글은 Open Source Project of the Day 시리즈의 #98번째 기사입니다. 오늘의 프로젝트는 Alibaba의 Tongyi Lab에서 개발한 인프로세스 (in-process) 벡터 데이터베이스인 Zvec입니다.
RAG (Retrieval-Augmented Generation) 애플리케이션을 구축한다는 것은 벡터 데이터베이스를 다룬다는 것을 의미합니다. 벡터 데이터베이스의 지배적인 배포 패턴은 외부 서비스 형태입니다. Pinecone은 클라우드 서비스이며, Milvus/Qdrant/Weaviate는 독립형 서버 (standalone servers)입니다. 이는 애플리케이션마다 추가적인 인프라 구성 요소를 유지 관리해야 하고, 네트워크 호출 오버헤드가 발생하며, 운영 부담이 따르고, 노트북이나 엣지 디바이스 (edge devices) 사용을 완전히 배제하게 된다는 것을 의미합니다.
Zvec는 정반대의 접근 방식을 취합니다: pip install zvec로 설치하여 프로세스 내부에서 실행되며, 데몬 (daemon)도, 네트워크 호출도, 서버 설정도 필요하지 않습니다. 그 밑단에는 Alibaba의 내부 시스템 전반에서 검증된 프로덕션급 벡터 검색 인프라인 Proxima 엔진이 자리 잡고 있습니다.
v0.5.0 (2026년 6월)에서는 네이티브 전체 텍스트 검색 (full-text search) 및 하이브리드 쿼리 (hybrid queries) 기능이 추가되어, 순수 벡터 검색 도구에서 여러 인프라 구성 요소를 한 번에 대체할 수 있는 검색 엔진 (retrieval engine)으로 진화했습니다.
학습 내용
- 인프로세스 (In-process) vs 클라이언트-서버 (client-server): 설계상의 트레이드오프 (tradeoffs) 및 각 방식에 적합한 시나리오
- Zvec의 인덱스 유형: HNSW, FAISS, DiskANN, 희소 벡터 (sparse vectors)를 언제 사용해야 하는가
- v0.5.0의 하이브리드 쿼리: 하나의 쿼리에 벡터 유사도 (vector similarity) + 전체 텍스트 검색 (full-text search) + 스칼라 필터 (scalar filters)를 결합하는 방법
- DiskANN: 10억 개의 벡터 데이터베이스를 메모리가 제한된 머신에 어떻게 맞출 것인가
- 성능 데이터: VectorDBBench의 QPS 수치 및 Pinecone 등과의 비교
- 서버 사이드부터 모바일까지 지원되는 5개 언어 SDK 범위
사전 요구 사항
- 벡터 임베딩 (vector embeddings) 및 유사도 검색 (similarity search)에 대한 숙련도
- RAG 애플리케이션 개발 또는 벡터 데이터베이스 사용 경험
- Python 숙련도 (기타 SDK 언어는 참고용)
프로젝트 배경
Zvec란 무엇인가?
Zvec는 오픈 소스 인프로세스 (in-process) 벡터 데이터베이스로, "가볍고, 매우 빠르며, 애플리케이션에 직접 임베드(embed)할 수 있도록 설계되었습니다." 기반 엔진은 Alibaba의 대규모 이미지 검색 및 추천 시스템을 뒷받침하는 프로덕션급 벡터 검색 인프라인 Alibaba Proxima입니다.
인프로세스 (In-process)가 핵심 키워드입니다. 벡터 검색은 SQLite가 관계형 데이터를 처리하는 방식과 동일하게, 네트워크 홉 (network hop) 없이, 외부 프로세스 없이, 관리해야 할 별도의 서비스 없이 애플리케이션 프로세스 내부에서 수행됩니다.
저자 / 팀
- 팀: Alibaba Tongyi Lab
- 기반 엔진: Alibaba Proxima (프로덕션급 벡터 검색 엔진)
- 라이선스: Apache-2.0
- 최신 버전: v0.5.0 (2026년 6월)
프로젝트 통계
- ⭐ GitHub Stars: 10,500+
- 🍴 Forks: 607+
- 📅 첫 출시: 2025년 12월
- 📄 라이선스: Apache-2.0
핵심 기능
기능 설명
전통적인 방식 (외부 서비스):
App 프로세스 → 네트워크 요청 → 벡터 DB 서버 → 결과 반환
↓
...
사용 사례
- 로컬 RAG 애플리케이션: 클라우드 서비스 의존성 없이 온디바이스 (on-device) RAG 시스템 구축
- 노트북 프로토타이핑: 외부 서비스를 설정할 필요 없이 데이터 과학 워크플로우에서 사용
- 모바일 AI: Dart/Flutter SDK를 통해 Android 및 iOS에서 온디바이스 벡터 검색 지원
- 프로덕션 서비스 임베딩: Python/Go/Rust 서비스에 벡터 검색을 직접 임베드하여 인프라 구성 요소 감소
- 에이전트 메모리: MCP 통합 (v0.3.0)을 통해 AI 에이전트를 위한 로컬 벡터 메모리 제공
빠른 시작
설치:
pip install zvec
# Zvec Studio 시각화 도구와 함께 사용 시
...
기본 사용법:
import zvec
# 스키마 (schema) 정의
...
하이브리드 쿼리 (v0.5.0):
# 하나의 쿼리에서 벡터 유사도 + 전문 검색 (full-text search) + 스칼라 필터 (scalar filter) 결합
results = collection.query(
zvec.MultiQuery(
...
전문 검색 (Full-text search):
# 필드에 전문 검색 인덱스 생성
collection.create_index("content", zvec.IndexType.FULL_TEXT)
...
Node.js:
import { createCollection, VectorQuery } from '@zvec/zvec';
const collection = await createCollection({
...
다국어 SDK (Multi-Language SDKs)
| 언어 (Language) | 설치 (Install) | 최적 용도 (Best for) |
|---|---|---|
| Python | pip install zvec | 데이터 과학 (Data science), RAG 서비스, 노트북 |
| ... |
심층 분석 (Deep Dive)
인프로세스 트레이드오프 (The In-Process Tradeoff)
Zvec의 핵심 아키텍처 결정은 클라이언트-서버 (client-server) 모델을 버리고 인프로세스 (in-process) 임베딩을 채택한 것입니다. 이 선택에는 구체적인 비용과 이점이 따릅니다.
이점 (Benefits):
- 네트워크 지연 시간 제로 (Zero network latency): 벡터 검색이 메모리 또는 로컬 디스크에서 발생하므로 왕복 시간 (round trip)이 없습니다.
- 운영 부담 제로 (Zero operational burden): 배포, 모니터링 또는 업그레이드해야 할 벡터 데이터베이스 서비스가 없습니다.
- 휴대성 (Portability): 애플리케이션 바이너리 + 데이터 파일을 파일 시스템이 있는 모든 곳에 배포할 수 있습니다.
- 엣지 및 모바일 (Edge and mobile): Dart SDK는 Android 및 iOS에서의 온디바이스 추론 (on-device inference)을 지원합니다.
비용 (Costs):
- 여러 서비스 간에 단일 벡터 저장소를 공유할 수 없음 (단일 프로세스 쓰기, 다중 프로세스 읽기 전용)
- 네트워크를 통한 교차 접근 불가 (이는 결함이 아닌 아키텍처적 특성입니다)
대부분의 RAG 애플리케이션 프로토타입, 엣지 배포 및 단일 서비스 아키텍처의 경우, 이 트레이드오프는 적절합니다. 멀티 레플리카 (Multi-replica) 및 분산 쿼리 시나리오에는 Milvus 또는 Qdrant가 더 적합합니다.
인덱스 유형 (Index Types)
HNSW (Hierarchical Navigable Small World): 기본 인덱스입니다. 그래프 기반의 근사 최근접 이웃 (approximate nearest neighbor) 검색 방식입니다. 최대 쿼리 속도가 필요한 메모리가 풍부한 환경에 가장 적합합니다. 쿼리 시간은 서브 리니어 (sub-linear)이지만, 인덱스 구축 시간은 더 오래 걸립니다.
FAISS: Facebook AI Research의 벡터 검색 라이브러리에 대한 인터페이스입니다. 유연한 정밀도-속도 트레이드오프를 위해 다양한 양자화 (quantization) 전략 (IVF, PQ)을 제공합니다.
DiskANN (v0.5.0 신규 기능): 벡터 인덱스를 메모리가 아닌 디스크에 저장하여 RAM 요구 사항을 획기적으로 줄입니다. 이 설계는 Microsoft Research의 DiskANN 논문에서 유래되었습니다. 순수 인메모리 인덱스보다 지연 시간이 약간 높다는 비용을 지불하는 대신, 일반 서버에서 십억 단위 규모의 벡터 컬렉션을 가능하게 합니다.
희소 벡터 (Sparse vectors): BM25 및 SPLADE로부터 희소 표현 (sparse representations)을 저장하고 검색하며, 키워드-의미론적 하이브리드 검색 (keyword-semantic hybrid retrieval)에 유용합니다.
하이브리드 쿼리 설계 (Hybrid Query Design)
v0.5.0의 하이브리드 쿼리는 세 가지 검색 모드를 단일 MultiQuery 인터페이스로 통합합니다:
MultiQuery
├── VectorQuery (밀집 벡터 유사도)
│ └── 의미론적 유사도 매칭 (Semantic similarity matching)
...
실질적인 가치: 실제 RAG 쿼리는 순수한 벡터 유사도만으로 이루어지는 경우가 드뭅니다. 사용자들은 통상적으로 "의미론적으로 관련이 있으면서 + 특정 키워드를 포함하고 + 최근 30일 이내의 데이터"를 필요로 합니다. 이를 세 개의 별도 쿼리로 나누고 랭킹된 리스트를 수동으로 병합하는 것은 비용이 많이 들고 최적화되지 않은 결과를 초래합니다. MultiQuery + RRF는 이 세 가지를 한 번의 작업으로 처리합니다.
성능 (Performance)
VectorDBBench (Cohere 10M 데이터셋, 768 차원, 1,000만 개의 벡터) 기준:
- Zvec는 8,000+ QPS를 기록하였으며, 이는 이전 리더보드 1위(ZillizCloud)보다 2배 이상 높은 수치입니다.
- 자체 보고에 따르면: Pinecone보다 쿼리 처리량(throughput)이 약 7배 빠릅니다.
성능의 원천:
- SIMD 명령어 (SIMD instructions): 벡터 거리 계산을 위한 AVX-512/AVX2 사용 — 최신 CPU에서 명령어당 16개의 float32 값을 처리합니다.
- 멀티스레딩 (Multithreading): 인덱스 구축과 쿼리 실행 모두 코어 전반에 걸쳐 병렬화됩니다.
- 캐시 친화적 메모리 레이아웃 (Cache-friendly memory layout): 탐색 중 CPU 캐시 미스 (cache misses)를 줄입니다.
- RabitQ 양자화 (quantization) (v0.3.0): 정밀도 손실을 최소화하면서 벡터를 압축하여 저장합니다.
버전 출시 속도 (Version Velocity)
Zvec는 2025년 12월 초기 출시 이후 2026년 6월 v0.5.0에 이르기까지, 6개월 동안 6개의 주요 버전을 출시했습니다:
| 버전 | 날짜 | 주요 변경 사항 |
|---|---|---|
| v0.1.0 | 2025년 12월 | 초기 출시, HNSW 베이스라인 |
| ... |
v0.3.0의 MCP 통합은 주목할 만합니다. AI 에이전트는 어댑터 계층 없이 MCP 프로토콜을 통해 Zvec 벡터 메모리에 직접 접근할 수 있습니다.
Zvec Studio
pip install zvec-studio를 통해 컬렉션을 탐색하고, 쿼리를 실행하며, 벡터 검색 결과를 디버깅할 수 있는 시각적 인터페이스를 설치할 수 있습니다. 코드 작성이 필요하지 않습니다. RAG (Retrieval-Augmented Generation) 애플리케이션 디버깅 및 데이터 탐색에 유용합니다.
링크 및 리소스
공식 리소스
- 🌟 GitHub: alibaba/zvec
- 🌐 Website: zvec.org
- 📖 Documentation: zvec.org/en/docs
- 📊 Benchmarks: zvec.org/en/docs/db/benchmarks/
관련 프로젝트
- Zvec Studio:
pip install zvec-studio(시각적 관리 도구) - zvec-go: Go SDK
- zvec-rust: Rust SDK
- Alibaba Proxima: Zvec의 기반이 되는 프로덕션급 벡터 검색 엔진
결론
Zvec의 포지셔닝은 명확합니다. 프로덕션급 벡터 검색을 임베디드 라이브러리 (embedded library) 형태로 제공하여, 벡터 데이터베이스의 배포 및 운영 복잡성을 제거하는 것입니다.
SQLite 비유가 적절합니다. SQLite는 관계형 데이터베이스를 "설정된 서버가 필요한 것"에서 "파일 하나로 어디서든 작동하는 것"으로 바꾸어 놓았습니다. Zvec는 벡터 검색에 대해 동일한 일을 수행합니다.
벡터 유사도 (vector similarity), 전체 텍스트 검색 (full-text search), 스칼라 필터링 (scalar filtering)을 결합한 v0.5.0의 하이브리드 쿼리 인터페이스는 RAG 애플리케이션에 구체적인 가치를 제공합니다. 실제 쿼리는 이 세 가지 제약 조건 유형이 모두 조합되는 경향이 있습니다. 이전에는 이를 위해 세 개의 별도 시스템 (벡터 데이터베이스 + 검색 엔진 + 관계형 데이터베이스)과 수동 결과 병합이 필요했습니다. 이제는 임베디드 라이브러리 내에서 하나의 작업으로 처리됩니다.
Android 및 iOS까지 범위를 확장하는 Dart SDK는 이 기술이 나아갈 방향을 보여줍니다. 즉, 벡터 검색을 다시 서버로 라우팅하지 않는 온디바이스 (on-device) RAG입니다.
10.5k개의 Star, 6개월 만에 6개의 주요 버전 출시 — Zvec는 빠르게 반복 성장하고 있으며 면밀히 지켜볼 가치가 있습니다.
_ PrimeSkills를 탐색해 보세요 — 엄선된 AI 에이전트와 기술을 위한 마켓플레이스입니다. 각 에이전트는 실제 기업 워크플로우에서 검증되었으며, 과장된 광고를 걷어내고 진정으로 작동하는 것만을 제공합니다._
더 유용한 통찰력과 흥미로운 제품들을 확인하시려면 저의 홈페이지를 방문해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기