pub struct VectorSearchRequest {Show 16 fields
pub index_name: String,
pub query: Vec<f32>,
pub k: u32,
pub ef_search: u32,
pub filter: Option<VectorFilter>,
pub mmr: bool,
pub mmr_lambda: f32,
pub mmr_pool: u32,
pub rerank: Option<RerankSpec>,
pub planner_override: u32,
pub group_field: String,
pub group_size: u32,
pub groups: u32,
pub group_overfetch: u32,
pub group_missing_as_own: bool,
pub query_payload: Option<QueryPayload>,
}Fields§
§index_name: String§query: Vec<f32>Query vector (single-vector indices).
k: u32Number of nearest neighbors to return
ef_search: u32Optional: override ef_search (0 = use default)
filter: Option<VectorFilter>Optional: metadata/attribute pre/post filter (null = no filter)
mmr: bool── MMR diversity reranking (optional, single-vector path only) ──
Maximal-marginal-relevance post-step: over-fetch candidates, then greedily
select k maximizing lambda*sim(q,d) - (1-lambda)*max_{s in selected} sim(d,s).
Additive & wire-compatible: old clients omit these ⇒ MMR off, behavior
unchanged. The returned distance is always the original query distance;
only the selected set and ordering change.
enable MMR post-step
mmr_lambda: f320..1 relevance↔diversity tradeoff; 0 ⇒ default 0.5
mmr_pool: u32over-fetch multiplier; 0 ⇒ default 4 (fetch_k = k*mmr_pool)
rerank: Option<RerankSpec>Optional second-stage rerank (cross-encoder or model-free score-fusion). Absent ⇒ no rerank.
planner_override: u32── Filtered-search planner override (optional) ──
Pin the selectivity-adaptive filtered-search strategy instead of letting
the cardinality planner choose. Only meaningful when filter is set and
the target index is graph-backed (Plain/PQ/SQ HNSW); ignored otherwise.
0 = auto (planner chooses from the estimated selectivity) [default]
1 = brute-force exact scan over the matching ids
2 = filtered-HNSW (traverse-through-non-matching, admit-if-match)
3 = ACORN two-hop neighbor expansion
Additive & wire-compatible: old clients omit it ⇒ 0 ⇒ unchanged behavior.
group_field: String── Result grouping / field-collapse (optional, single-vector path only) ──
Collapse results to at most group_size hits per distinct value of the
payload attribute group_field, returning groups distinct group keys
total (“one best chunk per document”). Pure post-search collapse over the
post-filter candidate pool, structurally identical to the MMR over-fetch /
re-select path. Additive & wire-compatible: old clients omit these ⇒
grouping off ⇒ behavior byte-identical. Grouping and mmr are mutually
exclusive (orthogonal selection rules) and requesting both ⇒ InvalidArgument.
payload field to group by; empty ⇒ grouping off
group_size: u32max hits per group; 0 ⇒ default 1 (one-best-per-group)
groups: u32number of distinct group keys to return; 0 ⇒ fall back to k
group_overfetch: u32over-fetch multiplier; 0 ⇒ default 4, capped at MAX_POOL
group_missing_as_own: boolMissing-field policy. By default (false) candidates that lack group_field
are dropped from grouped results (matches Qdrant/Weaviate). When true, each
missing-field candidate is returned as its own singleton group (group_key
empty), counting against the groups cap. Additive/wire-compatible: old
clients omit it ⇒ false ⇒ drop behavior unchanged from Phase 1.
query_payload: Option<QueryPayload>Query payload selector. query (field 2) carries a single-vector query for
the classic ANN path; multi_vector carries a token matrix for the
late-interaction MaxSim path against a multi-vector index. At most one of
the two should be populated.
Trait Implementations§
Source§impl Clone for VectorSearchRequest
impl Clone for VectorSearchRequest
Source§fn clone(&self) -> VectorSearchRequest
fn clone(&self) -> VectorSearchRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VectorSearchRequest
impl Debug for VectorSearchRequest
Source§impl Default for VectorSearchRequest
impl Default for VectorSearchRequest
Source§impl Message for VectorSearchRequest
impl Message for VectorSearchRequest
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.Source§impl PartialEq for VectorSearchRequest
impl PartialEq for VectorSearchRequest
impl StructuralPartialEq for VectorSearchRequest
Auto Trait Implementations§
impl Freeze for VectorSearchRequest
impl RefUnwindSafe for VectorSearchRequest
impl Send for VectorSearchRequest
impl Sync for VectorSearchRequest
impl Unpin for VectorSearchRequest
impl UnsafeUnpin for VectorSearchRequest
impl UnwindSafe for VectorSearchRequest
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request