Skip to main content

Python bindings for AiFastDb - High-performance AI-friendly database engine

Project description

aifastdb

Python bindings for AiFastDb — a high-performance AI-friendly database engine written in Rust.

PyPI Python License

Features

  • Core Database — Key-value store with HNSW vector search, batch operations, and hybrid (text + vector) recall
  • SocialGraphV2 — Social network graph with path finding, network analysis, family trees, and concurrent sharding
  • DocumentStore — JSONL-based document store with tag/type indexing and async flush
  • Federation — Heterogeneous storage federation (Graph + Document + Vector) with cross-database queries and 2PC transactions
  • Embedding — Built-in embedding generation (dummy / MiniLM / BGE / Gemma) with numpy output
  • Reasoning — LLM-based reasoning via Ollama or OpenAI (intent, logic, summarize)
  • pandas integration — One-line DataFrame conversion for any query result

Installation

pip install aifastdb

# With optional extras:
pip install aifastdb[pandas]    # pandas DataFrame support
pip install aifastdb[numpy]     # numpy array support
pip install aifastdb[all]       # everything

Requirements

  • Python >= 3.8
  • No additional dependencies for core functionality (self-contained Rust binary)

Quick Start

Core Database

from aifastdb import AiFastDb

with AiFastDb("./my_db") as db:
    # Store a memory
    db.remember("doc1", "The quick brown fox", tags=["animal", "classic"])

    # Retrieve by ID
    doc = db.get("doc1")
    print(doc["content"])  # "The quick brown fox"

    # Hybrid search (text + vector)
    results = db.recall(query="brown fox")
    for r in results:
        print(f"  {r['node']['id']}  score={r['score']:.3f}")

    # Delete
    db.forget("doc1")

Social Graph

from aifastdb import SocialGraphV2

with SocialGraphV2("./social_data") as sg:
    # Create people
    alice = sg.add_person({"name": "Alice", "age": 30})
    bob   = sg.add_person({"name": "Bob",   "age": 28})
    carol = sg.add_person({"name": "Carol", "age": 32})

    # Add friendships
    sg.add_friend(alice["id"], bob["id"])
    sg.add_friend(bob["id"], carol["id"])

    # Find shortest path
    path = sg.find_path(alice["id"], carol["id"])
    print(f"Path hops: {path['hops']}")

    # Mutual friends
    mutual = sg.get_mutual_friends(alice["id"], carol["id"])
    print(f"Mutual friends: {[m['name'] for m in mutual]}")

    # Network stats
    stats = sg.get_network_stats(bob["id"])
    print(f"Bob's degree centrality: {stats['degree_centrality']:.2f}")

Document Store

from aifastdb import DocumentStore

with DocumentStore("./docs.jsonl") as store:
    store.put("note-1", "Meeting at 3pm", doc_type="note", tags=["work"])
    store.put("note-2", "Buy groceries",  doc_type="note", tags=["personal"])

    # Query by tag
    work_notes = store.find_by_tag("work")
    print(f"Work notes: {len(work_notes)}")

    # All documents
    all_docs = store.all()
    print(f"Total documents: {len(all_docs)}")

Federation (Multi-Store)

from aifastdb import Federation

with Federation() as fed:
    fed.register_graph("social", "./social_data")
    fed.register_document("docs", "./docs.jsonl")

    # Query across stores
    result = fed.query("social", {"target": "person", "limit": 10})
    print(f"Found {result['total']} persons")

    # Write to document store
    fed.write("docs", {
        "op": "CreateDocument",
        "id": "fed-doc-1",
        "content": "Created via federation",
        "doc_type": "note",
    })

    # Cross-store transaction
    tx = fed.begin_transaction(["social", "docs"])
    tx.write("social", {"op": "CreateEntity", "name": "Eve", "entity_type": "person"})
    tx.write("docs",   {"op": "CreateDocument", "id": "eve-doc", "content": "Eve's note"})
    tx.commit()

Embedding Engine

from aifastdb import EmbeddingEngine
import numpy as np

