Skip to main content

MultiHop

Struct MultiHop 

Source
pub struct MultiHop<DP, T, S>
where DP: DataProvider,
{ /* private fields */ }
Expand description

A built-in helper for benchmarking filtered K-nearest neighbors search using the multi-hop search method.

This is intended to be used in conjunction with search::search or search::search_all and provides some basic additional metrics for the latter. Result aggregation for search::search_all is provided by the search::graph::knn::Aggregator type (same aggregator as search::graph::knn::KNN).

The provided implementation of Search accepts graph::search::Knn and returns search::graph::knn::Metrics as additional output.

Implementations§

Source§

impl<DP, T, S> MultiHop<DP, T, S>
where DP: DataProvider,

Source

pub fn new( index: Arc<DiskANNIndex<DP>>, queries: Arc<Matrix<T>>, strategy: Strategy<S>, labels: Arc<[Arc<dyn QueryLabelProvider<DP::InternalId>>]>, ) -> Result<Arc<Self>>

Construct a new MultiHop searcher.

If strategy is one of the container variants of Strategy, its length must match the number of rows in queries. If this is the case, then the strategies will have a querywise correspondence (see search::SearchResults) with the query matrix.

Additionally, the length of labels must match the number of rows in queries and will be used in querywise correspondence with queries.

§Errors

Returns an error under the following conditions.

  1. The number of elements in strategy is not compatible with the number of rows in queries.

  2. The number of label providers in labels is not equal to the number of rows in queries.

Trait Implementations§

Source§

impl<DP, T: Debug, S: Debug> Debug for MultiHop<DP, T, S>
where DP: DataProvider + Debug, DP::InternalId: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<DP, T, S> Search for MultiHop<DP, T, S>
where DP: DataProvider<Context: Default, ExternalId: Id>, S: for<'a> DefaultSearchStrategy<DP, &'a [T], DP::ExternalId> + Clone + AsyncFriendly, T: AsyncFriendly + Clone,

Source§

type Id = <DP as DataProvider>::ExternalId

The identifier for the type returned by search. These are canonically the unique IDs associated with indexed vectors.
Source§

type Parameters = Knn

Custom input search parameters.
Source§

type Output = Metrics

Custom output parameters. This augments the standard metrics collected by search and allows implementation-specific data to be returned.
Source§

fn num_queries(&self) -> usize

The number of queries that can be searched. The machinery in search and search_all will invoke Search::search for each index in 0..N where N is the returned value of this method.
Source§

fn id_count(&self, parameters: &Self::Parameters) -> IdCount

Provide a hint for the number of IDs returned for each query. This is used to optimize internal buffer allocations.
Source§

async fn search<O>( &self, parameters: &Self::Parameters, buffer: &mut O, index: usize, ) -> ANNResult<Self::Output>

Perform a search for the query identified by index using parameters. The results must be written into buffer. Customized output is returned.

Auto Trait Implementations§

§

impl<DP, T, S> Freeze for MultiHop<DP, T, S>
where S: Freeze,

§

impl<DP, T, S> !RefUnwindSafe for MultiHop<DP, T, S>

§

impl<DP, T, S> Send for MultiHop<DP, T, S>
where S: Send, T: Sync + Send,

§

impl<DP, T, S> Sync for MultiHop<DP, T, S>
where S: Sync, T: Sync + Send,

§

impl<DP, T, S> Unpin for MultiHop<DP, T, S>
where S: Unpin,

§

impl<DP, T, S> UnsafeUnpin for MultiHop<DP, T, S>
where S: UnsafeUnpin,

§

impl<DP, T, S> !UnwindSafe for MultiHop<DP, T, S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> DispatchRule<T> for T

Source§

type Error = Infallible

Errors that can occur during convert.
Source§

fn try_match(_from: &T) -> Result<MatchScore, FailureScore>

Attempt to match the value From to the type represented by Self. Read more
Source§

fn convert(from: T) -> Result<T, <T as DispatchRule<T>>::Error>

Perform the actual conversion. Read more
Source§

fn description(f: &mut Formatter<'_>, from: Option<&T>) -> Result<(), Error>

Write a description of the dispatch rule and outcome to the formatter. Read more
Source§

fn try_match_verbose<'a>( from: &'a From, ) -> Result<MatchScore, TaggedFailureScore<'a>>
where Self: 'a,

The equivalent of try_match but returns a reason for a failed score. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> AsyncFriendly for T
where T: Send + Sync + 'static,