# Seeking architectural patterns: Balancing hybrid search with mathematical temporal decay

**URL:** <https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329>\
**Category:** Support\
**Tags:** developer-experience, technical\
**Created:** [April 18, 2026, 10:42am UTC](https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329 "2026-04-18T10:42:25Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![VLSiddarth](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.weaviate.io/vlsiddarth/32/7881_2.png) [@VLSiddarth](https://forum.weaviate.io/u/VLSiddarth)\
**Post date:** [April 18, 2026, 10:42am UTC](https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329/1 "2026-04-18T10:42:25Z")

</div>

_(Architecture / Design Question - No specific error logs)_

I love Weaviate’s hybrid search, but I’m struggling with the architecture around context rot.

If I have a highly relevant 3-year-old chunk and a moderately relevant chunk from yesterday, standard hybrid search still heavily favors the old one because the vector similarity is higher.

Is anyone doing mathematical freshness scoring (like a temporal decay curve) _before_ embedding, or are we all just relying on post-retrieval metadata filters to drop old data? Looking for best practices on how to actually weight recency without destroying relevance.

---

<div class="post-metadata">

**Author:** ![DudaNogueira](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.weaviate.io/dudanogueira/32/7846_2.png) [@DudaNogueira](https://forum.weaviate.io/u/DudaNogueira)\
**Post date:** [April 20, 2026, 12:58pm UTC](https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329/2 "2026-04-20T12:58:02Z")

</div>

hi!!

That’s an interesting topic. I don’t think I have seen temporal decay being accounted at the embeddings, but using the metadata in order to rescore the data accordingly.

It’s worth noting that [we have recently released TTL](https://docs.weaviate.io/weaviate/manage-collections/time-to-live), while not directly related to decaying the score based on TTL, but may be something “around” it.

---

<div class="post-metadata">

**Author:** ![VLSiddarth](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.weaviate.io/vlsiddarth/32/7881_2.png) [@VLSiddarth](https://forum.weaviate.io/u/VLSiddarth)\
**Post date:** [April 20, 2026, 4:49pm UTC](https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329/3 "2026-04-20T16:49:47Z")

</div>

Hi Duda, thanks for the reply!

Exactly—TTL is great for hard expiries, but it acts like a sledgehammer. A 3-year-old JavaScript tutorial might be useless, but a 3-year-old paper on quantum error correction is still highly relevant. You can’t just delete both with a blanket TTL.

I actually ended up building a dedicated infrastructure layer to solve this exact gap because I couldn’t find it anywhere. It runs a deterministic exponential decay function `

> final\_score = result.metadata.score \* exp(-lambda\_val \* result.properties[‘ageDays’])

` on the metadata _before_ it gets passed to the LLM context window. It calculates a platform-specific half-life (GitHub code decays faster than arXiv papers) and applies a penalty multiplier to the base semantic score.

It effectively gives RAG pipelines a `days_until_stale` integer, acting as a scalpel instead of a sledgehammer. Would love to get your thoughts on the math behind it if the Weaviate team is exploring this space!

---

<div class="post-metadata">

**Author:** ![DudaNogueira](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.weaviate.io/dudanogueira/32/7846_2.png) [@DudaNogueira](https://forum.weaviate.io/u/DudaNogueira)\
**Post date:** [April 20, 2026, 8:10pm UTC](https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329/4 "2026-04-20T20:10:00Z")

</div>

That’s nice! I will raise this to our research team, as this is something that is likely in our radar.

Thanks!!

---

<div class="post-metadata">

**Author:** ![VLSiddarth](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.weaviate.io/vlsiddarth/32/7881_2.png) [@VLSiddarth](https://forum.weaviate.io/u/VLSiddarth)\
**Post date:** [April 21, 2026, 7:50am UTC](https://forum.weaviate.io/t/seeking-architectural-patterns-balancing-hybrid-search-with-mathematical-temporal-decay/22329/5 "2026-04-21T07:50:22Z")

</div>

Awesome, thanks Duda. Happy to share the raw decay math or run a benchmark over a Weaviate cluster if the research team wants to dig into the mechanics. Cheers!
