pub struct SemanticConsolidator { /* private fields */ }Expand description
Semantic consolidation engine
Extracts durable semantic facts from episodic memories using:
- Multi-extractor pipeline: all extractors run on every memory
- Stemmed-token Jaccard clustering: groups semantically similar patterns
- Sentence-level extraction: facts are real content, not synthetic strings
Implementations§
Source§impl SemanticConsolidator
impl SemanticConsolidator
pub fn new() -> Self
Sourcepub fn with_thresholds(min_support: usize, min_age_days: i64) -> Self
pub fn with_thresholds(min_support: usize, min_age_days: i64) -> Self
Create with custom thresholds
Sourcepub fn consolidate(&self, memories: &[Memory]) -> ConsolidationResult
pub fn consolidate(&self, memories: &[Memory]) -> ConsolidationResult
Extract semantic facts from a set of memories
Pipeline:
- Filter memories by age threshold
- Run multi-extractor on each eligible memory
- Cluster candidates by stemmed-token Jaccard similarity
- Convert qualifying clusters (>= min_support) into facts
Sourcepub fn reinforce_fact(&self, fact: &mut SemanticFact, memory: &Memory)
pub fn reinforce_fact(&self, fact: &mut SemanticFact, memory: &Memory)
Reinforce an existing fact with new evidence
Called when a memory matches an existing fact, strengthening confidence.
Sourcepub fn should_decay_fact(&self, fact: &SemanticFact) -> bool
pub fn should_decay_fact(&self, fact: &SemanticFact) -> bool
Check if a fact would decay below deletion threshold (0.1 confidence)
Uses exponential half-life model matching decay_facts_for_all_users():
90-day grace period, then half-life = 180 + (30 × support_count) days.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SemanticConsolidator
impl RefUnwindSafe for SemanticConsolidator
impl Send for SemanticConsolidator
impl Sync for SemanticConsolidator
impl Unpin for SemanticConsolidator
impl UnsafeUnpin for SemanticConsolidator
impl UnwindSafe for SemanticConsolidator
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for 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>
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