Skip to main content

MultiVectorRetriever

Struct MultiVectorRetriever 

Source
pub struct MultiVectorRetriever<S: VectorStore> { /* private fields */ }
Expand description

A retriever that maps multiple child vectors back to parent documents.

Each parent document can have multiple sub-documents (e.g., summaries, smaller chunks) stored in the vector store. Retrieval finds relevant sub-documents, then returns the original parent documents.

Implementations§

Source§

impl<S: VectorStore + 'static> MultiVectorRetriever<S>

Source

pub fn new( vectorstore: Arc<S>, embeddings: Arc<dyn Embeddings>, k: usize, ) -> Self

Create a new MultiVectorRetriever.

  • vectorstore: the vector store to search for child documents.
  • embeddings: the embeddings provider for embedding child documents.
  • k: the number of child documents to retrieve for parent lookup.
Source

pub fn with_id_key(self, key: impl Into<String>) -> Self

Set a custom metadata key linking child documents to their parent ID. Defaults to "parent_id".

Source

pub async fn add_documents( &self, parent_docs: Vec<Document>, child_docs: Vec<Document>, ) -> Result<(), SynapticError>

Add parent documents and their associated child documents.

Parents are stored in the internal docstore. Children are embedded and added to the vector store. Each child document must have the id_key metadata field set to the parent document’s ID.

Trait Implementations§

Source§

impl<S: VectorStore + 'static> Retriever for MultiVectorRetriever<S>

Source§

fn retrieve<'life0, 'life1, 'async_trait>( &'life0 self, query: &'life1 str, top_k: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<Document>, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Auto Trait Implementations§

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> 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, 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.