Skip to main content

Embeddable AI engine for inference, embeddings, vector search, and fine-tuning

Project description

Jammi AI

Jammi is an embeddable AI engine that brings model inference into your data pipeline. Register data sources, run SQL queries, generate embeddings, search with vector similarity, fine-tune models on your domain, and evaluate results — all without leaving your application.

Install

pip install jammi-ai

The embed wheel runs the engine in-process and bundles jammi-client for remote targets. For a lean, engine-free deploy footprint that talks to a remote server, install the client on its own:

pip install jammi-client

(GPU/CUDA lives on the server image, not the embed wheel.)

Quickstart

The 5-minute walkthrough — install, connect, register a source, generate embeddings, search — lives in cookbook/quickstart/ with a runnable quickstart.py gated by CI. The condensed version:

import jammi_ai

# One front door. `file://` runs the in-process engine; flip to a
# `https://` / `grpc://` target — no code change — to talk to a remote server.
db = jammi_ai.connect("file://.jammi")
db.add_source("corpus", url="cookbook/fixtures/tiny_corpus.parquet", format="parquet")

MODEL = "sentence-transformers/all-MiniLM-L6-v2"
db.generate_embeddings(source="corpus", model=MODEL, columns=["content"], key="id", modality="text")

query_vec = db.encode_query(model=MODEL, query="quantum computing applications")
results = db.search("corpus", query=query_vec, k=5).run()
print(results.to_pandas())

For runnable end-to-end recipes — mutable tables, trigger streams, eval, fine-tuning, Flight SQL — see cookbook/.

Features

  • SQL over local files — query Parquet, CSV, and JSON via DataFusion
  • Federated queries — join local files with PostgreSQL or MySQL
  • Text embeddings — load any BERT-family model from Hugging Face Hub (or local safetensors / ONNX) and persist results to Parquet with ANN indexes
  • Image embeddings — CLIP-style vision encoders
  • Vector search — ANN similarity search with automatic brute-force fallback
  • SearchBuilder — fluent API for .filter(), .sort(), .join(), .annotate(), .limit(), .select(), .run()
  • Evidence provenanceretrieved_by and annotated_by tracking on every search result
  • Fine-tuning — LoRA / deep LoRA adapters with contrastive loss to improve embeddings for your domain
  • Evaluation — recall@k, precision@k, MRR, nDCG, accuracy, F1, and A/B model comparison
  • Model caching — LRU eviction, ref-counted guards, single-flight loading
  • GPU scheduling — memory-budget admission control with RAII permits
  • Crash recovery — recovers embedding tables stuck in "building" state on restart

SearchBuilder

search = db.search("patents", query=query_vec, k=20)
search.filter("year >= 2020")
search.sort("similarity", descending=True)
search.limit(5)
search.select(["id", "title", "similarity"])
results = search.run()   # pyarrow.Table

All results are returned as pyarrow.Table — zero-copy from the Rust engine.

Fine-tuning

job = db.fine_tune(
    source="patents",
    model="sentence-transformers/all-MiniLM-L6-v2",
    triplets="triplets_train.parquet",
)
job.wait()

Requirements

  • Python 3.9+
  • Linux (x86_64) or macOS (Apple Silicon or Intel)

Windows is not yet supported due to a dependency on POSIX memory-mapping APIs.

Running the OSS server

For deployments that need a long-running Flight SQL + gRPC service rather than an embedded library, the workspace ships a Docker image:

docker run --rm \
  -p 8080:8080 -p 8081:8081 \
  -v jammi_data:/var/lib/jammi \
  ghcr.io/f-inverse/jammi-ai-server:latest

curl http://localhost:8080/healthz
# {"status":"ok","version":"0.8.0"}

The OSS server is single-tenant — the deployer's network is the auth boundary. See Deploy as a Server for the full guide.

Documentation

Full documentation, including guides for SQL queries, embeddings, search, fine-tuning, and evaluation:

https://f-inverse.github.io/jammi-ai/

For the engine's design philosophy — what belongs in Jammi versus a consumer's own repo, how embeddings are consumed, and how it deploys — see Design Philosophy.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

jammi_ai-0.19.0-cp39-abi3-manylinux_2_28_x86_64.whl (59.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ x86-64

jammi_ai-0.19.0-cp39-abi3-macosx_11_0_arm64.whl (50.8 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

jammi_ai-0.19.0-cp39-abi3-macosx_10_12_x86_64.whl (53.8 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file jammi_ai-0.19.0-cp39-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jammi_ai-0.19.0-cp39-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e9b327aa28e2e9723a292cb7bce4a85823445c5a269d7c66c6db8842a4d8407c
MD5 d3bbd4940010738c9c5d9be1c3d023c1
BLAKE2b-256 f9521281fbb7832b5f3251c80572fcb43e8845d56e24ff8f268f068a62893036

See more details on using hashes here.

Provenance

The following attestation bundles were made for jammi_ai-0.19.0-cp39-abi3-manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on f-inverse/jammi-ai

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

File details

Details for the file jammi_ai-0.19.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for jammi_ai-0.19.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a0bc3518edc8b2aeb5f6a13c02c3c715fc501baadeb20d16cd6e36ecc1f80f0
MD5 355562ebdfc4ce873e02c3e703ef6728
BLAKE2b-256 21ffcbbc5da409421bc884b7b4cc4cedcc82e92a78872ca502e2cc28de61ccf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for jammi_ai-0.19.0-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: pypi.yml on f-inverse/jammi-ai

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

File details

Details for the file jammi_ai-0.19.0-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for jammi_ai-0.19.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2c6d64f69997691d68214437d33e0a2143ea2f1e43efe311a58719431151f41f
MD5 a622033a67d15612ac157481bdea620d
BLAKE2b-256 7a26511b92cb603b9b8fb0f96fd8175d0b973f08a36ed9766140d7fef823b905

See more details on using hashes here.

Provenance

The following attestation bundles were made for jammi_ai-0.19.0-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: pypi.yml on f-inverse/jammi-ai

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