Struct Knn

Source
pub struct Knn { /* private fields */ }
Expand description

Performs a k-nearest neighbor (kNN) search and returns the matching documents.

The kNN search API performs a k-nearest neighbor (kNN) search on a dense_vector field. Given a query vector, it finds the k closest vectors and returns those documents as search hits.

Elasticsearch uses the HNSW algorithm to support efficient kNN search. Like most kNN algorithms, HNSW is an approximate method that sacrifices result accuracy for improved search speed. This means the results returned are not always the true k closest neighbors.

The kNN search API supports restricting the search using a filter. The search will return the top k documents that also match the filter query.

To create a knn search with a query vector or query vector builder:

Search::new()
    .knn(Knn::query_vector("test1", vec![1.0, 2.0, 3.0]))
    .knn(Knn::query_vector_builder("test3", TextEmbedding::new("my-text-embedding-model", "The opposite of pink")));

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-knn-query.html

Implementations§

Source§

impl Knn

Source

pub fn query_vector<T>(field: T, query_vector: Vec<f32>) -> Self
where T: ToString,

Creates an instance of Knn search with query vector

  • field - The name of the vector field to search against. Must be a dense_vector field with indexing enabled.
  • query_vector - Query vector. Must have the same number of dimensions as the vector field you are searching against.
Source

pub fn query_vector_builder<T, U>(field: T, query_vector_builder: U) -> Self

Creates an instance of Knn search with query vector builder

  • field - The name of the vector field to search against. Must be a dense_vector field with indexing enabled.
  • query_vector_builder - A configuration object indicating how to build a query_vector before executing the request.
Source

pub fn k(self, k: u32) -> Self

Number of nearest neighbors to return as top hits. This value must be less than num_candidates.

Defaults to size.

Source

pub fn num_candidates(self, num_candidates: u32) -> Self

The number of nearest neighbor candidates to consider per shard. Cannot exceed 10,000. Elasticsearch collects num_candidates results from each shard, then merges them to find the top results. Increasing num_candidates tends to improve the accuracy of the final results. Defaults to Math.min(1.5 * size, 10_000).

Source

pub fn filter<T>(self, filter: T) -> Self
where T: Into<Query>,

Query to filter the documents that can match. The kNN search will return the top documents that also match this filter. The value can be a single query or a list of queries. If filter is not provided, all documents are allowed to match.

The filter is a pre-filter, meaning that it is applied during the approximate kNN search to ensure that num_candidates matching documents are returned.

Source

pub fn similarity(self, similarity: f32) -> Self

The minimum similarity required for a document to be considered a match. The similarity value calculated relates to the raw similarity used. Not the document score. The matched documents are then scored according to similarity and the provided boost is applied.

Source

pub fn boost<T>(self, boost: T) -> Self
where T: AsPrimitive<f32>,

Floating point number used to decrease or increase the relevance scores of a query. Defaults to 1.0.

You can use the boost parameter to adjust relevance scores for searches containing two or more queries.

Boost values are relative to the default value of 1.0. A boost value between 0 and 1.0 decreases the relevance score. A value greater than 1.0 increases the relevance score.

Source

pub fn name<S>(self, name: S) -> Self
where S: ToString,

You can use named queries to track which queries matched returned documents. If named queries are used, the response includes a matched_queries property for each hit.

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html#named-queries

Trait Implementations§

Source§

impl Clone for Knn

Source§

fn clone(&self) -> Knn

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Knn

Source§

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

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

impl PartialEq for Knn

Source§

fn eq(&self, other: &Knn) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Knn

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Knn

Auto Trait Implementations§

§

impl Freeze for Knn

§

impl RefUnwindSafe for Knn

§

impl Send for Knn

§

impl Sync for Knn

§

impl Unpin for Knn

§

impl UnwindSafe for Knn

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.