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<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn delete_collection<'life0, 'life1, 'async_trait>(
        &'life0 self,
        name: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn upsert<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        collection: &'life1 str,
        chunks: &'life2 [Chunk],
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: '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<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: '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>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
}
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<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: '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<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: '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<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: '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<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: '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>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

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

Returns results ordered by descending similarity score.

Implementors§