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.5.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.5-cp38-abi3-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.8+Windows x86-64

alopex-0.7.5-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.5-cp38-abi3-macosx_11_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

alopex-0.7.5-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.5.tar.gz.

File metadata

  • Download URL: alopex-0.7.5.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.5.tar.gz
Algorithm Hash digest
SHA256 e3f65a51c93dce66d6fb961be29408c96484d7dc55eefd8adb84ae5c7b2c5126
MD5 0a506659e2ee758c8d981ca69f7f2ef1
BLAKE2b-256 d6a061a4989b4069a725a484208578b6e7458f9d98be1e73e044ab34493b327b

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.5.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.5-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: alopex-0.7.5-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.5-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5c62ee5916b86740bf55efb1a2e39176876ee5445606f0c39b404cbed8b28312
MD5 5b8b93f4669a4bc7a45970b32abfa937
BLAKE2b-256 df6a2b014ba2b283583df421446aa82001ff101be968652db8ca6c5fa1b4f936

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.5-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.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for alopex-0.7.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bcd4d46fa3941125ad06ca7c224afecd08b6beb4a7b73f392878ca304c769e79
MD5 ef2f037b139d54bd0d74c26d498b4de2
BLAKE2b-256 7d504c65e871a4861b42b20225af233422925d580495d9ce3852e20ded591f96

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.5-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.5-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for alopex-0.7.5-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf11daaeddcaf4535d6f248f8d642bb04c2870117f8071d8b12a44bae28a46ed
MD5 df7e8df1005dc4a743fe7c0bb299359e
BLAKE2b-256 1c47aa481791917f9a422a7df6e1bdd49bcd9b1f84c12d113b878360ef9435d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.5-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.5-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for alopex-0.7.5-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2e302b0c7156dbd24db1447ae8dece5606ddae3f6f15f6a68861dcf64491fee9
MD5 8ebe558774f19c261921221f5ad8cd97
BLAKE2b-256 a0f9a5c032c1e74ef003b82e3017efe77277349da77a97c7c7c0a8ba1a010504

See more details on using hashes here.

Provenance

The following attestation bundles were made for alopex-0.7.5-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