Skip to content

Releases: kn0sys/valentinus

valentinus-v1.1.2

08 Sep 11:45

Choose a tag to compare

Release notes

  • Patch the multidimensional metadata filter for in operations. 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

11 Aug 03:14
76f951f

Choose a tag to compare

Release Notes

  • bump sysinfo
  • update documentation

Full Changelog: v1.1.0...v1.1.1

valentinus-v1.1.0

29 Jul 06:27
6d2b8de

Choose a tag to compare

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

29 Jun 12:26
b256a56

Choose a tag to compare

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

19 Mar 16:55
ed1f474

Choose a tag to compare

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

18 Mar 17:31
9e00164

Choose a tag to compare

Release Notes

  • patch RUSTSEC-2025-0009

Full Changelog: v0.7.0-rc1...v0.7.0-rc2

valentinus-v0.7.0-rc1

17 Mar 01:45
dde4768

Choose a tag to compare

Release Notes

  • migrate bincode to version 2
  • update ort::inputs to use token type ids
  • update nearest_test for 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

13 Dec 14:48
2d632c1

Choose a tag to compare

Release Notes

  • Breaking: nearest_query returns 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

06 Dec 11:46
bf4a3a2

Choose a tag to compare

Release Notes

  • update sysinfo to 0.33.0

  • make fn find public

  • don't use new models, the embeddings are not working see #13

Full Changelog: v0.5.4...v0.5.5

valentinus-v0.5.4

22 Nov 04:02
1309516

Choose a tag to compare

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