pub struct NonRankingEmbedder;Expand description
Zero-vector embedder: stores and retrieves facts, ranks nothing.
Every text embeds to the same all-zero vector, so cosine similarity is
always 1.0 (or undefined) and recall degenerates to insertion order. It
exists so the capability-shaped constructors — MemorySqlite::open,
MemoryQdrant::connect, MemoryPgvector::connect — can hand back a
working store with no embedding model present.
It is not a semantic substrate. Two adopters shipped production-shaped
vector tiers on it and measured substring-grade recall before noticing. The
safeguards, all of which the old DummyEmbedder name lacked:
- the name says what it does,
- the first
Embedder::embedcall logs atracing::warn!once, and Embedder::is_rankinganswersfalse, so a store built on it reportsklieo_core::memory::RecallSemantics::NonRankingand a pipeline that asserts semantic recall at startup fails there instead of in a measurement.
Trait Implementations§
Source§impl Embedder for NonRankingEmbedder
impl Embedder for NonRankingEmbedder
Source§fn dimension(&self) -> usize
fn dimension(&self) -> usize
Embedding dimensionality. Must be constant for a given
Embedder instance — long-term memory backends reject vectors
of the wrong length at runtime.Source§fn embed<'life0, 'life1, 'async_trait>(
&'life0 self,
texts: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<f32>>, MemoryError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
NonRankingEmbedder: 'async_trait,
fn embed<'life0, 'life1, 'async_trait>(
&'life0 self,
texts: &'life1 [String],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<f32>>, MemoryError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
NonRankingEmbedder: 'async_trait,
Compute one embedding per input text.
Source§fn is_ranking(&self) -> bool
fn is_ranking(&self) -> bool
Whether distinct inputs produce distinct directions, i.e. whether a
vector store wired with this embedder actually ranks by relevance. Read more
Auto Trait Implementations§
impl Freeze for NonRankingEmbedder
impl RefUnwindSafe for NonRankingEmbedder
impl Send for NonRankingEmbedder
impl Sync for NonRankingEmbedder
impl Unpin for NonRankingEmbedder
impl UnsafeUnpin for NonRankingEmbedder
impl UnwindSafe for NonRankingEmbedder
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> ⓘ
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