weavatrix-search-vector 0.3.1

Persistent, mutable, bounded vector candidate search for Rust and Weavatrix
Documentation
use super::MappedVectorIndex;
use crate::error::SearchError;
use crate::hit::SearchHit;
use crate::hnsw::SearchPolicy;
use crate::parallel;

impl MappedVectorIndex {
    /// Searches mapped queries using bounded standard-library workers.
    ///
    /// # Errors
    ///
    /// Returns the first query error in input order or a worker-panic error.
    pub fn search_batch(
        &self,
        queries: &[&[f32]],
        count: usize,
    ) -> Result<Vec<Vec<SearchHit>>, SearchError> {
        self.search_batch_with_policy(
            queries,
            count,
            SearchPolicy::new(self.header.config.expansion_query),
        )
    }

    /// Searches mapped queries with a shared per-query recall policy.
    ///
    /// # Errors
    ///
    /// Returns the first query error in input order or a worker-panic error.
    pub fn search_batch_with_policy(
        &self,
        queries: &[&[f32]],
        count: usize,
        policy: SearchPolicy,
    ) -> Result<Vec<Vec<SearchHit>>, SearchError> {
        let policy = policy.validate()?;
        parallel::search_batch(queries, self.header.config.query_threads, |query| {
            self.search_with_policy(query, count, policy)
        })
    }
}