| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| zeusdb-vector-database-0.11.0.cdx.json | 2026-09-08 | 132.3 kB | |
| README.md | 2026-09-08 | 4.5 kB | |
| Version 0.11.0 source code.tar.gz | 2026-09-08 | 1.1 MB | |
| Version 0.11.0 source code.zip | 2026-09-08 | 1.1 MB | |
| Totals: 4 Items | 2.3 MB | 0 | |
Added
-
A write-ahead journal, opt-in.
index.journal_to(path)opens a journal beside the saved directory and records every mutation to it, so a process that stops without saving loses nothing a call had returned from.load(path)replays it.checkpoint()issave()into the journal's own directory and empties the journal,journal_pathnames the file, and fivejournal_keys report the policy, the checkpoint's sequence, the records a replay would apply and the file's length. -
Three durability policies.
"call", the default, flushes before the call returns."interval"flushes from a thread of the index's own withininterval_ms, 10 by default."none"flushes at the next checkpoint. A process that stops loses nothing under any of them.load()takesdurability,interval_msandcheckpoint_only. -
Scalar quantization.
quantization_config={"type": "int8"}holds every value as one signed byte, on all four distance metrics, where product quantization refuses two of them. One scale per dimension is fitted at training. A trained directory writesint8_scales.zdbint8andint8_rows.zdbint8.get_stats()gainsquantization_scale,scale_memory_mbandquantization_saturated_values. -
reserved_memory_mb, the part oftotal_memory_mbno record has been written into, which is exactly whatshrink_to_fit()returns. -
rerank_requested_fetch,rerank_fetch_ceilingandrerank_fetch_capped, which report what the calibration asked for, the bound it is held under, and whether the bound shortened the fetch.
Changed
-
Every memory key prices the capacity its structure asked the allocator for, so
total_memory_mbis the request rather than a sum of a capacity and a payload.raw_vectors_memory_mbrises on an index whose store carries slack; the vectors themselves areraw_vectors_stored * dimension * 4. -
The default rerank fetch is held under a ceiling, being a tenth of the live records between a floor of 1,500 candidates and an absolute 25,000. An explicit
rerankfactor is not held under it. -
A record's metadata is held by internal id in one block per record. A record without metadata costs 16 bytes where it cost 101, and a record with two small fields costs 99 where it cost 357.
-
Every external id is held once, in an id store indexed both ways, at 20 bytes a record where the two maps and their copies cost 96.
-
The graph holds targets alone and an upper list is one word. The graph reports 186 bytes a record at 100,000 records and
m16 where 0.10.0 reports 428, and a dump's bytes are unchanged. -
The refusal
dotandl1raise undertype="pq"names product quantization, and offerstype="int8", which takes all four metrics. The message readspace='dot' cannot be quantizedand readsspace='dot' cannot be product quantized. -
get_performance_info()reportssearch_speedup_expectedandsearch_bottleneckas what the index does behind its reader-writer lock, under the keys it had. -
benchmark_concurrent_reads()builds a pool ofmax_threadsthreads and runs the parallel pass on it, sothreads_usednames the pool the speedup was measured over. -
The README carries the two new sections, every
get_stats()key, the format versions, and the level each operation record is written at.
Fixed
-
A text query counts its terms under the guards its search holds, so a
clear()and an insert between the count and the search can no longer reissue those term ids to other terms. -
A
clear()on a trainedquantized_with_rawindex reserved its replacement store fromexpected_sizewithout a byte budget, so a large declaration at a wide dimension could ask for more memory than the process could serve. The reservation now goes through the same budget the graph's arenas take. -
The training buffer releases its capacity once the codebook is fitted.
-
load()recovers an index a killed save left at.zdbold, where only the next save did before. -
A
mappings.binwhose two maps disagree is refused, where it used to load withlen()andsearch()answering from different sets.
Format
A directory declares 1.1.0 as before, or 1.2.0 with scalar quantization, 2.0.0 with a sparse space, 2.1.0 with both, 3.0.0 with a journal and 3.1.0 with a journal and scalar quantization. This release reads majors 1, 2 and 3. An older release refuses a scalar or journaled directory rather than opening it wrongly.