freshcrate
Skin:/
Home > Databases > uni-db

uni-db

Uni is a modern, embedded database that combines property graph (OpenCypher), vector search, and columnar storage (Lance) into a single, cohesive engine. It is designed for applications requiring loca

Why this rank:Strong adoptionRelease freshnessHealthy release cadence

Description

Uni is a modern, embedded database that combines property graph (OpenCypher), vector search, and columnar storage (Lance) into a single, cohesive engine. It is designed for applications requiring local, fast, and multimodal data access, backed by object storage (S3/GCS) durability.

README

Uni: Embedded Graph & Vector Database

License Rust Python

Uni is an embedded database that combines a property graph (OpenCypher), vector search, and columnar storage (Lance) into a single engine. Designed for applications requiring local, fast, multimodal data access with object storage (S3/GCS/local) durability.

Part of The Rustic Initiative by Dragonscale Industries Inc.

Key Features

  • Embedded & Serverless: Runs as a library within your application โ€” no server process.
  • Property Graph: OpenCypher queries with MATCH, CREATE, WHERE, ORDER BY, LIMIT, and aggregations.
  • Vector Search: K-NN similarity search (L2, cosine) with pre-filter and threshold support.
  • Columnar Storage: Lance-backed persistence on local disk or object storage (S3/GCS).
  • Graph Algorithms: PageRank, Louvain, shortest path, and more via the built-in algorithm library.
  • Rust & Python: Native Rust crate and Python bindings (PyO3).

Getting Started

Rust

Add to your Cargo.toml:

[dependencies]
uni-db = "0.1.3"

Python

pip install uni-db
import uni_db

# Open or create a database
db = uni_db.Database("./my_graph")

# Define schema
db.create_label("Person")
db.add_property("Person", "name", "string", False)
db.add_property("Person", "age", "int64", True)
db.create_scalar_index("Person", "name", "btree")

# Write data
db.execute("CREATE (p:Person {name: 'Alice', age: 30})")
db.execute("CREATE (p:Person {name: 'Bob', age: 25})")
db.flush()

# Query
results = db.query(
    "MATCH (p:Person) WHERE p.age > $min RETURN p.name",
    {"min": 28},
)
print(results)  # [{'p.name': 'Alice'}]

Vector Search

# Create schema with a vector property
db.create_label("Document")
db.add_property("Document", "text", "string", False)
db.add_property("Document", "embedding", "vector[128]", True)
db.create_vector_index("Document", "embedding", "cosine")

# Insert data
db.execute("CREATE (d:Document {text: 'hello world', embedding: [0.1, 0.2, 0.3]})")
db.flush()

# K-NN search
results = db.query("""
    CALL uni.vector.query('Document', 'embedding', $vec, 10)
    YIELD vid, distance
    RETURN vid, distance
    ORDER BY distance
""", {"vec": my_embedding})

# K-NN with pre-filter
results = db.query("""
    CALL uni.vector.query('Document', 'embedding', $vec, 10, 'category = "tech"')
    YIELD vid, distance
    RETURN vid, distance
""", {"vec": my_embedding})

Async API

import uni_db

db = await uni_db.AsyncDatabase.open("./my_graph")

await db.execute("CREATE (p:Person {name: 'Alice', age: 30})")
results = await db.query("MATCH (p:Person) RETURN p.name")

Python OGM (uni-pydantic)

pip install uni-pydantic
from uni_pydantic import UniNode, UniSession, Field, Relationship, Vector

class Person(UniNode):
    name: str
    age: int | None = None
    email: str = Field(unique=True, index="btree")
    embedding: Vector[128] = Field(metric="cosine")
    friends: list["Person"] = Relationship("FRIEND_OF", direction="both")

session = UniSession(db)
session.register(Person)
session.sync_schema()

alice = Person(name="Alice", email="alice@example.com")
session.add(alice)
session.commit()

adults = session.query(Person).filter(Person.age >= 18).order_by(Person.name).all()

Documentation

License

Apache 2.0 โ€” see LICENSE for details.


Uni is developed by Dragonscale Industries Inc. as part of The Rustic Initiative.

Release History

