Recommendation systems overview Stay organized with collections Save and categorize content based on your preferences.
Page Summary
Recommendation systems often use a three-stage architecture: candidate generation, scoring, and re-ranking.
Candidate generation narrows down a large pool of potential recommendations to a smaller subset for further evaluation.
Scoring assigns relevance scores to the candidates and ranks them to identify the top recommendations.
Re-ranking adjusts the initial ranking to address additional factors like user preferences, diversity, and content freshness.
One common architecture for recommendation systems consists of thefollowing components:
- candidate generation
- scoring
- re-ranking
Candidate generation
In this first stage, the system starts from a potentially huge corpus andgenerates a much smaller subset of candidates. For example, the candidategenerator in YouTube reduces billions of videos down to hundreds or thousands.The model needs to evaluate queries quickly given the enormous size of thecorpus. A given model may provide multiple candidate generators, each nominatinga different subset of candidates.
Scoring
Next, another model scores and ranks the candidates in order to selectthe set of items (on the order of 10) to display to the user. Since thismodel evaluates a relatively small subset of items, the system can usea more precise model relying on additional queries.
Re-ranking
Finally, the system must take into account additional constraints for thefinal ranking. For example, the system removes items that the userexplicitly disliked or boosts the score of fresher content. Re-rankingcan also help ensure diversity, freshness, and fairness.
We will discuss each of these stages over the course of the class andgive examples from different recommendation systems, such as YouTube.
Extra Resource: For a more comprehensive account of thetechnology, architecture, and models used in YouTube, seeCovingtonet al., Deep Neural Networks for YouTube Recommendations.Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-25 UTC.