Skip to main content

Collection

Struct Collection 

Source
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

Source

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.

Source

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).

Source

pub fn upsert_record(&mut self, record: VectorRecord) -> Result<UpsertResult>

Insert or update a fully-specified record.

Source

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.

Source

pub fn delete(&mut self, id: &str) -> Result<()>

Delete a record by id.

Source

pub fn query(&self, vector: &[f32], k: usize) -> Result<Vec<SearchResult>>

Dense k-NN search over the vector index.

Source

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 } }).

Source

pub fn query_text(&self, text: &str, k: usize) -> Result<Vec<SearchResult>>

Full-text BM25 search over the sparse index.

Source

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).

Source

pub fn sql(&self, sql: &str) -> Result<Vec<SearchResult>>

Run a VECTOR_SIM SQL query against this collection.

Source

pub fn len(&self) -> Result<usize>

Number of active (non-deleted) vectors.

Source

pub fn is_empty(&self) -> Result<bool>

Whether the collection has no active vectors.

Source

pub fn stats(&self) -> Result<IndexStats>

Collection statistics (vector count, on-disk bytes, dimension, …).

Source

pub fn name(&self) -> &str

Collection name.

Source

pub fn flush(&mut self) -> Result<()>

Persist indexes and checkpoint the WAL. Data is already durable via the WAL without this; flushing makes the next reopen fast (no index rebuild).

Trait Implementations§

Source§

impl Drop for Collection

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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