What's New
Composable Incremental Index
IncrementalDiskANN now supports filtered search (labels) and quantized search (F16/Int8/PQ), independently or combined on a single index — without code duplication.
New API
build_with_labels()— incremental + filteredbuild_quantized_f16()/build_quantized_int8()/build_quantized_pq()— incremental + quantizedbuild_full()— incremental + filtered + quantized (all three)search_filtered()/search_filtered_with_dists()— label-based filtered search on incremental indexesadd_vectors_with_labels()— add labeled vectors without rebuildingIncrementalQuantizedConfig,QuantizerKind— configuration types
Internal Architecture
GraphIndextrait — internal abstraction for searchable graph indexes, enabling code reuse across all index typesUnifiedViewadapter — presents base + delta layer as a single graph for multi-seed beam search- Multi-seed
beam_search— explores disconnected base/delta subgraphs in a single pass - Extracted free functions —
filtered_search()andquantized_search()shared by all index types
Serialization
- New incremental format with
INCRmagic number and versioning - Full backward compatibility with v0.4 format (auto-detected on load)
- Labels and quantizer state survive
to_bytes()/from_bytes()roundtrips
Bug Fixes
- Tombstone filtering now integrated into beam search filter (not post-hoc), returning correct k results
- Fixed lock ordering in
add_vectors/add_vectors_with_labelsto prevent label/vector misalignment under concurrency stats().total_liveuses saturating subtraction to prevent underflow
No Breaking Changes
All existing public APIs remain unchanged. All 138 tests pass (75 unit + 63 integration).