Expand description
Thread-safe concurrent HNSW index.
Wraps TemporalHnsw with a [parking_lot::RwLock] for concurrent access:
- Multiple readers can search simultaneously (read lock)
- A single writer can insert (write lock)
This is the main entry point for production use.
§Example
use cvx_index::hnsw::{ConcurrentTemporalHnsw, HnswConfig};
use cvx_index::metrics::L2Distance;
use cvx_core::TemporalFilter;
use std::sync::Arc;
let config = HnswConfig::default();
let index = Arc::new(ConcurrentTemporalHnsw::new(config, L2Distance));
// Insert (takes write lock)
index.insert(1, 1000, &[1.0, 0.0, 0.0]);
// Search (takes read lock) — can run from multiple threads
let results = index.search(&[1.0, 0.0, 0.0], 5, TemporalFilter::All, 1.0, 1000);
assert_eq!(results.len(), 1);Structs§
- Concurrent
Temporal Hnsw - Thread-safe spatiotemporal HNSW index with insert queue (RFC-002-04).
- Pending
Insert 🔒 - A pending insert waiting in the queue.