Reasoning Reranking with Semantic IDs as the Sole Item Representation
Organizations: Google · University of Toronto
Abstract
Reasoning rerankers write a rationale before ranking a candidate slate, and existing systems read item metadata to do so, even though generative recommenders increasingly represent items as compact Semantic IDs (SIDs). Ranking from SIDs alone has two appeals: SID prompts are far shorter than the matched item text, and although item codes are fixed from content, the backbone learns their token embeddings in part from user-item interaction sequences, so the tokens can carry behavioral signal that item text lacks. That training targets next-item generation, and whether it supports ranking a supplied slate from SIDs alone is untested. We build ReRankID, a controlled testbed in which models reason and rank from a history and slate shown only as SIDs, varying item rendering, history length, and slate size one at a time. On this testbed, such models often copy the input order instead of reranking, and readable metadata does not repair the failure. We compare supervised fine-tuning, rejection-sampled self-training, on-policy distillation, and verifier-based reinforcement learning as post-training methods and find that they elicit the missing behavior. The strongest post-trained model, the 8B model trained with a graded ranking reward, gives the best SID-only ranking and matches strong text-reading LLMs whose prompts are about 20x longer. It ranks above random with no history at all, where a caption-reading reference does not, and it keeps its gains at long histories, where text prompts pass 50k tokens and the caption-reading reference stops improving. In a paired rationale audit, this model argues trade-offs better than that reference but describes items less accurately. The common post-training methods we test thus elicit ranking from SIDs but not faithful item descriptions, which calls for post-training that improves the reasoning itself, not only the ranking it produces.
Figures & tables
| Input | NDCG@5 | NDCG@10 | Recall@5 | Recall@10 | MRR | Identity% | Loop% | Input tokens | |
| Random | – | .105 | .157 | .190 | .350 | .099 | – | – | – |
| Caption | Text | .184 | .248 | .303 | .503 | .171 | – | – | – |
| Claude-Sonnet-5 | Text | .210 | .282 | .315 | .540 | .205 | 0.0 | 0.0 | |
| Gemini-3.6-Flash | Text | .247 | .310 | .378 | .570 | .231 | 0.0 | 0.0 | |
| GPT-5.6-Terra | Text | .256 | .322 | .398 | .603 | .237 | 0.0 | 0.0 | |
| OpenOneRec-1.7B-pro | SID | .114 | .167 | .195 | .365 | .109 | 42.3 | 16.5 |
| Method | Init | Supervision | NDCG@5 | Base | Init | 95% CI vs. Init | Identity% | Loop% |
| OpenOneRec-1.7B-pro | ||||||||
| Base | – | – | .114 | – | – | – | 42.3 | 16.5 |
| SFT | Base | Teacher traces | .225 | +.111 | +.111 | 0.0 | 0.0 | |
| OPD | Base | Teacher distributions | .195 | +.082 | +.082 | 0.0 | 0.0 | |
| RFT | SFT | Filtered rollouts | .223 | +.109 | -.002 | 0.0 | 0.0 | |
| RLVR | SFT | NDCG@5 reward | .231 | +.117 | +.006 | 0.0 | 0.0 | |
Appendix figures & tables15 assets
Supplementary material from the paper’s appendix.
Appendix
| Setting | Value |
|---|---|
| Platform / SID vocabulary | Kuaishou short-video interactions / OpenOneRec |
| Development / test | 400 / 400 user-disjoint examples |
| Positive strata per split | 200 grade-2 and 200 grade-3 users |
| Labels per example | Exactly one behaviorally observed positive |
| Minimum renderable history | 256 items with both SID and caption views |
| History intervention | , nested recent subsequences |
| System | View | Extraction% | Final valid% | NDCG@5 | Stage-1 only |
|---|---|---|---|---|---|
| Base 1.7B | SID | 17.5 | 100.0 | .114 | .101 |
| Base 1.7B | Text | 47.8 | 99.5 | .115 | .071 |
| Base 1.7B | Both | 43.5 | 99.8 | .139 | .074 |
| Base 8B | SID | 37.5 | 100.0 | .168 | .113 |
| Base 8B | Text | 13.0 | 99.8 | .159 | .140 |
| Base 8B | Both | 6.3 | 100.0 | .166 | .154 |
| Setting | Value |
|---|---|
| SID models | OpenOneRec/OneRec-1.7B-pro and OpenOneRec/OneRec-8B-Pro, pinned released revisions |
| Text references | Gemini-3.6-Flash and Claude-Sonnet-5 through Vertex AI; GPT-5.6-Terra through OpenRouter; retained finish reason |
| Shared top- | 10 candidate indices |
| SID stage 1 | Greedy decoding, 2,048-token response budget |
| SID stage 2 | Structured array extraction, 256-token budget, 1,200-character reasoning cap |
| Text API decoding | Gemini: visible rationale, medium thinking, provider-default temperature, 8,192-token cap; Claude and GPT: 32,768-token cap |
| Setting | Value |
|---|---|
| Source / quality-accepted examples | 12,000 / 11,991 unique users |
| Source positive strata | Grade 2: 6,000; grade 3: 6,000 |
| Accepted positive strata | Grade 2: 5,994; grade 3: 5,997 |
| Train / development | 11,031 / 960 accepted examples, with zero overlap |
| Quality rejections | 9 total: grounding 4; length 4; correctness 1 |
| Source-pool history counts | : 1,179; : 3,648; : 3,692; : 3,481 |
| Setting | 1.7B Pro | 8B Pro |
|---|---|---|
| Initialization | Base model | Base model |
| Adaptation | LoRA , , all linear layers | Same |
| Frozen weights | Base parameters, including SID embeddings | Same |
| Template / cutoff | Qwen3 / 8,192 tokens | Qwen3 / 4,096 tokens |
| Precision | bf16 | bf16 |
| Effective batch | 32 | 128 |
| Source | 1.7B retained | 1.7B coverage | 8B retained | 8B coverage | |
|---|---|---|---|---|---|
| 10 | 580 | 360 | 62.07% | 315 | 54.31% |
| 20 | 905 | 373 | 41.22% | 354 | 39.12% |
| 30 | 2,457 | 826 | 33.62% | 843 | 34.31% |
| 50 | 1,167 | 267 | 22.88% | 274 | 23.48% |
| 100 | 891 | 114 | 12.79% | 126 | 14.14% |
| Setting | Value |
|---|---|
| Models | OpenOneRec 1.7B Pro and 8B Pro |
| Initialization | Corresponding dev-selected SFT checkpoint |
| Source prompts | Shared post-training prompt set (6,000 SID-only examples) |
| Samples per prompt | 8 |
| Sampling | Temperature 1.0, top- .95, seed zero |
| Response budget | 2,048 tokens |
| Setting | Value |
|---|---|
| Models | OpenOneRec 1.7B Pro and 8B Pro |
| Initialization / update | Base model / fresh LoRA , , dropout 0, all linear layers |
| Teacher | Frozen merged SFT model at the same scale |
| Student and teacher input | Identical SID-only prompt and student-generated response prefix |
| Training data | Shared post-training prompt set, label-free, one prompt per user |
| Rollout | One response per prompt; temperature 1.0, top- 1.0 |
| Setting | Value |
|---|---|
| Models | OpenOneRec 1.7B Pro and 8B Pro |
| Primary initialization | Corresponding dev-selected SFT checkpoint, merged into the base |
| Trained weights | Fresh LoRA , , all linear layers |
| Training / monitor data | Shared post-training prompt set / 400 benchmark-dev users |
| Rollouts per prompt | 8 |
| Sampling | Temperature 1.0, top- .95 |
| Method | Scale | Init | Checkpoint NDCG@5 on development | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| RFT (steps 31 to 122 / 30 to 120) | 1.7B | .220 | .217 | .217 | .209 | .217 | ||||
| 8B | .217 | .222 | .250 | .254 | .253 | |||||
| OPD (steps 25 to 200) | 1.7B | – | .129 | .139 | .211 | .197 | .206 | .185 | .203 | .202 |
| 8B | – | .167 | .266 | .227 | .227 | .246 | .243 | .228 | .234 | |
| RLVR (steps 20 to 100) | 1.7B | .218 | .220 | .223 | .233 | .233 | .225 | |||
| 8B | .230 | .230 | .224 | .244 | .248 | .301 | ||||
| Method | Scale | Initializer | Supervision | N@5 | N@10 | R@5 | R@10 | MRR |
|---|---|---|---|---|---|---|---|---|
| SFT | 1.7B Pro | Base | Teacher traces | .225 | .290 | .358 | .560 | .208 |
| OPD | 1.7B Pro | Base | Teacher distributions | .195 | .242 | .310 | .455 | .178 |
| RFT | 1.7B Pro | SFT | Filtered rollouts | .223 | .290 | .358 | .568 | .206 |
| RLVR | 1.7B Pro | SFT | NDCG@5 reward | .231 | .298 | .353 | .563 | .218 |
| RLVR | 1.7B Pro | SFT | Hit@1 reward | .232 | .298 | .358 | .565 | .217 |
| SFT | 8B Pro | Base | Teacher traces | .237 | .302 | .360 | .565 | .223 |
| A | B | Mean A | Mean B | (A-B) | 95% paired CI |
|---|---|---|---|---|---|
| SFT 1.7B | Base 1.7B | .225 | .114 | +.111 | |
| SFT 8B | Base 8B | .237 | .168 | +.068 | |
| GPT-5.6-Terra text | Gemini text | .256 | .247 | +.009 | |
| GPT-5.6-Terra text | SFT 1.7B | .256 | .225 | +.031 | |
| SFT 1.7B | Gemini text | .225 | .247 | -.022 | |
| SFT 8B | Gemini text | .237 | .247 | -.011 |
| View | |||
|---|---|---|---|
| SID | 845 | 1,165 | 1,805 |
| Text | 16,722 | 27,899 | 50,412 |
| Both | 17,255 | 28,752 | 51,905 |
| Scale / stratum | Base | SFT | [95% CI] |
|---|---|---|---|
| 1.7B / grade 2 | .132 | .206 | |
| 1.7B / grade 3 | .095 | .244 | |
| 8B / grade 2 | .186 | .223 | |
| 8B / grade 3 | .150 | .250 |
| Aspect | Gemini | RLVR | Tie | Hesit. | Flip |
|---|---|---|---|---|---|
| Item-claim accuracy | 66 | 0 | 21 | 12 | 1 |
| User-model accuracy | 37 | 0 | 28 | 35 | 0 |
| Trade-off argument | 0 | 50 | 16 | 34 | 0 |
| Coverage (judged) | 100 | 0 | 0 | 0 | 0 |
| Overall | 97 | 0 | 0 | 3 | 0 |
LLM Reranking
Large language model reranking uses LLMs to reorder retrieved documents or candidate outputs by relevance, usefulness, or task-specific criteria.
See all 133 papers