Skip to main content

SqliteVectorStore

Struct SqliteVectorStore 

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

SQLite-backed implementation of the VectorStore trait.

Stores document embeddings as BLOBs (little-endian f32 sequences) and computes cosine similarity in Rust. An FTS5 virtual table provides full-text search for hybrid_search.

Implementations§

Source§

impl SqliteVectorStore

Source

pub fn new(config: SqliteVectorStoreConfig) -> Result<Self, SynapticError>

Create a new SqliteVectorStore from the given configuration.

Opens (or creates) the SQLite database and initializes the vectors and FTS5 tables if they do not already exist.

Hybrid search combining cosine similarity and BM25 full-text scoring.

alpha controls the balance:

  • 1.0 = pure vector similarity
  • 0.0 = pure BM25 text relevance
  • 0.5 = balanced (typical default)

The final score is alpha * cosine + (1 - alpha) * normalized_bm25.

Trait Implementations§

Source§

impl VectorStore for SqliteVectorStore

Source§

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

Add documents to the store, computing their embeddings.
Search for similar documents by query string.
Source§

fn similarity_search_with_score<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, query: &'life1 str, k: usize, embeddings: &'life2 dyn Embeddings, ) -> Pin<Box<dyn Future<Output = Result<Vec<(Document, f32)>, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Search with similarity scores (higher = more similar).
Source§

fn similarity_search_by_vector<'life0, 'life1, 'async_trait>( &'life0 self, embedding: &'life1 [f32], k: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<Document>, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Search by pre-computed embedding vector instead of text query.
Source§

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

Delete documents by ID.

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more