1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! Cascade Index: Fast vector index with O(N) build time
//!
//! Cascade Index combines Locality-Sensitive Hashing (LSH) with adaptive buckets
//! and a sparse graph to achieve O(N) build time while maintaining high recall.
//!
//! # Two Implementations
//!
//! ## MmapCascadeIndex (Recommended)
//!
//! Optimized implementation following SynaDB physics principles:
//! - **Arrow of Time**: Append-only writes (vectors, edges, buckets)
//! - **The Observer**: Zero-copy mmap reads
//! - Faster search, better memory efficiency
//!
//! ```rust,ignore
//! use synadb::cascade::{MmapCascadeIndex, MmapCascadeConfig};
//!
//! let config = MmapCascadeConfig::default();
//! let mut index = MmapCascadeIndex::new("vectors", config)?;
//!
//! index.insert("doc1", &embedding)?;
//! let results = index.search(&query, 10)?;
//! ```
//!
//! ## CascadeIndex (Original)
//!
//! Original implementation with bucket tree splits:
//! - Higher recall (100% vs 85-90%)
//! - More complex code
//!
//! ```rust,ignore
//! use synadb::cascade::{CascadeIndex, CascadeConfig};
//!
//! let config = CascadeConfig::default();
//! let mut index = CascadeIndex::new("vectors.cascade", config)?;
//!
//! index.insert("doc1", &embedding)?;
//! let results = index.search(&query, 10)?;
//! ```
//!
//! # Benchmark Comparison
//!
//! | Implementation | Write/sec | Search p50 | Recall |
//! |----------------|-----------|------------|--------|
//! | MmapCascadeIndex | 7,886 | 0.45ms | 90% |
//! | CascadeIndex | 9,619 | 1.10ms | 100% |
// Original implementation
// New mmap-based implementation (SynaDB physics principles)
// Original exports
pub use ;
pub use CascadeConfig;
pub use ;
pub use ;
pub use HyperplaneLSH;
// New mmap-based exports (recommended)
pub use ;
pub use ;
pub use ;
pub use ;