0x00 한

Research / Daily reports

  • Sources read: 2
  • Canon files updated: 1
  • Radar entries: 1
In one lineX made it possible to carry the embedding of the viewer's recent search queries in the For You ranker request. The switch is off by default, so current behavior is unchanged.

Other changes reviewed today:

  • Kuaishou reported that it compressed the reasoning sentences of an LLM recommendation model into latent tokens and raised revenue in an ads surface A/B test.

1Recent search queries became a candidate ranker input — X

Source xai-org/x-algorithm@07d159b — xAI public repository, commit of 2026-10-23 04:10 UTC, code. In these notes' numbering, this is Gen4+48, where Gen4+N is the number these notes assign in sequence to X commits after the Gen4 release (2026-08-13). The sync time of the cron mirror (a file that syncs and publishes the production feature-switch defaults daily) is 2026-10-22T16:00:34Z. 209 files changed, most of them cleanups in visibility-filtering and abuse-enforcement-service.

Background X For You ranking works as follows: home-mixer (the serving layer that receives requests, gathers candidates, and orders them) sends candidates and viewer information to Phoenix (a Grok-based ranking Transformer) and receives per-action probabilities. Viewer information has so far included in-feed signals such as engagement history, follow relationships, and demographics. Search is an action in which users state their interests directly outside the feed, so using it in feed ranking can capture interests not yet visible in the history. This commit adds, off by default, a path that carries the embedding of the viewer's recent search queries in the user context of the Phoenix request.