VersionChangesUrgencyDate
v4.1.1<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Prep release 4.1.1 by @milliondreams in https://github.com/rustic-ai/uni-db/pull/291 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v4.1.0...v4.1.1 <!-- Release notes generated using configuration in .github/release.yml at v4.1.1 --> ## What's Changed ### Other Changes * Prep release 4.1.1 by @milliondreams in https://github.com/rustic-ai/uni-db/pHigh9/24/2026
v4.1.0<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Fixing issues 281 - 286 by @milliondreams in https://github.com/rustic-ai/uni-db/pull/287 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v4.0.0...v4.1.0 <!-- Release notes generated using configuration in .github/release.yml at v4.1.0 --> ## What's Changed ### Other Changes * Fixing issues 281 - 286 by @milliondreams in https://github.com/rustic-aHigh9/21/2026
v4.0.0# uni-db 4.0.0 **Release focus: answers you can trust, and the instruments to see them.** The bulk of this release is a sweep through places where a failed read, a missing value or an unsupported shape produced something that looked like an answer and was not one. Nine changes are breaking because the correct result differs from the old one. Alongside that, query counters, index-usage stats and compaction reports stopped reporting invented numbers and started reporting measured ones. 4High9/18/2026
v3.4.0# uni-db 3.4.0 **Release focus: the bindings a pattern promises, and the name an edge answers to.** This is a small release โ€” three commits on top of 3.3.0 โ€” but both headline items are the same shape as that release's theme: a surface that returned a plausible-looking answer with nothing between the claim and the truth. `[r:E]` written inside `shortestPath(...)` or a quantified path pattern parsed fine and was then silently discarded, so the variable surfaced as `UndefinedVariable` atHigh8/11/2026
v3.2.0**Release focus: making a guest algorithm a first-class citizen, and paying down the honesty debt underneath it.** The headline is the **Plugin Compute ABI** โ€” a guest algorithm can now *choose and shape* the graph it sees, *grow structure that does not exist in the store* through a metered mutable arena, and be told at a typed boundary when it mixes two graphs up. Underneath it, two large sweeps: **lancedb is gone** (the backend is built directly on Lance, and `lance::Dataset` no longer apHigh8/3/2026
v3.0.1<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Implement Plugin Compute ABI phases 0-4 and update version to 3.0.1 by @milliondreams in https://github.com/rustic-ai/uni-db/pull/148 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v3.0.0...v3.0.1 <!-- Release notes generated using configuration in .github/release.yml at v3.0.1 --> ## What's Changed ### Other Changes * Implement Plugin Compute ABIHigh7/14/2026
v2.5.0**Release focus: typed 3-way hybrid search in the Python OGM**, a query-time HNSW `ef_search` knob backed by at-scale recall benchmarks for all three vector modalities, capability-based embedding-alias routing (one BGE-M3 alias can now serve dense, sparse, and multi-vector columns), and a query-planner correctness/performance pass (equi-join recovery, projection-pushdown leaks). This is a minor release covering everything since **2.4.1**. 29 commits; version bumped across the Rust workspaMedium7/3/2026
v2.4.1**Release focus: learned-sparse (SPLADE) vector search**, a vector-index test-parity and hardening pass across all three modalities (dense / multi-vector / sparse), and a storage-path correctness fix. This is a minor release covering everything since **2.3.0**. 31 commits; version bumped across the Rust workspace and the Python packages (`uni-db`, `uni-pydantic`) to **2.4.1**. The feature work is driven by a new public API (`StorageBackend::lock_table_for_write` + `TableWriteGuard`) and High6/28/2026
v2.2.4<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Improve CI release process and enhance Locy profiling features by @milliondreams in https://github.com/rustic-ai/uni-db/pull/98 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v2.2.3...v2.2.4 <!-- Release notes generated using configuration in .github/release.yml at v2.2.4 --> ## What's Changed ### Other Changes * Improve CI release process and enhHigh6/20/2026
v2.1.0# Uni 2.1.0 Release Notes **Release scope:** `v2.0.6` โ†’ `2.1.0` ยท 57 commits ยท ~22.7K insertions / 4.1K deletions across 215 files **Dates:** 2026-06-05 โ†’ 2026-06-13 **Version path:** `2.0.6` โ†’ `2.0.7` (internal) โ†’ `2.1.0` Uni 2.1 is a **consolidation and hardening** release on top of the headline 2.0 line. It lands a large Cypher-ingest and `MERGE` performance pass, a sweeping correctness/durability hardening sweep (the 2026-06-10 architecture & correctness review), a **durable Locy rulHigh6/13/2026
v2.0.6<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Deduplicate wasmtime dependency and improve release process by @milliondreams in https://github.com/rustic-ai/uni-db/pull/81 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v2.0.5...v2.0.6 <!-- Release notes generated using configuration in .github/release.yml at v2.0.6 --> ## What's Changed ### Other Changes * Deduplicate wasmtime dependency and iHigh6/5/2026
v2.0.0# Uni 2.0.0 Release Notes **Release scope:** `v1.1.0` โ†’ `2.0.0` ยท 283 commits ยท ~245K insertions across 1,261 files **Dates:** 2026-04-15 โ†’ 2026-06-03 **Version path:** `1.1.0` โ†’ `1.1.1` โ†’ `1.2.0` โ†’ `1.3.0` (breaking wheel collapse) โ†’ `1.4.0` โ†’ `2.0.0` Uni 2.0 is the largest release in the project's history. It graduates four headline subsystems from prototype to default-on production behavior โ€” **Serializable Snapshot Isolation**, **Graph Forks**, the **Plugin Framework**, and **Locy neHigh6/4/2026
v1.1.0<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Integrate BTIC support in query engine, Python bindings, and tests by @milliondreams in https://github.com/rustic-ai/uni-db/pull/38 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v1.0.2...v1.1.0 <!-- Release notes generated using configuration in .github/release.yml at v1.1.0 --> ## What's Changed ### Other Changes * Integrate BTIC support in querHigh4/15/2026
v1.0.2<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Fix publish order for uni-btic and update crate versions to 1.0.2 by @milliondreams in https://github.com/rustic-ai/uni-db/pull/29 * Bump crate versions and fix compaction debug assertion issue by @milliondreams in https://github.com/rustic-ai/uni-db/pull/30 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v1.0.1...v1.0.2High4/11/2026
v1.0.1<!-- Release notes generated using configuration in .github/release.yml at v1.0.1 --> ## What's Changed ### Other Changes * fix: restore notebook execution outputs in documentation build by @milliondreams in https://github.com/rustic-ai/uni-db/pull/21 * Fix FOLD projection issues, add serialization, and improve timeout handling by @milliondreams in https://github.com/rustic-ai/uni-db/pull/26 * Fix FOLD projection issues, add serialization, and improve timeout handling by @milliondreams in httpsMedium4/10/2026
v1.0.0# Uni 1.0 Uni was a graph database with vector search. As of 1.0, it's a reasoning engine. Write rules. Attach probabilities to your edges. Uni propagates them through the graph โ€” recursively, correctly โ€” and gives you not just answers but *confidence scores* backed by full evidence chains. Graph structure, vector similarity, logical inference, probabilistic reasoning. One embedded library. No server. `pip install uni-db`. --- ## Probabilistic Locy Locy already let you define rHigh4/5/2026
v0.3.0<!-- Release notes generated using configuration in .github/release.yml at v0.3.0 --> ## What's Changed ### Other Changes * Probabilistic Logic programming in Locy by @milliondreams in https://github.com/rustic-ai/uni-db/pull/15 * fix(uni-locy): escape interval notation in doc comment to fix rustdocโ€ฆ by @milliondreams in https://github.com/rustic-ai/uni-db/pull/17 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v0.2.0...v0.3.0Medium3/25/2026
v0.2.0<!-- Release notes generated using configuration in .github/release.yml at main --> ## What's Changed ### Other Changes * Upgrade uni-xervo to 0.2.0 by @milliondreams in https://github.com/rustic-ai/uni-db/pull/10 * fix: upgrade CI to Python 3.12 and fix parallel test race conditions by @milliondreams in https://github.com/rustic-ai/uni-db/pull/11 **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v0.1.18...v0.2.0Low3/15/2026
v0.1.18<!-- Release notes generated using configuration in .github/release.yml at v0.1.18 --> **Full Changelog**: https://github.com/rustic-ai/uni-db/compare/v0.1.17...v0.1.18Low3/9/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

RaphtoryScalable graph analytics database powered by a multithreaded, vectorized temporal engine, written in Rustv0.18.5
coordinodeThe graph-native hybrid retrieval engine for AI and GraphRAG. Graph + Vector + Full-Text in a single transactional engine.v0.9.0
contextdbEmbedded database for agentic memory โ€” relational, graph, and vector under unified MVCC transactionsv1.0.0
helix-dbHelixDB is an open-source graph-vector database built from scratch in Rust.v3.5.1
verisimiserAugment any database with VeriSimDB octad capabilities โ€” drift detection, provenance, temporal versioning, modality overlaysmain@2026-10-24

More in Databases

openclaw-engramLocal-first memory plugin for OpenClaw AI agents. LLM-powered extraction, plain markdown storage, hybrid search via QMD. Gives agents persistent long-term memory across conversations.
remnicLocal-first memory plugin for OpenClaw AI agents. LLM-powered extraction, plain markdown storage, hybrid search via QMD. Gives agents persistent long-term memory across conversations.
onyxOpen Source AI Platform - AI Chat with advanced features that works with every LLM
PageIndex๐Ÿ“‘ PageIndex: Document Index for Vectorless, Reasoning-based RAG