Skip to main content

VectorStore

Trait VectorStore 

Source
pub trait VectorStore: Send + Sync {
    // Required methods
    fn add_documents<'life0, 'async_trait>(
        &'life0 self,
        documents: Vec<Document>,
        embeddings: Vec<Vec<f32>>,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn similarity_search<'life0, 'life1, 'async_trait>(
        &'life0 self,
        query_embedding: &'life1 [f32],
        k: usize,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn get_document<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Document>, VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn get_embedding<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<f32>>, VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn delete_document<'life0, 'life1, 'async_trait>(
        &'life0 self,
        id: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<(), VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn count<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn clear<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<(), VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;

    // Provided methods
    fn embed_query(&self) -> Option<&dyn Embeddings> { ... }
    fn similarity_search_text<'life0, 'life1, 'async_trait>(
        &'life0 self,
        query: &'life1 str,
        k: usize,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn similarity_search_with_min_score<'life0, 'life1, 'async_trait>(
        &'life0 self,
        query_embedding: &'life1 [f32],
        k: usize,
        min_score: Option<f32>,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, VectorStoreError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
}
Expand description

Vector store trait.

Required Methods§

Source

fn add_documents<'life0, 'async_trait>( &'life0 self, documents: Vec<Document>, embeddings: Vec<Vec<f32>>, ) -> Pin<Box<dyn Future<Output = Result<Vec<String>, VectorStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Adds documents.

§Arguments
  • documents - Document list.
  • embeddings - Embedding vectors for documents.
§Returns

Document ID list.

Searches similar documents.

§Arguments
  • query_embedding - Query vector.
  • k - Number of documents to return.
§Returns

Similar document list (sorted by similarity descending).

Source

fn get_document<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Option<Document>, VectorStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets document by ID.

Source

fn get_embedding<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<f32>>, VectorStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets document embedding by ID.

Source

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

Deletes document.

Source

fn count<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = usize> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns document count.

Source

fn clear<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), VectorStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Clears store.

Provided Methods§

Source

fn embed_query(&self) -> Option<&dyn Embeddings>

返回该向量存储自带的文本嵌入器(若有)。

Q1: 此前 trait 只接收 query_embedding: &[f32],调用方必须自己嵌入查询 文本,却没有契约告诉它“该用哪个嵌入器“。有了该 getter,内嵌嵌入器的实现 可以直接用 similarity_search_text 传文本; 没有的返回 None,调用方会收到显式错误而不是静默地用错模型。

Source

fn similarity_search_text<'life0, 'life1, 'async_trait>( &'life0 self, query: &'life1 str, k: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, VectorStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

文本相似度检索:用 embed_query 返回的嵌入器把 query 向量化后再检索。

未配置嵌入器时返回 VectorStoreError::EmbeddingError,提示改用 similarity_search 直接传入查询向量。

Source

fn similarity_search_with_min_score<'life0, 'life1, 'async_trait>( &'life0 self, query_embedding: &'life1 [f32], k: usize, min_score: Option<f32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<SearchResult>, VectorStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

带最低分数阈值的相似度检索。

  • min_score: None —— 不过滤,返回全库 top-k(即使分数为负)。
  • min_score: Some(t) —— 只返回 score >= t 的结果,最多 k 条。

Q2: 默认实现基于 similarity_search 的结果做二次过滤 (对检索期无法直接按阈值过滤的后端是最佳近似)。本地计算相似度的实现应覆盖此 方法,以获得“先过滤再取 top-k“的精确语义。

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§