Module concurrent

Source
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§

ConcurrentTemporalHnsw
Thread-safe spatiotemporal HNSW index with insert queue (RFC-002-04).
PendingInsert 🔒
A pending insert waiting in the queue.