What we learnedA. Up to 16 recent search queries reach the ranker only as embeddings, without text

  • A new query hydrator (a stage that fills in viewer information per request) receives the viewer's list of recent search queries from the search service's store verified — recent_search_queries_store_client.rs:8-11.

    • The store is the search_mixer_nash app and the search_recent_queries_nash dataset of Manhattan (X's key-value store).
    • The client timeout is 100ms, and it retries once.
    • If the client cannot be created, it logs only a warning and substitutes a mock that returns empty results.
  • From the received list, it keeps only entries before the request time, picks up to 16 newest first, and removes the query text verified — recent_search_queries_query_hydrator.rs:10-12, 45-58.

    • Entries whose embedding length is not 2048 bytes (bf16, 1024 dimensions) are discarded.
    • The overall wait limit of the hydrator is 300ms.
    const MH_GET_TIMEOUT: Duration = Duration::from_millis(300);
    const MAX_QUERIES: usize = 16;
    const EMBEDDING_BYTES: usize = 1024 * 2;
    
  • The test name says this selection rule "matches training". We read this to mean that the training data picks queries by the same rule inferred — same file, lines 73-89.

    • The test function name is select_matches_training_and_drops_text.
  • The selected list goes into the user context of the Phoenix request as a new field verified — recsys.proto.

    • The field is UserContext.recent_search_queries = 21, and build_user_context in util/phoenix_request.rs fills it.
    • The proto RecentSearchQueries was introduced earlier, in the 2026-10-17 commit (Gen4+44), with no code using it.
  • The switch is off by default verified — params/param.rs:727-732.

    • The switch is named EnableRecentSearchQueriesHydration, and for logged-out viewers (user_id == 0) it does not run even when on.
    • The hydrator was added to both For You's PhoenixCandidatePipeline and the score-only PhoenixScoresPipeline.
  • The Phoenix training code in this commit has no change that reads the search queries in the user context. It is unknown whether the model has already been trained with this feature inferred.

    • The training batch originally has a search_query_embeddings field, but this field has been used as the query embedding of search surface requests. This was confirmed at the 2026-09-01 commit (Gen4+13).

What we learnedOther changes

  • In shadow traffic (requests copied to an experiment cluster without being used in the actual response), the ratio sent to the Experiment18Fou cluster dropped from 0.5 to 0.3 verified — params/param.rs:101.
  • A funnel trace side effect, which records via Kafka where in the pipeline ads were dropped, was introduced as off by default verified — side_effects/funnel_trace_side_effect.rs.
    • The switch is EnableAdsFunnelTrace (param.rs lines 867-872). The blender's non-selected list also now holds the ads actually dropped instead of a placeholder.
  • A few fields were added to the Phoenix proto, but no code in home-mixer fills them verified — recsys.proto.
    • They are diversityWeight in the page decoding parameters, a history URL embedding request flag, the action CLIENT_TWEET_VIDEO_SESSION = 111, the retrieval dataset IMMERSIVE_32FAV_VIDEO_14_TO_30_DAY, and url_domain for ads.
  • The Phoenix training code gained an ads auxiliary value head (content view, add to cart) and a history URL embedding loader verified — models/value_heads.py.
    • The auxiliary head is off because the default is aux_value_head_weights="". This part was not read line by line.
  • The visibility-filtering changes are mostly a restructuring of the hydration layer and rule representation and a cleanup of notification rules inferred. We found no place where what is filtered from the home timeline changed, but we did not read every hunk.

Canon update In services/x.md ## Summary, the reference commit was raised to 07d159b. A sentence on the recent-search-queries path was added to the intro of ### Ranker input features and SID reconstruction, and a bullet group of evidence was added to the same section. A 07d159b row was added to the git log check sentence and commit table in ## Sources and to the change log summary table.

Why it matters X has finished preparing to use search, an off-feed action, as a user input of the feed ranker. The evidence is that the store client, hydrator, proto field, and request assembly all arrived in one commit, and only the switch remains. Whether the training side already uses this feature is not confirmed by public code, so we watch for the point when it is switched on in the cron mirror.

↑ Contents

2Reasoning of an LLM recommendation model compressed into latent tokens — Kuaishou

Background Kuaishou has used an approach (Think-then-Answer) in its OneRec (generative recommendation model) family in which an LLM backbone reasons about user interests in sentences before answering. Generating reasoning sentences every time greatly increases serving cost. This paper compresses the reasoning sentences into a few trainable latent tokens, aiming to get the benefit of reasoning without generating sentences.

What we learnedA. It reports better results than explicit reasoning without reasoning sentences, with at least 17× the throughput

  • The abstract says SID@64 is 17.44% higher than the Think variant using explicit reasoning and 9.33% higher than the No-Think variant verified — arXiv 2610.30675.
    • SID@64 reads as the share of cases where the correct answer falls within the top 64 generated Semantic IDs (identifiers that represent an item as a sequence of semantic tokens).
  • It says online inference throughput is at least 17× higher verified — same abstract.
  • It says an online A/B test on a local-services ads surface obtained an estimated revenue of +9.6% over the OneRec and OneReason baselines verified — same abstract.

Canon update The canon was not changed because this is not directly tied to a tracked service. One line of additional evidence was added to the ### Spread of LLM-native ranking — who follows after GenRec thread in radar.md.

Why it matters This is the second statement that LLM recommendation in the serving path is shifting toward "how cheaply can inference be done". The evidence is that the 2026-10-19 Spotify statement dealt with serving cost, and this paper also puts throughput forward as its main result. However, the surface is local-services ads and it is unknown whether this carries over to feeds, so it is kept in the radar.

↑ Contents

Radar

↑ Contents

What to check next

↑ Contents

Lookup status

  • X: There was 1 new commit (07d159b) in xai-org/x-algorithm. Releases were not checked.
  • Meta: The latest post in the engineering.fb.com RSS is dated 2026-10-19 and was already checked. ai.meta.com/blog and transparency.meta.com were not checked this time.
  • Netflix: The latest post in the RSS is dated 2026-10-22 (Single-tenant Titus) and was already checked. research.netflix.com/publications was not checked.
  • arXiv cs.IR: 30 entries were parsed, and submissions of 2026-10-22 were newly included. 1 passed (OneLatent). LinkedIn PAIR was rejected because it is Premium people-search retrieval with offline metrics only.
  • WebSearch cross-checking was not done this time.

↑ Contents