asopi tech
asopi techIndie Developer

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ファイルに保存されます。

関連リンク