pub struct AmplifiedDecayAwareSalienceObjective {
pub alpha: f64,
}Expand description
Scores a NoteCandidate by salience with exponential decay and a non-linear
amplification exponent applied after decay.
Formula: (salience * exp(-decay_factor * age_days)) ^ alpha
With alpha > 1.0, high-salience memories rank more clearly above low-salience
ones when relevance is similar. At alpha = 1.5 (the memory-recall default),
salience 0.9 → 0.854 and salience 0.3 → 0.164 — a ~5.2× spread vs the ~3× linear
spread. Keep alpha ≤ 2.0; values above 2 compress near-zero salience toward 0.
Used by the memory recall pipeline to make salience a meaningful tiebreaker without dominating relevance at the default weight of 0.20.
Fields§
§alpha: f64Power applied to the decayed salience value. Must be > 0.
Implementations§
Source§impl AmplifiedDecayAwareSalienceObjective
impl AmplifiedDecayAwareSalienceObjective
Sourcepub fn default_memory() -> Self
pub fn default_memory() -> Self
Default memory alpha from the memory recall handler: 1.5.
Trait Implementations§
Source§impl Objective<NoteCandidate> for AmplifiedDecayAwareSalienceObjective
impl Objective<NoteCandidate> for AmplifiedDecayAwareSalienceObjective
Source§fn score(&self, candidate: &NoteCandidate, _context: &ObjectiveContext) -> f64
fn score(&self, candidate: &NoteCandidate, _context: &ObjectiveContext) -> f64
Evaluate a single candidate.
Source§fn precision(&self, _candidate: &T, _context: &ObjectiveContext) -> f64
fn precision(&self, _candidate: &T, _context: &ObjectiveContext) -> f64
Precision (inverse variance) of the score estimate; default 1.0 (fully trusted).
Source§fn passes_score(&self, score: f64, context: &ObjectiveContext) -> bool
fn passes_score(&self, score: f64, context: &ObjectiveContext) -> bool
Check if a score passes the threshold; non-finite scores never pass.
Source§fn passes(&self, candidate: &T, context: &ObjectiveContext) -> bool
fn passes(&self, candidate: &T, context: &ObjectiveContext) -> bool
Check if a candidate passes the threshold.
Source§fn batch_score(
&self,
candidates: &[T],
context: &ObjectiveContext,
) -> Vec<(usize, f64)>
fn batch_score( &self, candidates: &[T], context: &ObjectiveContext, ) -> Vec<(usize, f64)>
Score a batch of candidates and return passing
(index, score) pairs.Source§fn select<'a>(
&self,
candidates: &'a [T],
context: &ObjectiveContext,
) -> Vec<Selection<&'a T>>
fn select<'a>( &self, candidates: &'a [T], context: &ObjectiveContext, ) -> Vec<Selection<&'a T>>
Select all passing candidates in score-descending order.
Source§fn select_top<'a>(
&self,
candidates: &'a [T],
n: usize,
context: &ObjectiveContext,
) -> Vec<Selection<&'a T>>
fn select_top<'a>( &self, candidates: &'a [T], n: usize, context: &ObjectiveContext, ) -> Vec<Selection<&'a T>>
Select the top N candidates by precision-weighted score.
Auto Trait Implementations§
impl Freeze for AmplifiedDecayAwareSalienceObjective
impl RefUnwindSafe for AmplifiedDecayAwareSalienceObjective
impl Send for AmplifiedDecayAwareSalienceObjective
impl Sync for AmplifiedDecayAwareSalienceObjective
impl Unpin for AmplifiedDecayAwareSalienceObjective
impl UnsafeUnpin for AmplifiedDecayAwareSalienceObjective
impl UnwindSafe for AmplifiedDecayAwareSalienceObjective
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<O, T> DeterministicObjective<T> for O
impl<O, T> DeterministicObjective<T> for O
Source§fn select_deterministic<'a>(
&self,
candidates: &'a [T],
context: &ObjectiveContext,
) -> Result<Selection<&'a T>, ObjectiveError>
fn select_deterministic<'a>( &self, candidates: &'a [T], context: &ObjectiveContext, ) -> Result<Selection<&'a T>, ObjectiveError>
Select the best candidate with deterministic tie-breaking.
Source§fn select_top_deterministic<'a>(
&self,
candidates: &'a [T],
n: usize,
context: &ObjectiveContext,
) -> Vec<Selection<&'a T>>
fn select_top_deterministic<'a>( &self, candidates: &'a [T], n: usize, context: &ObjectiveContext, ) -> Vec<Selection<&'a T>>
Select the top N candidates with deterministic ordering.