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.1.tar.gz (826.7 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.1-cp38-abi3-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.8+Windows x86-64

alopex-0.7.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.0 MB view details)

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

alopex-0.7.1-cp38-abi3-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

alopex-0.7.1-cp38-abi3-macosx_10_12_x86_64.whl (5.8 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: alopex-0.7.1.tar.gz
  • Upload date:
  • Size: 826.7 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.1.tar.gz
Algorithm Hash digest
SHA256 cae999885fa01cad7ab82697aaed44fdb70cdb554ce2988d364b319273b61a9e
MD5 4b1ee51bb04439f74664119ea7360002
BLAKE2b-256 f85d5d937ba5d38cdcd88da344adc4557c44b8461e8611a76085726437434a19

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: alopex-0.7.1-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 5.8 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.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 14c26920ec550f2bc32287ea3e2eeffb890c4e863810211b19a08a5b3e2731a3
MD5 6ab7a82da9d01b9843b8e1994ad13181
BLAKE2b-256 1e7f06023535952a13923b6e347a05788ae16c5798d747a647c6fa3e81c611fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alopex-0.7.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb64df1e7c32ade1962a678a11f4dd01a765b8d8ca0e2bb8dbd4339bfd8a39a4
MD5 742db7a6c91fd99f95a7879ed4689c1b
BLAKE2b-256 5a9328938bb5f9ed508857666385ec38d7085fb8d09c34633ab317c22a12d38a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alopex-0.7.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 adb875d86a8ad88b4d974a2cd0ade5baf9698400b1311e6399e611aa114d60b3
MD5 729f5aa3c2693e207e78a07f42865e38
BLAKE2b-256 56b5a932749f4fb57357bc0dc819f8c0b41de66cf40726426ad1ddf8e15b2f1f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for alopex-0.7.1-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 14ac76dadf6fcb85e7b31158985b1daea6d406f1e38aaec2ef46d9092e95e9e3
MD5 645747232ccb7f482922e36792a27d5c
BLAKE2b-256 44897fb0bec8ab95961a6751fb17a6dd9e0b10f44c635147ceb787ae8074ca6a

See more details on using hashes here.

Provenance

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