mod bm25;
#[cfg(test)]
mod bm25_tests;
pub mod hnsw;
mod posting_list;
#[cfg(test)]
mod posting_list_tests;
pub mod secondary;
pub mod sparse;
pub mod trigram;
pub use bm25::{Bm25Index, Bm25Params};
pub use hnsw::{HnswIndex, HnswParams, SearchQuality};
pub use secondary::{JsonValue, SecondaryIndex};
pub use sparse::{SparseInvertedIndex, SparseVector};
pub use trigram::{extract_trigrams, TrigramIndex};
use crate::distance::DistanceMetric;
use crate::scored_result::ScoredResult;
pub trait VectorIndex: Send + Sync {
fn insert(&self, id: u64, vector: &[f32]);
fn search(&self, query: &[f32], k: usize) -> Vec<ScoredResult>;
fn remove(&self, id: u64) -> bool;
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn dimension(&self) -> usize;
fn metric(&self) -> DistanceMetric;
}