CI / test (push) Failing after 3s
Add a default-off `parallel` feature to clawhdf5-ann (rayon optional dep), matching the convention already used in clawhdf5-format/clawhdf5-agent. Gate prune_connections' per-neighbor distance computation on it — a pure read-only map with no shared mutable state, sorted immediately after, so swapping to rayon's par_iter is low-risk. Deliberately not touching build_with_metric's outer insert loop per the original plan: it has genuine cross-iteration data dependencies (graph mutation, entry-point updates) and needs its own correctness-focused design pass. The win here is likely small since neighbor lists are bounded by m/m_max0 (typically small) — this is a low-risk completeness item, not a headline perf change. Verified identical results with default features and --features parallel across the full HNSW test suite (23/23 both ways), including the build+search end-to-end tests (build_small_index, search_accuracy_cosine, incremental_insert_matches_batch_recall).
clawhdf5-ann
HNSW approximate nearest neighbor index stored as HDF5.
Features
- Build and query HNSW indexes persisted in HDF5 format
- Pure Rust, no C dependencies
- Efficient similarity search for high-dimensional vectors
Usage
use clawhdf5_ann::HnswIndex;
let index = HnswIndex::from_hdf5("vectors.h5").unwrap();
let neighbors = index.search(&query, 10);
License
MIT