# `Nous.Memory.Scoring`
[🔗](https://github.com/nyo16/nous/blob/v0.17.1/lib/nous/memory/scoring.ex#L1)

Pure scoring functions for memory retrieval ranking.

# `composite_score`

```elixir
@spec composite_score(float(), Nous.Memory.Entry.t(), keyword()) :: float()
```

Compute composite score combining relevance, importance, and recency.

Default weights: relevance: 0.5, importance: 0.3, recency: 0.2

# `rrf_merge`

```elixir
@spec rrf_merge(
  [{Nous.Memory.Entry.t(), number()}],
  [{Nous.Memory.Entry.t(), number()}],
  keyword()
) ::
  [{Nous.Memory.Entry.t(), float()}]
```

Reciprocal Rank Fusion merge of two ranked result lists.

RRF formula: score(d) = sum(1 / (k + rank(d))) across all lists where d appears.

# `temporal_decay`

```elixir
@spec temporal_decay(float(), Nous.Memory.Entry.t(), keyword()) :: float()
```

Apply temporal decay to a relevance score.

decay = exp(-lambda * hours_since_access)
Returns original score if entry is evergreen.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
