pub mod fresh_graph;
pub mod sst;
pub mod multi_level;
pub mod compaction;
pub mod index;
pub use fresh_graph::{FreshVamanaGraph, FreshGraphConfig, VectorNode};
pub use sst::{VamanaSSTFile, SSTMetadata};
pub use multi_level::MultiLevelSearch;
pub use compaction::{CompactionStrategy, CompactionTrigger};
pub use index::{FreshDiskANNIndex, FreshDiskANNConfig};
#[derive(Debug, Clone)]
pub struct Candidate {
pub id: u64,
pub distance: f32,
}
impl Candidate {
pub fn new(id: u64, distance: f32) -> Self {
Self { id, distance }
}
}
impl PartialEq for Candidate {
fn eq(&self, other: &Self) -> bool {
self.distance == other.distance
}
}
impl Eq for Candidate {}
impl PartialOrd for Candidate {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
self.distance.partial_cmp(&other.distance)
}
}
impl Ord for Candidate {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
self.partial_cmp(other).unwrap_or(std::cmp::Ordering::Equal)
}
}