pub struct SqliteStore {
pool: SqlitePool,
}Expand description
SQLite implementation of the Store trait.
Wraps a [SqlitePool] and translates every Store method into one
or more SQL statements against the existing schema (documents, chunks,
chunks_fts, chunk_vectors, embeddings).
Fields§
§pool: SqlitePoolImplementations§
Trait Implementations§
Source§impl Store for SqliteStore
impl Store for SqliteStore
Source§fn upsert_document<'life0, 'life1, 'async_trait>(
&'life0 self,
doc: &'life1 Document,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upsert_document<'life0, 'life1, 'async_trait>(
&'life0 self,
doc: &'life1 Document,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert or update a document. Read more
Source§fn replace_chunks<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
doc_id: &'life1 str,
chunks: &'life2 [Chunk],
vectors: Option<&'life3 [Vec<f32>]>,
) -> 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 replace_chunks<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
doc_id: &'life1 str,
chunks: &'life2 [Chunk],
vectors: Option<&'life3 [Vec<f32>]>,
) -> 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,
Replace all chunks for a document, optionally storing vectors.
Source§fn upsert_embedding<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
&'life0 self,
chunk_id: &'life1 str,
doc_id: &'life2 str,
vector: &'life3 [f32],
model: &'life4 str,
dims: usize,
content_hash: &'life5 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,
'life4: 'async_trait,
'life5: 'async_trait,
fn upsert_embedding<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
&'life0 self,
chunk_id: &'life1 str,
doc_id: &'life2 str,
vector: &'life3 [f32],
model: &'life4 str,
dims: usize,
content_hash: &'life5 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,
'life4: 'async_trait,
'life5: 'async_trait,
Store or update an embedding vector for a chunk.
Source§fn get_document<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<DocumentResponse>>> + 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<DocumentResponse>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieve a full document with all its chunks, by ID.
Source§fn get_document_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<DocumentMetadata>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_document_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<DocumentMetadata>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieve lightweight metadata for a document, by ID.
Source§fn keyword_search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: i64,
_source: Option<&'life2 str>,
_since: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChunkCandidate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn keyword_search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query: &'life1 str,
limit: i64,
_source: Option<&'life2 str>,
_since: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChunkCandidate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Perform keyword (full-text) search, returning candidate chunks.
Source§fn vector_search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query_vec: &'life1 [f32],
limit: i64,
_source: Option<&'life2 str>,
_since: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChunkCandidate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn vector_search<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
query_vec: &'life1 [f32],
limit: i64,
_source: Option<&'life2 str>,
_since: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChunkCandidate>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Perform vector similarity search, returning candidate chunks.
Auto Trait Implementations§
impl Freeze for SqliteStore
impl !RefUnwindSafe for SqliteStore
impl Send for SqliteStore
impl Sync for SqliteStore
impl Unpin for SqliteStore
impl !UnwindSafe for SqliteStore
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more