engine = EmbeddingEngine()  # dummy 384d engine

# Single embedding
vec = engine.embed("Hello, world!")
print(f"Dimension: {len(vec)}")

# Numpy output
arr = engine.embed_numpy("Hello, world!")
print(f"Shape: {arr.shape}, dtype: {arr.dtype}")

# Batch
vecs = engine.embed_batch(["Hello", "World", "Foo"])
print(f"Batch size: {len(vecs)}")

# Cosine similarity
sim = EmbeddingEngine.cosine_similarity(
    engine.embed("cat"),
    engine.embed("dog"),
)
print(f"Similarity: {sim:.4f}")

Perception Pipeline (Embed + Remember)

from aifastdb import PerceptionPipeline, DocumentStore

pipe = PerceptionPipeline()

# Auto-embed content
result = pipe.remember_with_embedding(
    "The mitochondria is the powerhouse of the cell",
    "bio-001",
    tags=["biology"],
)
print(f"Embedding dim: {result['dimension']}")

# Store the result in a DocumentStore
with DocumentStore("./knowledge.jsonl") as store:
    store.put(
        result["id"],
        result["content"],
        tags=result["tags"],
        doc_type=result["doc_type"],
    )

pandas Integration

from aifastdb import SocialGraphV2, DocumentStore
from aifastdb.pandas_ext import to_dataframe, graph_to_dataframes

# SocialGraph → DataFrame
with SocialGraphV2("./social_data") as sg:
    persons_df = to_dataframe(sg.list_persons())
    print(persons_df[["id", "name", "age"]])

    entities_df, relations_df = graph_to_dataframes(sg.export_graph())
    print(f"Entities: {len(entities_df)}, Relations: {len(relations_df)}")

# DocumentStore → DataFrame
with DocumentStore("./docs.jsonl") as store:
    docs_df = to_dataframe(store.all())
    print(docs_df.head())

API Reference

Core Classes

Class Description
AiFastDb Core database with collections, CRUD, and hybrid search
Collection Named collection within AiFastDb
SocialGraphV2 Social graph with path finding and network analysis
DocumentStore JSONL document store with tag/type indexing
Federation Multi-store federation with unified query/write
FederatedTransaction Cross-store 2PC transaction
EmbeddingEngine Vector embedding generation
ReasoningEngine LLM-based reasoning (Ollama/OpenAI)
PerceptionPipeline Combined embedding + reasoning pipeline

Exception Hierarchy

RuntimeError
└── AiFastDbError
    ├── StoreNotFoundError
    ├── RecordNotFoundError
    ├── QueryError
    ├── WriteError
    ├── TransactionError
    ├── StorageError
    ├── CircuitBreakerError
    └── RateLimitError

Development

# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone and build
git clone https://github.com/aifastdb/aifastdb.git
cd aifastdb/packages/python

# Create venv and install in dev mode
python -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install maturin numpy pandas pytest
maturin develop --release

# Run tests
python -m pytest tests/ -v

License

See LICENSE for details. Free for personal, educational, and non-commercial use. Commercial use requires a separate license.

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

aifastdb-0.1.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

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

aifastdb-0.1.0-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

File details

Details for the file aifastdb-0.1.0.tar.gz.

File metadata

  • Download URL: aifastdb-0.1.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for aifastdb-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d209b5e04a63e220a7178f60aaacc0155c42fe53025ec553edfebd0984be7a49
MD5 76b0888213a4eac06017d24b46810905
BLAKE2b-256 b2dc3e8f6beeccf3f4de241c0f5445e1c1f5469f1e94c28b9cafa6f444c4d1e8

See more details on using hashes here.

File details

Details for the file aifastdb-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: aifastdb-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for aifastdb-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5ded32f42774b27223d57cbaf5b67661e74bef8e6b6dca825148cb05adbc1397
MD5 73ce206d8633a024a47790393c87e34a
BLAKE2b-256 141410cc3e3d213b0d2b2e70f573b5ba3f3ffe4addb7912957f28dae7c032867

See more details on using hashes here.

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