Skip to content

Release v1.0.0

Choose a tag to compare

@milliondreams milliondreams released this 05 Apr 03:38
· 355 commits to main since this release
a4f2561

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 recursive inference rules over your graph. Now those rules handle uncertainty.

MNOR combines independent risks — the probability that at least one of several causes fires. Three independent 30% failure modes give 65.7% combined risk, not 90%.

MPROD combines requirements — the probability that all conditions hold. Log-space arithmetic keeps it stable through long dependency chains.

Both converge correctly through recursive graph cycles.

Exact mode. When two proof paths share a base fact, independence is the wrong assumption. Enable exact_probability and Uni uses BDD-based weighted model counting for shared-evidence groups, fast path for everything else.

Provenance. Every derived fact carries its full proof trail — base facts, rules, paths, per-path probability. Request top_k_proofs and get the most probable derivation chains. When someone asks "why did the system flag this?" — you hand them the receipts.

Also new: PROB annotations, IS NOT complement semantics, strict_probability_domain mode, configurable convergence epsilon.

Three worked notebooks ship with 1.0: supply chain risk scoring, patent freedom-to-operate, regulatory impact cascades.


Stable API

We redesigned the public API around sessions and transactions — reads through sessions, writes through explicit transactions. Plus ~20 typed exceptions, cursor streaming, prepared statements, and a fluent schema builder. Modeled after rusqlite, Neo4j, and DuckDB.

uni_db.Database(path)    →  uni_db.UniBuilder.open(path).build()
db.query(...)            →  session = db.session(); session.query(...)
db.execute(...)          →  tx = session.tx(); tx.execute(...); tx.commit()
locy_evaluate(...)       →  session.locy(...)
except Exception         →  except uni_db.UniSchemaError / UniParseError / ...

Breaking change from 0.2 — and the last one we plan to make.


Correctness

Locy engine hardened. 9 runtime bugs found and fixed through the probabilistic work, including fold aggregation, recursive convergence, and projection correctness. 7,400 lines of new test scenarios. Locy TCK: 242/242. OpenCypher TCK: 3,896/3,897.

similar_to() now respects your distance metric. Was hardcoding cosine — L2 and dot product rankings were wrong. Fixed.

FTS sees unflushed writes. L0 buffer now merged into full-text results.

properties(n) returns current values after SET. L0 overlay applied in both schema and schemaless paths.


Under the Hood

  • Storage goes through a pluggable StorageBackend trait — Lance is the only backend, but the coupling is gone
  • Lance 1→3, Arrow 56→57, DataFusion 50→52
  • 56 Rust↔Python API gaps closed — full parity, type stubs grew from ~180 to ~985 lines

pip install uni-db · uni-db = "1.0.0" in Cargo.toml

[Docs](https://rustic-ai.github.io/uni-db) · [GitHub](https://github.com/rustic-ai/uni-db)

Built by [Dragonscale Industries](https://dragonscale.ai), part of [The Rustic Initiative](https://rustic.ai). Apache 2.0.

Full Changelog: v0.3.0...v1.0.0