pub struct MemoryVectorIndex { /* private fields */ }Expand description
An exact, brute-force in-memory vector index.
All vectors must share the same dimension once the first entry is inserted.
Cosine similarity is used for scoring; results are ordered by descending
score with ties broken by [RecordKey] ordering (lexicographic), making
results deterministic.
Implementations§
Source§impl MemoryVectorIndex
impl MemoryVectorIndex
Sourcepub fn collect_where(
&self,
pred: impl Fn(&RecordKey) -> bool,
) -> Vec<(RecordKey, Vec<f32>)>
pub fn collect_where( &self, pred: impl Fn(&RecordKey) -> bool, ) -> Vec<(RecordKey, Vec<f32>)>
Entries whose key satisfies pred.
Predicate-shaped rather than shard-shaped so sharding does not leak into the in-memory index; a durable backend passes its own shard test here and clones one shard rather than the whole index.
Trait Implementations§
Source§impl Default for MemoryVectorIndex
impl Default for MemoryVectorIndex
Source§fn default() -> MemoryVectorIndex
fn default() -> MemoryVectorIndex
Returns the “default value” for a type. Read more
Source§impl VectorIndex for MemoryVectorIndex
impl VectorIndex for MemoryVectorIndex
Source§fn upsert<'life0, 'async_trait>(
&'life0 self,
key: RecordKey,
vector: Vec<f32>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn upsert<'life0, 'async_trait>(
&'life0 self,
key: RecordKey,
vector: Vec<f32>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Insert or replace the vector for
key.Source§fn remove<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 RecordKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 RecordKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove
key if present (no error if absent).Source§fn query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 [f32],
k: usize,
filter: &'life2 KeyPrefix,
) -> Pin<Box<dyn Future<Output = Result<Vec<Match>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 [f32],
k: usize,
filter: &'life2 KeyPrefix,
) -> Pin<Box<dyn Future<Output = Result<Vec<Match>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Return the top-
k matches to query, restricted to keys matching
filter, ordered by descending score.Source§fn keys<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 KeyPrefix,
) -> Pin<Box<dyn Future<Output = Result<Vec<RecordKey>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn keys<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 KeyPrefix,
) -> Pin<Box<dyn Future<Output = Result<Vec<RecordKey>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Every key in the index matching
filter. Order is unspecified. Read moreAuto Trait Implementations§
impl !Freeze for MemoryVectorIndex
impl RefUnwindSafe for MemoryVectorIndex
impl Send for MemoryVectorIndex
impl Sync for MemoryVectorIndex
impl Unpin for MemoryVectorIndex
impl UnsafeUnpin for MemoryVectorIndex
impl UnwindSafe for MemoryVectorIndex
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