weavatrix-search-vector 0.3.1

Persistent, mutable, bounded vector candidate search for Rust and Weavatrix
Documentation
use crate::error::SearchError;
use crate::hit::SearchHit;
use crate::hnsw::VectorIndex;
use crate::metadata::{MetadataFilter, MetadataIndex};
use crate::storage::MappedVectorIndex;

impl MetadataIndex {
    /// Searches an owned index and guarantees enough filtered hits through the
    /// index's exact fallback.
    ///
    /// # Errors
    ///
    /// Returns a typed query or allocation error.
    pub fn search(
        &self,
        index: &VectorIndex,
        query: &[f32],
        count: usize,
        filter: &MetadataFilter,
    ) -> Result<Vec<SearchHit>, SearchError> {
        index.search_filtered(query, count, |key| self.matches(key, filter))
    }

    /// Searches a memory-mapped index with the same filter semantics.
    ///
    /// # Errors
    ///
    /// Returns a typed query or allocation error.
    pub fn search_mapped(
        &self,
        index: &MappedVectorIndex,
        query: &[f32],
        count: usize,
        filter: &MetadataFilter,
    ) -> Result<Vec<SearchHit>, SearchError> {
        index.search_filtered(query, count, |key| self.matches(key, filter))
    }
}