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
impl SqliteVectorStore
Sourcepub fn new(config: SqliteVectorStoreConfig) -> Result<Self, SynapticError>
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.
Sourcepub async fn hybrid_search(
&self,
query: &str,
k: usize,
embeddings: &dyn Embeddings,
alpha: f32,
) -> Result<Vec<(Document, f32)>, SynapticError>
pub async fn hybrid_search( &self, query: &str, k: usize, embeddings: &dyn Embeddings, alpha: f32, ) -> Result<Vec<(Document, f32)>, SynapticError>
Hybrid search combining cosine similarity and BM25 full-text scoring.
alpha controls the balance:
1.0= pure vector similarity0.0= pure BM25 text relevance0.5= balanced (typical default)
The final score is alpha * cosine + (1 - alpha) * normalized_bm25.
Trait Implementations§
Source§impl VectorStore for SqliteVectorStore
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,
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.
Source§fn similarity_search<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 str,
k: usize,
embeddings: &'life2 dyn Embeddings,
) -> Pin<Box<dyn Future<Output = Result<Vec<Document>, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn similarity_search<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 str,
k: usize,
embeddings: &'life2 dyn Embeddings,
) -> Pin<Box<dyn Future<Output = Result<Vec<Document>, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
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,
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,
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.
Auto Trait Implementations§
impl Freeze for SqliteVectorStore
impl RefUnwindSafe for SqliteVectorStore
impl Send for SqliteVectorStore
impl Sync for SqliteVectorStore
impl Unpin for SqliteVectorStore
impl UnsafeUnpin for SqliteVectorStore
impl UnwindSafe for SqliteVectorStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more