pub mod brute_force;
pub mod index;
pub mod io;
pub mod ivf;
pub mod mstg;
#[cfg(feature = "python")]
pub mod python_bindings;
mod fastscan; mod fastscan_kernel; mod kmeans;
pub mod math;
mod memory;
pub mod quantizer;
pub mod rotation;
pub mod simd;
pub use brute_force::{BruteForceRabitqIndex, BruteForceSearchParams, BruteForceSearchResult};
pub use index::RabitqIndex;
pub use ivf::{IvfRabitqIndex, SearchParams, SearchResult};
pub use quantizer::{QuantizedVector, RabitqConfig};
pub use rotation::RotatorType;
pub use roaring::RoaringBitmap;
#[cfg(test)]
mod tests;
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Metric {
L2,
InnerProduct,
}
#[derive(thiserror::Error, Debug)]
pub enum RabitqError {
#[error("dimension mismatch: expected {expected}, got {got}")]
DimensionMismatch { expected: usize, got: usize },
#[error("invalid configuration: {0}")]
InvalidConfig(&'static str),
#[error("index is empty; call `train` first")]
EmptyIndex,
#[error("i/o error while reading or writing an index: {0}")]
Io(#[from] std::io::Error),
#[error("invalid persisted index: {0}")]
InvalidPersistence(&'static str),
}