Skip to main content

VectorStore

Trait VectorStore 

Source
pub trait VectorStore: Send + Sync {
    // Required methods
    fn create_collection<'life0, 'life1, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
        dimensions: usize,
    ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn delete_collection<'life0, 'life1, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
    fn upsert<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        collection: &'life1 str,
        chunks: &'life2 [Chunk],
    ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             Self: 'async_trait;
    fn delete<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 self,
        collection: &'life1 str,
        ids: &'life2 [&'life3 str],
    ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             Self: 'async_trait;
    fn search<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        collection: &'life1 str,
        embedding: &'life2 [f32],
        top_k: usize,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, RagError>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             Self: 'async_trait;
}
Available on crate feature rag only.
Expand description

A storage backend for vector embeddings with similarity search.

Implementations manage named collections of Chunks and support upserting, deleting, and searching by vector similarity.

§Example

use adk_rag::{VectorStore, InMemoryVectorStore};

let store = InMemoryVectorStore::new();
store.create_collection("docs", 384).await?;
store.upsert("docs", &chunks).await?;
let results = store.search("docs", &query_embedding, 5).await?;

Required Methods§

Source

fn create_collection<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, dimensions: usize, ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Create a named collection. No-op if it already exists.

Source

fn delete_collection<'life0, 'life1, 'async_trait>( &'life0 self, name: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Delete a named collection and all its data.

Source

fn upsert<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, collection: &'life1 str, chunks: &'life2 [Chunk], ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,

Upsert chunks into a collection. Chunks must have embeddings set.

Source

fn delete<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, collection: &'life1 str, ids: &'life2 [&'life3 str], ) -> Pin<Box<dyn Future<Output = Result<(), RagError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, Self: 'async_trait,

Delete chunks by their IDs from a collection.

Source

fn search<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, collection: &'life1 str, embedding: &'life2 [f32], top_k: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, RagError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,

Search for the top_k most similar chunks to the given embedding.

Returns results ordered by descending similarity score.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§