最近、RAG(Retrieval-Augmented Generation)やセマンティック検索の需要が急増していて、ベクトルデータベースへの注目度がかなり上がっています。ただ、PineconeやWeaviateのようなクラウド型のベクトルDBは、ちょっとした検証やプロトタイピングには大げさすぎるんですよね。
そんな中、Alibaba Groupが新しくオープンソースとして公開したZvecがHacker Newsで話題になっていたので、調べてみました。
Zvecはどういうツールなのか
Zvecは「インプロセス型」のベクトルデータベースです。SQLiteのように、サーバーを立てずにアプリケーション内に直接組み込んで使えるのが最大の特徴ですね。
Alibaba内部で実戦投入されてきた検索エンジン「Proxima」がベースになっていて、軽量ながらプロダクションレベルの性能を持っています。
主な特徴をまとめるとこんな感じです。
- サーバー不要: pipやnpmでインストールするだけで、すぐに使い始められます
- 高速検索: 数十億ベクトルをミリ秒単位で検索可能
- Dense + Sparse対応: 密ベクトルと疎ベクトルの両方に対応していて、1回のクエリで混合検索もできます
- ハイブリッド検索: ベクトル類似度とメタデータフィルタリングを組み合わせた検索が可能
- Python / Node.js対応: 主要な言語からすぐに使えます
既存のベクトルDBとの違い
ベクトルデータベースの選択肢はかなり増えましたが、Zvecのポジションは少し独特です。
Pinecone / Weaviate / Qdrantあたりはクラウドやサーバー型で、本格的なプロダクション向けですね。スケーラビリティは抜群ですが、ローカルでサクッと使うには向いていません。
ChromaDB / LanceDBはZvecに近いインプロセス型ですが、Zvecはベンチマーク結果を見る限り、検索速度で大きくリードしているようです。
VectorDBBenchを使った公式ベンチマークでは、Cohere 10M(1000万ベクトル、768次元)のデータセットで非常に高いQPS(クエリ/秒)を記録していました。
実際に使ってみる
インストールはシンプルです。
pip install zvec
Node.jsの場合はこちら。
npm install @zvec/zvec
基本的な使い方を見てみましょう。Pythonでの例です。
import zvec
# コレクションのスキーマ定義
schema = zvec.CollectionSchema(
name="my_docs",
vectors=zvec.VectorSchema("embedding", zvec.DataType.VECTOR_FP32, 768),
)
# コレクション作成
collection = zvec.create_and_open(path="./my_vector_db", schema=schema)
# ドキュメント追加
collection.insert([
zvec.Doc(id="doc_1", vectors={"embedding": embedding_vector_1}),
zvec.Doc(id="doc_2", vectors={"embedding": embedding_vector_2}),
])
# 類似検索
results = collection.query(
zvec.VectorQuery("embedding", vector=query_vector),
topk=10
)
SQLiteと同じ感覚で使えるのが良いですね。データベースファイルがローカルに作られるので、デプロイも簡単です。
どんな場面で使えそうか
個人的に「これは便利だな」と感じたユースケースをいくつか挙げてみます。
RAGのプロトタイピングが一番わかりやすい用途かもしれません。LLMと組み合わせて文書検索を試す時に、外部サービスの契約やサーバー構築なしで始められます。MCPサーバーのようなAIエージェント向けツールと組み合わせるのも面白そうです。
エッジデバイスでの検索も有望ですね。サーバーレスで動くので、IoTデバイスやモバイルアプリに組み込むこともできます。
CLIツールやノートブックでの分析にも向いています。Jupyter Notebookでデータ分析しながら、ベクトル検索をインラインで実行できるのは地味に便利です。
注意点
もちろん、万能というわけではないです。
まず、分散処理は非対応です。インプロセス型なので、複数サーバーに分散してスケールアウトするような用途には向いていません。その場合はPineconeやQdrantの方が適切でしょう。
対応プラットフォームは現時点でLinux(x86_64、ARM64)とmacOS(ARM64)のみ。Windowsはまだサポートされていないようです。
また、Pythonは3.10〜3.12が必要で、最新の3.13には未対応のようですね。
まとめ
Zvecは「ベクトル検索を使いたいけど、大げさなインフラは要らない」というケースにちょうど良いツールだと感じました。Alibabaの実績あるProximaエンジンがベースになっているので、性能面での信頼性もあります。
AIエージェントの設計パターンが注目される中、こうした軽量なベクトルDBの選択肢が増えるのは良い流れですね。RAGやエージェント型開発に興味がある方は、一度試してみる価値があると思います。
Zvec公式リポジトリ(GitHub)からすぐにインストールできるので、気になった方はぜひ触ってみてください。