| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| zeusdb-vector-database-0.12.0.cdx.json | 2026-10-02 | 128.1 kB | |
| README.md | 2026-10-02 | 5.4 kB | |
| Version 0.12.0 source code.tar.gz | 2026-10-02 | 1.1 MB | |
| Version 0.12.0 source code.zip | 2026-10-02 | 1.2 MB | |
| Totals: 4 Items | 2.5 MB | 0 | |
Added
-
Every saved directory lists its features.
manifest.jsonnames underfeatureseach part of the directory a release can be built without and marks itcompatibleorincompatible, beingidentityon every save, andint8,journal,pq,sparseandtextwhere the directory holds them.load()reads the list before any artefact. A feature this release does not know is refused by its name, unless the directory marks itcompatible, in which case the directory opens without it, awarnlog record names it, and the next save leaves it out. A known feature listed under another mark is refused, and at format 4.0.0 the features listed must be the ones the directory holds. -
Every saved directory records its identity, and
HNSWIndex.identityreports it.manifest.jsonrecords underidentitythe index's collection id, kept through every save and load, its generation, being the saves the index has committed, a snapshot id drawn at the save, and the snapshot the directory was saved from.index.identityreports the four for the directory the index last saved or read, andclear()keeps them. A journaled directory's identity, its journal record and its journal's header name one collection. A directory that records no identity opens under the id its journal names, or one drawn when it is opened, and its next save records it at generation 1.
Changed
-
mappings.bin,vectors.bin,pq_codes.binandpq_centroids.binare framed. Each is written inside a frame carrying its own header and payload checksums, verified on every load, andmanifest.jsonrecords its length alone.mappings.binholds each record's internal id and id, andvectors.binandpq_codes.binone row per record, in increasing internal id. The codebook is held to the shapequantization.jsondescribes before it is built. -
Two saves of the same records write the same
metadata.jsonandconfig.json.metadata.jsonwrites each record's fields in name order, andconfig.jsonits metadata map in key order. -
A damaged directory from before 4.0.0 whose artefact declares a length its bytes cannot carry raises
ValueError, whatever the length, before anything is sized from it. A declared length small enough to pass the budget the file's size allows raisedRuntimeErroronce decoding reached the end of the file. -
A directory from before 4.0.0 whose artefact continues past its last entry is refused, naming the artefact and the bytes past its end.
-
A
search()hit's metadata keys come back in one order, the same for every hit and every record of an index. -
A
search()page is built in arrays. Every id, string metadata value and field name on a page is held in one text buffer, every field in one list and every returned vector in one list of floats, and each field name becomes a Python string once a page. -
load()reads a raw index'svectors.binfor its record count and its finiteness check without holding it, and into a map only when the graph is rebuilt rather than restored from its dump. A scalar index's rows are held in one block, and the graph dump hands its points to the graph one at a time and counts each inbound edge as it reads it. -
The format version is read only as
MAJOR.MINOR.PATCH, three runs of ASCII digits joined by dots, with no sign, no leading zero on a part of more than one digit, and nothing before or after. Aformat_versionof any other shape is refused as a version this release cannot interpret. -
The README carries two new sections, on a directory's identity and its features, and describes format 4.0.0 in place of the table of earlier versions. The docstrings of
create()andjournal_to()name the features a directory lists.
Fixed
-
add()refuses a record once the index has issued its last internal id, 4,294,967,294, before the record's id is issued or its journal record written, and the record's error names the last id andclear()as what starts the ids again. An overwrite whose batch needs more ids than are left is refused before any record it replaces is removed, and a journal replay is held to the same bound. Every other operation runs at the last id, andclear()starts the ids again from 1. -
load()refuses amappings.binnaming an internal id above theid_counteritsconfig.jsonrecords, before the id store is sized.
Internal
-
The workspace does not depend on bincode. The engine reads the wire format releases before 4.0.0 wrote with a reader of its own.
deny.tomlignores no advisory, RUSTSEC-2025-0141 included, and the dependabot configuration holds no rule for bincode. -
Saving, loading and the journal reach the filesystem through one storage interface in the core crate, being a directory of named artefacts, the place a collection is kept with its staged directory and its journal, and a streamed artefact.
Format
Every directory this release saves declares format version 4.0.0 and lists its features. This release reads 1.x, 2.x, 3.x and 4.x, so a directory an earlier release saved opens here as it opens on 0.11.0, and saving it again writes 4.0.0. 0.5.0 to 0.11.0 refuse a 4.0.0 directory at the version check with a message naming the newer release, and 0.3.0 to 0.4.1, which read no format version, refuse it when they decode its mappings.bin.