軽量で高速なインメモリベクトルデータベースライブラリ
Project description
VecTank
VecTank は、軽量で高速なベクトル検索を実現するベクトルデータベースライブラリです。
内部実装は NumPy を活用しており、大量のベクトルデータの追加、検索、更新、削除、永続化を効率的に行うことができます。また、複数のテーブル(コレクション)を管理でき、用途に合わせた設定が可能です。
特徴
-
高速ベクトル検索
- NumPy の一括演算による計算で、リアルタイム検索を実現。
- 内積、コサイン類似度、ユークリッド距離など複数の類似度計算方式に対応。
-
柔軟なテーブル管理
VectorTableクラスにより、各テーブルごとに次元数、データ型、デフォルトの計算方式を個別に設定可能。VectorDBクラスで複数のテーブルを一元管理できます。
-
データ永続化機能
- ベクトルデータは
.npz形式、メタデータはpickle形式で保存。 - サーバ停止前に自動保存する仕組みを備えています。
- ベクトルデータは
-
サーバ/クライアント通信
multiprocessing.managers.BaseManagerを使用し、同一ホスト内でのプロセス間通信を実現。- サーバ(
VectorDBServer)とクライアント(VectorDBClient)でシンプルな API 呼び出しが可能です。
-
コマンドラインインターフェース (CLI)
- インストール後、
vectank-runコマンドで VecTank サーバを簡単に起動できます。 - ポート番号、認証キー、データ保存プレフィックスなどのオプションを指定可能。
- インストール後、
-
一括登録機能
- 単一および複数のベクトルとメタデータを一度に登録可能な API を提供し、バッチ処理にも対応。
インストール
VecTank は Python 3.7 以上で動作します。
以下の手順に従ってインストールしてください。
-
GitHub からリポジトリをクローン
git clone https://github.com/yourusername/VecTank.git cd VecTank
-
パッケージのインストール
pip install .
また、開発中の場合は以下のコマンドでインストール(編集可能なモード)してください。
pip install -e .
使い方
1. サーバの起動 (CLI)
VecTank は CLI 経由でサーバを簡単に起動する機能を提供します。
インストール後、以下のコマンドでサーバを起動できます。
vectank-run --port 50000 --authkey secret --save-file vectank_data
コマンドラインオプション:
--port: サーバのポート番号 (デフォルト: 50000)--authkey: 認証キー (デフォルト: "secret")--save-file: ベクトルデータおよびメタデータの保存用ファイルのプレフィックス (デフォルト: "vectank_data")
このサーバは起動時にデフォルトテーブル "default" を自動生成(例: 1200 次元、float32、コサイン類似度)します。
2. クライアントからの利用
クライアント側では、VectorDBClient クラスを利用してサーバに接続できます。たとえば、以下のコード例をご参照ください。
from vectank.client import VectorDBClient
from vectank.core import VectorSimMethod
import numpy as np
# サーバに接続
client = VectorDBClient()
# "default" テーブルを取得
table = client.get_table("default")
# 1200 次元の乱数ベクトルを生成して追加
vector = np.random.rand(1200).astype(np.float32)
metadata = {"name": "サンプルベクトル"}
key = table.add_vector(vector, metadata)
print(f"追加したベクトルのキー: {key}")
# クエリベクトルによる検索(上位 5 件を取得)
results = table.search(vector, top_k=5)
for res in results:
print(res)
3. ベンチマーク
大量のベクトルを登録および検索するパフォーマンスを評価するため、examples/sample_benchmark.py を利用できます。
このスクリプトは、1200 次元の乱数ベクトル 20,000 個を登録し、上位 100 件の検索時間をミリ秒単位で表示します。
実行例:
python examples/sample_benchmark.py
ディレクトリ構成
VecTank リポジトリは以下のようなディレクトリ構成になっています。
VecTank/
├── vectank/ # ライブラリ本体
│ ├── __init__.py # パッケージエントリポイント(公開 API の定義)
│ ├── core.py # 類似度計算方式(Enum、計算関数、SIM_METHODS)
│ ├── table.py # VectorTable クラス(ベクトルの追加、検索、更新、削除、永続化)
│ ├── db.py # VectorDB クラス(複数テーブル管理)
│ ├── server.py # VectorDBServer クラス(サーバ起動機能)
│ └── client.py # VectorDBClient クラス(クライアント用 API)
├── vectank/cli.py # コマンドライン起動用のスクリプト(entry_point: vectank-run)
├── examples/ # 利用例・サンプルスクリプト
│ ├── run_server.py # サーバ起動用スクリプト
│ └── sample_benchmark.py # 登録・検索パフォーマンス計測用スクリプト
├── tests/ # テストコード(unittest/pytest)
│ ├── test_table.py
│ ├── test_db.py
│ ├── test_server.py
│ └── test_client.py
├── README.md # このファイル
├── setup.py # パッケージのセットアップスクリプト
└── LICENSE # ライセンス情報 (MIT License 等)
ライセンス
VecTank は MIT License の下で公開されています。
詳細は LICENSE をご覧ください。
コンタクト / 貢献
ご意見・ご質問、バグ報告、または機能改善の提案などは、GitHub の Issue をご利用ください。
プルリクエストも歓迎します。
VecTank を通じて、より効率的なベクトルデータ管理と検索が実現できることを願っています!
VecTank をぜひお試しください!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vectank-0.1.4.tar.gz.
File metadata
- Download URL: vectank-0.1.4.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c084259af3ed9ae625f8df8bf82b63deec8e4d531e2cdb829a0e479cc6fdca68
|
|
| MD5 |
2880768e67aa70131a6e9e8b27b33c89
|
|
| BLAKE2b-256 |
20c8bc357c4e94e1803ca31963747684dff882fa47c0736236b85a67501360bc
|
File details
Details for the file vectank-0.1.4-py3-none-any.whl.
File metadata
- Download URL: vectank-0.1.4-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d55d3e6b84e69bce2628a6e2a9b5ef5bfdec5d3edd6e60f0d6c5af4affca6cf
|
|
| MD5 |
fd74655bd1f3f86ecaf0cba0b0491e1a
|
|
| BLAKE2b-256 |
7dec3af3e6338aae0d801a7719ef09b112ffafb972b7cebbda68bad37f00893a
|