Skip to main content

Python bindings for Alopex DB

Project description

Alopex Python バインディング

Python から AlopexDB を操作するためのバインディングです。
Database/Transaction の基本機能に加え、ベクトル検索(numpy)と Unity Catalog 互換の Catalog API(polars)を提供します。

インストール

pip install alopex

Catalog API (polars) を使う場合:

pip install alopex[polars]

開発中は maturin を利用できます。

maturin develop -m crates/alopex-py/pyproject.toml

オプション依存:

  • numpy を使う場合: pip install alopex[numpy]
  • polars を使う場合: pip install alopex[polars]

対応バージョン

依存関係 対応バージョン
Python 3.8+
Polars 0.20+ (Catalog API)
NumPy 1.20+ (Vector API)

基本的な使い方

Database / Transaction

from alopex import Database, TxnMode

db = Database.new()

with db.begin(TxnMode.READ_WRITE) as txn:
    txn.put(b"user:1", b"alice")
    txn.commit()

with db.begin(TxnMode.READ_ONLY) as txn:
    value = txn.get(b"user:1")
    print(value)

db.close()

ベクトル検索(numpy 必須)

import numpy as np
from alopex import Database, Metric, TxnMode

db = Database.new()
with db.begin(TxnMode.READ_WRITE) as txn:
    vec = np.array([1.0, 0.0, 0.0], dtype=np.float32)
    txn.upsert_vector(b"k1", None, vec, Metric.COSINE)
    results = txn.search_similar(vec, Metric.COSINE, 1, return_vectors=True)
    print(results[0].key, results[0].score)
    if results[0].vector is not None:
        print(results[0].vector.dtype, results[0].vector.shape)

NumPy 入出力とゼロコピー条件(v0.3.5)

入力(Python → Rust):

  • dtype: float32 が優先。float64float32 に変換して処理します。
  • layout: C-contiguous が優先。非連続(strided/Fortran order 等)は C-contiguous に変換して処理します。
  • ゼロコピー入力: float32 かつ C-contiguous の場合は Rust 側でコピーなしに参照します。

出力(Rust → Python):

  • Transaction.search_similar(..., return_vectors=True) の場合、SearchResult.vectornumpy.ndarray[float32] を含められます。
  • Transaction.search_similar(..., zero_copy_return=True) / Transaction.get_vector(..., zero_copy_return=True) の場合、可能なら所有権移譲によるゼロコピー返却を行います(False の場合はコピー)。

GIL:

  • upsert_vector / search_similar / search_hnsw は重い処理中に GIL を解放します。

HNSW インデックス(numpy 必須)

import numpy as np
from alopex import Database, HnswConfig, TxnMode

db = Database.new()
db.create_hnsw_index("idx", HnswConfig(2))

with db.begin(TxnMode.READ_WRITE) as txn:
    vec = np.array([1.0, 0.0], dtype=np.float32)
    txn.upsert_to_hnsw("idx", b"k1", vec, None)
    txn.commit()

results, stats = db.search_hnsw("idx", np.array([1.0, 0.0], dtype=np.float32), 1)
print(stats.node_count)

Catalog API(polars 必須)

import polars as pl
from alopex import Catalog, ColumnInfo

Catalog.create_catalog("main")
Catalog.create_namespace("main", "default")

columns = [ColumnInfo("id", "int", 0, False)]
Catalog.create_table("main", "default", "users", columns, "/tmp/users.parquet")

df = pl.DataFrame({"id": [1, 2], "name": ["a", "b"]})
Catalog.write_table(
    df,
    "main",
    "default",
    "users",
    delta_mode="overwrite",
    storage_location="/tmp/users.parquet",
)

lazy_frame = Catalog.scan_table("main", "default", "users")
print(lazy_frame.collect())

注意事項

  • numpy / polars が未インストールの場合、対応 API は AlopexError を返します。
  • Phase 1 では Parquet のみ対応しています。

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

alopex-0.7.6.tar.gz (832.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

alopex-0.7.6-cp38-abi3-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.8+Windows x86-64

alopex-0.7.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

alopex-0.7.6-cp38-abi3-macosx_11_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

alopex-0.7.6-cp38-abi3-macosx_10_12_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file alopex-0.7.6.tar.gz.

File metadata

  • Download URL: alopex-0.7.6.tar.gz
  • Upload date:
  • Size: 832.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for alopex-0.7.6.tar.gz
Algorithm Hash digest
SHA256 fa55d0beb9fa9628e50a2ae8770c7acb2e5e041ad247abf8a997b9491e60df67
MD5 bd1d20c037bbfdd142428f52f890e0ab
BLAKE2b-256 a2ae96239e873ede719c6c3b8367d02352630478f713c46bf4b2cefaea501055

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.6.tar.gz:

Publisher: alopex-py-release.yml on alopex-db/alopex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alopex-0.7.6-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: alopex-0.7.6-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 6.1 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for alopex-0.7.6-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 95fe8beb37eafcd6d2434ce34466620b989bf3cb9a0d6243c2fee7c466319f81
MD5 78c350d2b2853b2a56f0d9949a3ae195
BLAKE2b-256 b70e739fa2d26b9428cea8e8bef8e8b320b5882f91acdf094609ab2f90a1f52a

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.6-cp38-abi3-win_amd64.whl:

Publisher: alopex-py-release.yml on alopex-db/alopex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alopex-0.7.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alopex-0.7.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c62e095a48e1821c6a5f2af377a847c9c5cf879c89e9485f717c6967e173e50d
MD5 bd3485639d3f754cf53bd47bf27a8bb7
BLAKE2b-256 a06accffb6f4ffd7d5f5dbd5410e527f3c04ef37076f405eae30a183924c7b4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: alopex-py-release.yml on alopex-db/alopex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alopex-0.7.6-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for alopex-0.7.6-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 261c39a410084c4cd991feb4d71c5d2146f0a2175af2894d70cf27e04cd4a3a7
MD5 5271469c85e774ffd61adcf25ffb5b27
BLAKE2b-256 da5846111f3421dfdcc6b46744a9f54fe7aa07f9031d1d3eb0eabe164f37d949

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.6-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: alopex-py-release.yml on alopex-db/alopex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file alopex-0.7.6-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for alopex-0.7.6-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1ee28a04a56298b8234b16d93e1c0e3034937f55098a8a37df57b9f45073dc0f
MD5 ea1159593826537cd02674d72eb8a36d
BLAKE2b-256 1aa076acb09cc719d432d3be76e00c827b6379f43366f6e0acaae6a1f1f7bff8

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.6-cp38-abi3-macosx_10_12_x86_64.whl:

Publisher: alopex-py-release.yml on alopex-db/alopex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page