pub struct SparseQueryConfig {
pub tokenizer: Option<String>,
pub weighting: QueryWeighting,
pub heap_factor: f32,
pub weight_threshold: f32,
pub max_query_dims: Option<usize>,
pub pruning: Option<f32>,
}Expand description
Query-time configuration for sparse vectors
Research-validated query optimization strategies:
- weight_threshold (0.01-0.05): Drop query dimensions with weight below threshold
- Filters low-IDF tokens that add latency without improving relevance
- max_query_dims (10-20): Process only top-k dimensions by weight
- 30-50% latency reduction with <2% nDCG loss (Qiao et al., 2023)
- heap_factor (0.8): Skip blocks with low max score contribution
- ~20% speedup with minor recall loss (SEISMIC-style)
Fields§
§tokenizer: Option<String>HuggingFace tokenizer path/name for query-time tokenization Example: “Alibaba-NLP/gte-Qwen2-1.5B-instruct”
weighting: QueryWeightingWeighting strategy for tokenized query terms
heap_factor: f32Heap factor for approximate search (SEISMIC-style optimization) A block is skipped if its max possible score < heap_factor * threshold
Research recommendation:
- 1.0 = exact search (default)
- 0.8 = approximate, ~20% faster with minor recall loss (RECOMMENDED for production)
- 0.5 = very approximate, much faster but higher recall loss
weight_threshold: f32Minimum weight for query dimensions (query-time pruning) Dimensions with abs(weight) below this threshold are dropped before search. Useful for filtering low-IDF tokens that add latency without improving relevance.
- 0.0 = no filtering (default)
- 0.01-0.05 = recommended for SPLADE/learned sparse models
max_query_dims: Option<usize>Maximum number of query dimensions to process (query pruning) Processes only the top-k dimensions by weight
Research recommendation (Multiple papers 2022-2024):
- None = process all dimensions (default, exact)
- Some(10-20) = process top 10-20 dimensions only (RECOMMENDED for SPLADE)
- 30-50% latency reduction
- <2% nDCG@10 loss
pruning: Option<f32>Fraction of query dimensions to keep (0.0-1.0), same semantics as
indexing-time pruning: sort by abs(weight) descending,
keep top fraction. None or 1.0 = no pruning.
Trait Implementations§
Source§impl Clone for SparseQueryConfig
impl Clone for SparseQueryConfig
Source§fn clone(&self) -> SparseQueryConfig
fn clone(&self) -> SparseQueryConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SparseQueryConfig
impl Debug for SparseQueryConfig
Source§impl Default for SparseQueryConfig
impl Default for SparseQueryConfig
Source§impl<'de> Deserialize<'de> for SparseQueryConfig
impl<'de> Deserialize<'de> for SparseQueryConfig
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 PartialEq for SparseQueryConfig
impl PartialEq for SparseQueryConfig
Source§impl Serialize for SparseQueryConfig
impl Serialize for SparseQueryConfig
impl StructuralPartialEq for SparseQueryConfig
Auto Trait Implementations§
impl Freeze for SparseQueryConfig
impl RefUnwindSafe for SparseQueryConfig
impl Send for SparseQueryConfig
impl Sync for SparseQueryConfig
impl Unpin for SparseQueryConfig
impl UnwindSafe for SparseQueryConfig
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,
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> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.