pub const IVF_PQ_TYPE: u8 = 2;
pub const FLAT_TYPE: u8 = 4;
pub const BINARY_IVF_TYPE: u8 = 6;
#[cfg(feature = "native")]
use crate::structures::{CoarseCentroids, IVFPQConfig, IVFPQIndex, PQCodebook};
#[cfg(feature = "native")]
pub fn new_ivf_pq(
dim: usize,
routing: crate::dsl::IvfRoutingMode,
centroids: &CoarseCentroids,
codebook: &PQCodebook,
) -> IVFPQIndex {
let config = IVFPQConfig::new(dim, codebook.config.num_subspaces).with_routing(routing);
IVFPQIndex::new(config, centroids.version, codebook.version)
}
#[cfg(feature = "native")]
pub fn serialize_ivf_pq(index: IVFPQIndex) -> crate::Result<Vec<u8>> {
index
.to_bytes()
.map_err(|e| crate::Error::Serialization(e.to_string()))
}