pub struct Collection { /* private fields */ }Expand description
A single collection: an owned, in-process handle to one collection’s
storage. Insert with &mut, query with &. Data is durable via the WAL
on every insert; call Collection::flush (or drop the handle) to also
persist the dense/sparse indexes for a fast reopen.
Implementations§
Source§impl Collection
impl Collection
Sourcepub fn insert(
&mut self,
id: impl Into<VectorId>,
vector: Vector,
payload: Value,
) -> Result<UpsertResult>
pub fn insert( &mut self, id: impl Into<VectorId>, vector: Vector, payload: Value, ) -> Result<UpsertResult>
Insert or update a vector with JSON metadata and no text. Timestamps are set to now.
Sourcepub fn insert_text(
&mut self,
id: impl Into<VectorId>,
vector: Vector,
payload: Value,
text: impl Into<String>,
) -> Result<UpsertResult>
pub fn insert_text( &mut self, id: impl Into<VectorId>, vector: Vector, payload: Value, text: impl Into<String>, ) -> Result<UpsertResult>
Insert or update a vector with JSON metadata and full-text (enables BM25 sparse and hybrid search for this record).
Sourcepub fn upsert_record(&mut self, record: VectorRecord) -> Result<UpsertResult>
pub fn upsert_record(&mut self, record: VectorRecord) -> Result<UpsertResult>
Insert or update a fully-specified record.
Sourcepub fn insert_batch(
&mut self,
items: Vec<(VectorId, Vector, Value)>,
) -> Result<usize>
pub fn insert_batch( &mut self, items: Vec<(VectorId, Vector, Value)>, ) -> Result<usize>
Bulk-insert many (id, vector, payload) triples, building the index once
at the end. Far faster than repeated Collection::insert for loading a
large collection. Returns the number inserted.
Sourcepub fn query(&self, vector: &[f32], k: usize) -> Result<Vec<SearchResult>>
pub fn query(&self, vector: &[f32], k: usize) -> Result<Vec<SearchResult>>
Dense k-NN search over the vector index.
Sourcepub fn query_filtered(
&self,
vector: &[f32],
k: usize,
filter: &Value,
) -> Result<Vec<SearchResult>>
pub fn query_filtered( &self, vector: &[f32], k: usize, filter: &Value, ) -> Result<Vec<SearchResult>>
Dense k-NN search restricted to records whose payload matches filter,
with predicate pushdown: a selective filter scans only the matching
vectors (exact, ~proportional to the matches) rather than searching the
whole index and discarding non-matches.
filter is the same JSON predicate shape accepted elsewhere, e.g.
json!({ "genre": "sci-fi" }) or json!({ "year": { "$gte": 2000 } }).
Sourcepub fn query_text(&self, text: &str, k: usize) -> Result<Vec<SearchResult>>
pub fn query_text(&self, text: &str, k: usize) -> Result<Vec<SearchResult>>
Full-text BM25 search over the sparse index.
Sourcepub fn query_hybrid(
&self,
vector: Option<&[f32]>,
text: Option<&str>,
k: usize,
alpha: f32,
) -> Result<Vec<SearchResult>>
pub fn query_hybrid( &self, vector: Option<&[f32]>, text: Option<&str>, k: usize, alpha: f32, ) -> Result<Vec<SearchResult>>
Two-stage hybrid search. At least one of vector / text required.
alpha weights dense vs sparse (alpha * dense + (1-alpha) * sparse).
Sourcepub fn sql(&self, sql: &str) -> Result<Vec<SearchResult>>
pub fn sql(&self, sql: &str) -> Result<Vec<SearchResult>>
Run a VECTOR_SIM SQL query against this collection.
Sourcepub fn stats(&self) -> Result<IndexStats>
pub fn stats(&self) -> Result<IndexStats>
Collection statistics (vector count, on-disk bytes, dimension, …).
Trait Implementations§
Source§impl Drop for Collection
impl Drop for Collection
Auto Trait Implementations§
impl !RefUnwindSafe for Collection
impl !UnwindSafe for Collection
impl Freeze for Collection
impl Send for Collection
impl Sync for Collection
impl Unpin for Collection
impl UnsafeUnpin for Collection
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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> ⓘ
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> ⓘ
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