A Unified Language Model for Large Scale Search, Recommendation, and Reasoning
Organizations: Spotify Denmark, Spain, Germany, France, United States, United Kingdom
Abstract
LLMs are increasingly applied to recommendation, retrieval, and reasoning, yet deploying a single end-to-end model that can jointly support these behaviors over large, heterogeneous catalogs remains challenging. Such systems must generate unambiguous references to real items, handle multiple entity types, and operate under strict latency and reliability constraints requirements that are difficult to satisfy with text-only generation. While tool-augmented recommender systems address parts of this problem, they introduce orchestration complexity and limit end-to-end optimization. We view this setting as an instance of a broader research problem: how to adapt LLMs to reason jointly over multiple-domain entities, users, and language in a fully self-contained manner. To this end, we introduce NEO, a framework that adapts a pre-trained decoder-only LLM into a tool-free, catalog-grounded generator. NEO represents items as SIDs and trains a single model to interleave natural language and typed item identifiers within a shared sequence. Text prompts control the task, target entity type, and output format (IDs, text, or mixed), while constrained decoding guarantees catalog-valid item generation without restricting free-form text. We refer to this instruction-conditioned controllability as language-steerability. We treat SIDs as a distinct modality and study design choices for integrating discrete entity representations into LLMs via staged alignment and instruction tuning. We evaluate NEO at scale on a real-world catalog of over 10M items across multiple media types and discovery tasks, including recommendation, search, and user understanding. In offline experiments, NEO consistently outperforms strong task-specific baselines and exhibits cross-task transfer, demonstrating a practical path toward consolidating large-scale discovery capabilities into a single language-steerable generative model.
Figures & tables
| Capability / System | Generative SID Retrieval ( Qu et al., 2024 ; Rajput et al., 2024 ) | Tool-based LLMs ( Doh et al., 2025a ; Friedman et al., 2023 ; Lyu et al., 2024 ; Wang et al., 2024d ) | PLUM ( He et al., 2025 ) | TalkPlay ( Doh et al., 2025b ) | NEO (this work) |
|---|---|---|---|---|---|
| Discrete item pointers | ✓ | ✗ | ✓ | ✓ | ✓ |
| Mixed text + item output | ✗ | ✗ | ✓ | ✓ | |
| Mixed text + item input | ✓ | ✓ | ✓ | ✓ | |
| User behaviour in input | ✓ | ✓ | ✓ | ||
| Language-steerable behavior | ✗ | ✓ | ✓ | ✓ | |
| Multiple item types | ✗ | ✗ | ✓ |
| Method | HR@10 |
|---|---|
| NEO (Baseline) | - |
| A - Atomic item IDs | -59.7% |
| Semantic IDs | |
| B - LSH quantizer | -51.2% |
| C - No augmented data | -2.9% |
| D - Collaborative filtering | -25.6% |
| Inference strategy | HR@K | latency | |
|---|---|---|---|
| NEO (Baseline) | - | - | - |
| A - Beam Search w/o constrains | -1.80% | -1.93% | -2.92% |
| B - Top- sampling | -21.97% | -32.41% | -7.91% |
| Method | HR@K | NDCG@K | ||
|---|---|---|---|---|
| NEO (Baseline) | - | - | - | - |
| A - w/o Domain Grounding | {\color[rgb]{0.6992,0.1328,0.1328}-6\%} | {\color[rgb]{0.6992,0.1328,0.1328}-7\%} | {\color[rgb]{0.6992,0.1328,0.1328}-8\%} | {\color[rgb]{0.6992,0.1328,0.1328}-8\%} |
| B - Everything in two-stages | {\color[rgb]{0.6992,0.1328,0.1328}-8\%} | {\color[rgb]{0.6992,0.1328,0.1328}-7\%} | {\color[rgb]{0.6992,0.1328,0.1328}-10\%} | {\color[rgb]{0.6992,0.1328,0.1328}-10\%} |
| C - Random init | {\color[rgb]{0.6992,0.1328,0.1328}-44\%} | {\color[rgb]{0.6992,0.1328,0.1328}-44\%} | {\color[rgb]{0.6992,0.1328,0.1328}-44\%} | {\color[rgb]{0.6992,0.1328,0.1328}-43\%} |
| D - Continuos pretraining | {\color[rgb]{0.6992,0.1328,0.1328}-3\%} | {\color[rgb]{0.6992,0.1328,0.1328}-3\%} | {\color[rgb]{0.6992,0.1328,0.1328}-2\%} | {\color[rgb]{0.6992,0.1328,0.1328}-3\%} |
| Method | HR@K | NDCG@K | ||
|---|---|---|---|---|
| Episode Recommendation | ||||
| Baseline | - | - | - | - |
| NEO - mono | {\color[rgb]{0.1328,0.5469,0.1328}+57\%} | {\color[rgb]{0.1328,0.5469,0.1328}+41\%} | {\color[rgb]{0.1328,0.5469,0.1328}+80\%} | {\color[rgb]{0.1328,0.5469,0.1328}+60\%} |
| NEO - multi | {\color[rgb]{0.1328,0.5469,0.1328}+58\%} | {\color[rgb]{0.1328,0.5469,0.1328}+40\%} | {\color[rgb]{0.1328,0.5469,0.1328}+80\%} | {\color[rgb]{0.1328,0.5469,0.1328}+59\%} |
| Show Recommendations | ||||
| Variation | Artists | Episodes | |
|---|---|---|---|
| Interest profiling | Coverage | 3.79 | 3.47 |
| Groundedness | 3.81 | 3.50 | |
| Recsplanation | Faithfulness item | 4.08 | 3.28 |
| Faithfulness history | 4.16 | 2.79 | |
| Deceptiveness | 4.74 | 4.52 | |
Appendix figures & tables11 assets
Supplementary material from the paper’s appendix.
Appendix
| Hyperparameters | Stage 2 | Stage 3 |
|---|---|---|
| Learning rate | ||
| LR scheduler | Cosine | Cosine |
| Weight decay | ||
| Gradient clip | ||
| Optimizer | AdamW ( ) | |
| Warm-up steps | ||
| User type | HR@K | NDCG@K | ||
|---|---|---|---|---|
| Coldstart | {\color[rgb]{0.6992,0.1328,0.1328}-48\%} | {\color[rgb]{0.6992,0.1328,0.1328}-57\%} | {\color[rgb]{0.6992,0.1328,0.1328}-34\%} | {\color[rgb]{0.6992,0.1328,0.1328}-40\%} |
| Warmstart | {\color[rgb]{0.1328,0.5469,0.1328}+57\%} | {\color[rgb]{0.1328,0.5469,0.1328}+40\%} | {\color[rgb]{0.1328,0.5469,0.1328}+70\%} | {\color[rgb]{0.1328,0.5469,0.1328}+60\%} |
| Variation | HR@K | NDCG@K | ||
|---|---|---|---|---|
| Item type | ||||
| Artists | {\color[rgb]{0.1328,0.5469,0.1328}+36\%} | {\color[rgb]{0.1328,0.5469,0.1328}+35\%} | {\color[rgb]{0.1328,0.5469,0.1328}+38\%} | {\color[rgb]{0.1328,0.5469,0.1328}+38\%} |
| Audiobooks | {\color[rgb]{0.1328,0.5469,0.1328}+26\%} | {\color[rgb]{0.1328,0.5469,0.1328}+27\%} | {\color[rgb]{0.1328,0.5469,0.1328}+29\%} | {\color[rgb]{0.1328,0.5469,0.1328}+30\%} |
| Episodes | {\color[rgb]{0.1328,0.5469,0.1328}+40\%} | {\color[rgb]{0.1328,0.5469,0.1328}+16\%} | {\color[rgb]{0.1328,0.5469,0.1328}+73\%} | {\color[rgb]{0.1328,0.5469,0.1328}+59\%} |
| Query complexity | ||||
Large Language Model-Based Recommendation
Large language model-based recommendation uses language models to personalize ranking, retrieval, and conversational suggestions from text and behavior.
See all 210 papers