1pub const PROPORTION_HORIZONTAL_DIM: f32 = 0.75;
4pub const D_THRESHOLD_FOR_DCT_ROTATION: usize = 512;
5pub const H_DIM_SIZE: usize = 64;
6pub const MIN_PARTIAL_D: u32 = 16;
7
8pub const DIMENSION_THRESHOLD_FOR_PRUNING: usize = 128;
9pub const N_CLUSTERS_THRESHOLD_FOR_PRUNING: usize = 256;
10
11#[cfg(target_os = "macos")]
12pub const X_BATCH_SIZE: usize = 40960;
13#[cfg(target_os = "macos")]
14pub const Y_BATCH_SIZE: usize = 2048;
15#[cfg(target_os = "macos")]
16pub const MINI_BATCH_SIZE: usize = 256;
17
18#[cfg(not(target_os = "macos"))]
19pub const X_BATCH_SIZE: usize = 4096;
20#[cfg(not(target_os = "macos"))]
21pub const Y_BATCH_SIZE: usize = 1024;
22
23pub const VECTOR_CHUNK_SIZE: usize = Y_BATCH_SIZE;
24
25pub const RECALL_CONVERGENCE_PATIENCE: usize = 2;
26pub const CENTROID_PERTURBATION_EPS: f32 = 1.0 / 1024.0;
27pub const PRUNER_INITIAL_THRESHOLD: f32 = 1.5;
28pub const HIERARCHICAL_PRUNER_INITIAL_THRESHOLD: f32 = 1.1;
29
30#[derive(Copy, Clone, Debug, PartialEq, Eq)]
31pub enum DistanceFunction {
32 L2,
33}
34
35#[derive(Copy, Clone, Debug)]
36pub struct KnnCandidate {
37 pub index: u32,
38 pub distance: f32,
39}
40
41impl KnnCandidate {
42 pub const fn new(index: u32, distance: f32) -> Self {
43 Self { index, distance }
44 }
45}