#[non_exhaustive]pub enum StorageMode {
Full,
SQ8,
Binary,
ProductQuantization,
RaBitQ,
}Expand description
Storage mode for vectors.
§Capacity mode vs search-path mode
| Mode | Kind | Collection search path |
|---|---|---|
Full | full-precision | f32 (baseline) |
SQ8 | Capacity Mode | full-precision f32 (memory only, no throughput gain) |
Binary | Capacity Mode | full-precision f32 (memory only, no throughput gain) |
ProductQuantization | search-path mode | ADC-rescored (wired) |
RaBitQ | search-path mode | quantized traversal (wired end-to-end) |
Capacity Modes (SQ8, Binary) reduce the in-memory footprint of the
quantization primitives, but the collection search path stays
full-precision f32 for those modes — selecting them does not gain search
throughput. Search-path modes (RaBitQ, ProductQuantization) are the
quantized paths wired into the query hot path. See
docs/guides/QUANTIZATION.md.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Full
Full precision f32 storage (default).
SQ8
Capacity Mode. 8-bit scalar quantization for 4x memory reduction. Reduces the quantization primitive’s footprint only; the collection search path stays full-precision f32 and gains no search throughput.
Binary
Capacity Mode. 1-bit binary quantization for 32x memory reduction.
Best for edge/IoT devices with limited RAM. Reduces footprint only; the
collection search path stays full-precision f32 and gains no search
throughput (use RaBitQ for a quantized search path).
ProductQuantization
Product Quantization (PQ) for aggressive lossy compression (8x-16x typical). Search-path mode: wired into the query hot path for ADC (Asymmetric Distance Computation) rescoring.
RaBitQ
RaBitQ binary quantization for 32x compression with scalar correction.
Search-path mode: the performant quantized search path, wired
end-to-end into the query hot path.
Implementations§
Source§impl StorageMode
impl StorageMode
Sourcepub const fn canonical_name(self) -> &'static str
pub const fn canonical_name(self) -> &'static str
Returns the canonical lowercase name for this storage mode.
This is the single source of truth for string representations,
used by std::fmt::Display, std::str::FromStr, and downstream crates.
Sourcepub fn parse_alias(value: &str) -> Option<Self>
pub fn parse_alias(value: &str) -> Option<Self>
Parses a storage mode string with alias support.
Accepted aliases (case-insensitive):
full,f32->Fullsq8,int8->SQ8binary,bit->Binarypq,product_quantization->ProductQuantizationrabitq->RaBitQ
§Examples
use velesdb_core::StorageMode;
assert_eq!(StorageMode::parse_alias("sq8"), Some(StorageMode::SQ8));
assert_eq!(StorageMode::parse_alias("INT8"), Some(StorageMode::SQ8));
assert_eq!(StorageMode::parse_alias("unknown"), None);Trait Implementations§
Source§impl Clone for StorageMode
impl Clone for StorageMode
Source§fn clone(&self) -> StorageMode
fn clone(&self) -> StorageMode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for StorageMode
Source§impl Debug for StorageMode
impl Debug for StorageMode
Source§impl Default for StorageMode
impl Default for StorageMode
Source§fn default() -> StorageMode
fn default() -> StorageMode
Source§impl<'de> Deserialize<'de> for StorageMode
impl<'de> Deserialize<'de> for StorageMode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for StorageMode
impl Display for StorageMode
impl Eq for StorageMode
Source§impl FromStr for StorageMode
impl FromStr for StorageMode
Source§impl PartialEq for StorageMode
impl PartialEq for StorageMode
Source§impl Serialize for StorageMode
impl Serialize for StorageMode
impl StructuralPartialEq for StorageMode
Auto Trait Implementations§
impl Freeze for StorageMode
impl RefUnwindSafe for StorageMode
impl Send for StorageMode
impl Sync for StorageMode
impl Unpin for StorageMode
impl UnsafeUnpin for StorageMode
impl UnwindSafe for StorageMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);