Problem
The same author can fill For You across consecutive refreshes and scrolls, because author diversity is computed per request and starts from zero each time.
Current behavior (6bb4594)
Result: an author's first post in every new load gets a full 1.0 multiplier, even if the viewer was shown that author several times in the previous load seconds earlier.
Proposal
- Carry recently served author IDs (bounded, e.g. last N requests or last few minutes) with the query.
- Seed
author_pool_counts with those counts, time-decayed, so diversity continues across loads instead of resetting.
- Ship behind a param, off by default, for controlled evaluation.
Related
Open questions
- Window size and decay rate
- Whether mutual follows or authors the viewer engages with heavily should get a softer penalty
Problem
The same author can fill For You across consecutive refreshes and scrolls, because author diversity is computed per request and starts from zero each time.
Current behavior (6bb4594)
author_pool_countscounts an author's posts only among the current request's candidates:https://github.com/xai-org/x-algorithm/blob/6bb4594/home-mixer/scorers/ranking_scorer.rs#L629
AuthorDiversityDecay= 0.5,AuthorDiversityFloor= 0.25 (2nd post from an author in a request scored at 0.625, 3rd at 0.4375):https://github.com/xai-org/x-algorithm/blob/6bb4594/home-mixer/params/param.rs#L229-L245
served_ids(post IDs only), andPreviouslyServedPostsFilteruses them to drop exact posts already served, not authors:https://github.com/xai-org/x-algorithm/blob/6bb4594/home-mixer/models/query.rs#L49
https://github.com/xai-org/x-algorithm/blob/6bb4594/home-mixer/filters/previously_served_posts_filter.rs#L26-L30
Result: an author's first post in every new load gets a full 1.0 multiplier, even if the viewer was shown that author several times in the previous load seconds earlier.
Proposal
author_pool_countswith those counts, time-decayed, so diversity continues across loads instead of resetting.Related
Open questions