Alopex DB · 本体の機能
試す(クイックスタート)
CLIとPythonで、表の作成からベクトル検索までを動かす手順です。1つの.alopexファイルにデータが保存されます。
更新: 2026/10/11
CLIとPythonで、表の作成からベクトル検索までを動かします。データベースは ./data.alopex の1ファイルとして作られます。
CLIで動かす
alopex --data-dir ./data.alopex sql "CREATE TABLE docs (id INTEGER PRIMARY KEY, title TEXT NOT NULL, tag TEXT, emb VECTOR(3))"
alopex --data-dir ./data.alopex sql "INSERT INTO docs (id,title,tag,emb) VALUES (1,'raft','db',[0.9,0.1,0.0]),(2,'sqlite','db',[0.1,0.9,0.0]),(3,'cake','food',[0.0,0.1,0.9])"
alopex --data-dir ./data.alopex sql "CREATE INDEX docs_emb ON docs (emb) USING HNSW"
alopex --data-dir ./data.alopex sql "SELECT id,title, vector_similarity(emb,[1.0,0.0,0.0],'cosine') AS score FROM docs WHERE tag='db' ORDER BY score DESC LIMIT 2"┌────┬────────┬──────────┐
│ id ┆ title ┆ score │
╞════╪════════╪══════════╡
│ 1 ┆ raft ┆ 0.993884 │
├╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ 2 ┆ sqlite ┆ 0.110432 │
└────┴────────┴──────────┘データは data.alopex の1ファイルに保存されます。そのままコピーして持ち運べます。
SQLを書く
外部キー、ON CONFLICT、ウィンドウ関数も、そのまま書けます。
CREATE TABLE customers (id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER NOT NULL REFERENCES customers(id),
amount INTEGER
);
INSERT INTO orders VALUES (1, 10, 500)
ON CONFLICT (id) DO UPDATE SET amount = 500 RETURNING id;
SELECT customer_id, SUM(amount) AS total,
ROW_NUMBER() OVER (ORDER BY SUM(amount) DESC) AS rank
FROM orders GROUP BY customer_id;Pythonで動かす
pip install alopex のあとに、次のように使います。
import alopex
db = alopex.Database.open("pydata.alopex")
db.execute_sql("CREATE TABLE t (id INTEGER PRIMARY KEY, n INTEGER)")
db.execute_sql("INSERT INTO t VALUES (1, 10)")
print(db.execute_sql("SELECT id, n FROM t")) # [{'id': 1, 'n': 10}]データは pydata.alopex の1ファイルに保存されます。