Releases: kn0sys/valentinus
valentinus-v1.1.2
Release notes
- Patch the multidimensional metadata filter for
inoperations. Add tests for valid filters. - Fix a typo in sentence-transformers setup documentation
Full Changelog: v1.1.1...v.1.1.2
valentinus-v1.1.1
valentinus-v1.1.0
Valentinus v1.1.0 - The Resilience Update
Release Date: July 29, 2025
This is a landmark release for Valentinus, focusing entirely on making the database engine resilient, thread-safe, and production-ready. We've undertaken a significant architectural refactor to address core issues related to concurrency, performance, and data integrity.
🚀 Major Features & Architectural Changes
1. New Thread-Safe Architecture with Valentinus
The most significant change is the introduction of the new Valentinus struct. This struct is now the primary, thread-safe entry point for all database operations. It manages the database connection and a new in-memory cache, eliminating the need for global static locks and providing a clear, safe API for concurrent applications.
Old Way (Not Thread-Safe):
// Operations were scattered across static functions, relying on a global lock.
EmbeddingCollection::new(...);
EmbeddingCollection::save(...);
EmbeddingCollection::delete(...);New Way (Thread-Safe):
// Create one shared instance and use its methods.
use std::sync::Arc;
let valentinus = Arc::new(Valentinus::new("production_env")?);
// All operations are now methods on the central struct.
valentinus.create_collection(...);
valentinus.cosine_query(...);
valentinus.delete_collection(...);2. High-Performance In-Memory Caching
To dramatically improve query performance, Valentinus now implements a thread-safe, in-memory caching layer. When a collection is accessed for the first time, it is loaded from disk and cached. All subsequent queries for that collection will be served directly from memory, avoiding costly disk I/O and deserialization.
3. Atomic Database Operations
All operations that modify the database state—especially creating and deleting collections—are now performed within single, atomic LMDB transactions. This guarantees that the database indexes can never be left in a corrupt state, even if the application crashes mid-operation. The previous read-modify-write patterns have been completely replaced.
4. Rock-Solid Reliability and Error Handling
We have performed a complete audit to remove all .unwrap(), .expect(), and other panics from the core logic. All functions now return a Result, and errors are propagated cleanly, allowing applications to handle database issues gracefully instead of crashing.
🐛 Bug Fixes
Fixed: Database Deadlocks: Corrected a critical bug where nested write transactions would cause the entire application to hang when creating a collection.
Fixed: Data Integrity in Queries: Resolved a bug in cosine_query where incorrect metadata could be returned for documents with duplicate text content.
Fixed: Collection Lookup Failures: Eliminated an inconsistency in how collection view names were stored and retrieved, which previously caused CollectionNotFound errors immediately after creation.
⚠️ Breaking API Changes
This release introduces significant, necessary breaking changes to the public API to achieve production readiness.
All standalone functions like EmbeddingCollection::new, EmbeddingCollection::save, and EmbeddingCollection::delete have been removed.
All database interactions must now go through an instance of the Valentinus struct. Please update your application to initialize this struct once and share it via an Arc.
The database.rs module no longer contains public constants for keys and views; these are now internal implementation details of the embeddings.rs module.
We believe these changes provide a much safer, faster, and more ergonomic API for building powerful AI applications with Valentinus.
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Release Notes
- first stable release
- bump sysinfo to 35.1
- bump ort to 2.0.0-rc.10
Full Changelog: v0.7.0...v1.0.0
valentinus-v0.7.0
Release Notes
- security patches
- bincode version 2 migration
- use token type ids for
ort::inputs
Full Changelog: v0.6.0...v0.7.0
valentinus-v0.7.0-rc2
valentinus-v0.7.0-rc1
Release Notes
- migrate bincode to version 2
- update
ort::inputsto use token type ids - update
nearest_testfor new embeddings generation - update workflows to use
https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2/tree/main - Valentinus should now be plug and play with any local model once again.
Full Changelog: v0.6.0...v0.7.0-rc1
valentinus-v0.6.0
Release Notes
-
Breaking:
nearest_queryreturns the index of the nearest collection document and associated metadata -
fix a security vulnerability with idna
-
update key view indexers on collection deletion
-
don't use new models, the embeddings are not working see #13
Full Changelog: v0.5.5...v0.6.0
valentinus-v0.5.5
Release Notes
-
update sysinfo to
0.33.0 -
make
fn findpublic -
don't use new models, the embeddings are not working see #13
Full Changelog: v0.5.4...v0.5.5
valentinus-v0.5.4
Release Notes
- update ort to
2.0.0-rc.9 - use thiserror
2.0.3 - update kn0sys-nn
0.8.3 - don't use new models, the embeddings are not working see #13
Full Changelog: v0.5.3...v0.5.4