37 slides, read slide by slide — a paragraph each, with the sources linked in the text · the deck · present it
Recommendation, search and conversation were built as three products by three communities. Underneath, each selects a few items from a catalogue and puts them in order, and in real systems the three stacks are becoming one. That is the whole thesis; the rest of the deck is what it costs and what it gets wrong. The evidence comes from two places at once: Recombee, a recommendation engine serving hundreds of catalogues, and RecombeeLab at CTU FIT, where the research behind it is done.
Neural networks, then AutoML, then recommender systems and information retrieval: one question the whole way, how a system decides what a person should see next. I teach at CTU FIT and co-founded Recombee, so I live with both halves of the tension in this talk, academic evaluation on one side and production budgets on the other. The lab's 2025 retrospective is a good map of the work referred to below.
Four eras, defined by what the system could score. Boolean retrieval matched documents without ranking them. BM25 and PageRank ordered them by term statistics and links. word2vec and BERT turned words and documents into vectors, so similarity became geometry. Retrieval-augmented generation retrieves evidence and writes an answer over it. The last step did not replace retrieval; it wrapped it. In 2026 a generated answer still stands on a ranked list.
A search box, a personalised homepage and an assistant all return numbered lists; the assistant only wraps a sentence around its list. The claim is deliberately modest: ranking is the shared subroutine, while objectives, evaluation and economics differ, and the second half of the talk is about those differences. Alipay already serves search and recommendation from one model, treating recommendation as search with an empty query; BLaIR feeds one table of item vectors to both; Spotify's GLIDE answers a conversational instruction with a ranked list of catalogue items.
Four lineages, four signals. Classical IR added term statistics, from Luhn to Salton's vector space model and BM25. Web search added links, PageRank and HITS. Recommenders added user–item behaviour: GroupLens, Amazon's item-to-item filtering, matrix factorization. Conversation added learned sequence context, from ELIZA through seq2seq and the Transformer to RAG. Salton is the hinge: documents and queries became vectors in 1975, but the vectors were counted. Once they were learned, four decades later, all four lineages shared the same machinery.
Classical retrieval scores a document by TF-IDF or BM25, compares by cosine similarity, and mixes signals with a hand-set weight. Learning to rank turns those signals into features of a query–document pair and fits the weights from relevance labels; in its simplest, pointwise form it is the linear regression you already know. Two stages appear here and never leave: a cheap first stage that must not miss, and a learned second stage that reorders the top-k it was given. A reranker cannot recover what the first stage missed, which is why dense retrieval later made the first stage learned too.
Linear regression, gradient-boosted trees such as LambdaMART, or a neural network: that choice gets the arguments. The loss function and the labels decide what the model can learn at all. An itemwise cross-entropy learns one relevance probability from yes/no judgements; a pairwise loss such as RankNet learns only which of two documents comes first; a listwise loss such as ListNet learns a distribution over the whole list, closest to the metrics people report. Read the training-data column first: click-derived labels carry position and exposure bias whichever model consumes them, and the survey of biases maps where they enter.
Two ways to rank with a Transformer. A cross-encoder reads query and document together and emits one score; it is the most accurate thing you can do and the least deployable, because every pair costs a full pass: Sentence-BERT puts the most similar pair among 10,000 sentences at about 65 GPU hours. ColBERT encodes the two sides separately into one vector per token and scores by late interaction, so documents are encoded once, in advance, and a query pays only for cheap comparisons. Precompute the catalogue side and keep the per-request work small: recommenders had done that for years, and it is the mechanical reason the two stacks could share machinery. The same backbone can also feed a classic inverted index (SPLADE) or emit dense, sparse and multi-vector representations at once (BGE M3).
Query relevance from ColBERT, user preference from user and item vectors learned from interactions, one score: ColBERT(q, d) + λ · cos(user, d), with λ tuned on held-out data. Recommendation retrieves the items nearest to the user vector; search shifts the same vector with a query first. Alipay trained one search-and-recommendation model across seven domains; BLaIR feeds one frozen item table into sequential recommendation, collaborative filtering and product search; Pinterest pretrains a 20-billion-parameter model of user activity once and fine-tunes it per surface (PinFM). One qualification: this is logged-in product search. Public web search has no profile and stricter privacy.
Four predictions in a row: complete the typed prefix (next-token prediction, itself a recommender of queries), understand the intent with a contextual encoder, retrieve lexical and semantic candidates side by side (BM25 for exact codes, ColBERT for paraphrases), and compose an answer over the evidence (RAG). Every link in that chain is a model that can be measured and replaced on its own. Grounding is not correctness: a grounded answer can be checked, which is all it promises, and the RAG survey lists how the fusion goes wrong.
The cost of a language model on the request path, in arithmetic. Llama 2 70B in 16-bit is 140 GB of weights before the first token, and its key-value cache holds about 320 KiB per token, more than a gigabyte for one 4,096-token request. Prefill attention grows with the square of the prompt; FlashAttention removes the memory traffic, not the arithmetic. Decode writes one token per sequential step, so throughput comes from batching at the price of tail latency, which Orca schedules step by step and PagedAttention feeds from a paged cache, 2–4× the throughput of earlier systems. 4-bit weights cut the footprint to 35 GB at some quantisation error; speculative decoding saves steps only when a small draft model guesses well.
Three cases where the right structure buys more than parameters. At Pinterest, a 0.6-billion-parameter model with its own encoder for semantic IDs beats a 4-billion one without (PrefixMem). SPLADE, a sparse retriever on a classic inverted index, edges out its dense sibling trained from the same BERT, 0.322 against 0.312 MRR@10. Our CompresSAE projects dense embeddings into a wide, sparsely activated space: 12× fewer parameters at near-uncompressed quality, with a fast mode in the sparse space and an exact one in the reconstructed dense space; code on GitHub. Sparsity as a design decision rather than a compression applied afterwards, because at scale dense embeddings become one of the most expensive parts of the system.
Three signal families. Content-based methods match item attributes to a profile: they can recommend a brand-new item, and they repeat what you already chose. Collaborative filtering learns from what people do, finds non-obvious connections, and is blind to any item or user without history. The neural hybrid embeds history, items and context, retrieves candidates and ranks them, the same two stages as search with the person's history in place of the query; GRU4Rec, SASRec and BERT4Rec put item identifiers where words used to be, and DLRM still ranks in much of production. Which family wins is decided by the data the catalogue has: A-LLMRec measured language and image models beating collaborative filtering on new items and losing to it on items with history.
One classical algorithm in full, so that collaborative filtering is not a black box later. Compare users by the overlap of their histories, take the most similar as a neighbourhood, add their similarity-weighted opinions to the person's baseline, recommend what they have not seen. It is the 1994 GroupLens method; Amazon's item-to-item variant flips the table to "people who bought this also bought", which is what large shops actually run because item relationships change slowly. It needs no item text at all, and it goes blind exactly where there is no history to compare, measured in 2002. Its learned, regularised descendant is the linear model of slide 24, EASE.
Live on Recomflix, a public film catalogue on the Recombee engine. Pick a title and inspect similar items; switch user profiles and watch the personalised rows change; add one interaction and watch the ranking move. Then type "quiet European crime drama" and compare what semantic search finds with an exact-title query. Behavioural history drives the rows, typed text expresses immediate intent, and both run against the same catalogue vectors: slide 9, made tangible. Item segments, groups of similar items discovered from the catalogue and named, can be searched and recommended the same way.
Every control a recommender offers today acts around the model's picture of you, not on it. Filters, boosters and business rules act on the candidate list after scoring. Prompting a language-model recommender such as P5 acts on a text interface where the collaborative signal is weak. Spotify's GLIDE instructs the generator over semantic IDs, and in a 21-day A/B test lifted non-habitual podcast streams by 5.4 % and new-show discovery by 14.3 %. Profile editors, likes and critiquing act on the interface again. The learned user vector, what the system believes about you, nobody can read or edit; the only way to move it has been to click and wait. The next four slides move it with a sentence.
Ask a language model for a recommendation and it names an item with no catalogue ID, a stale price, no knowledge of your history unless it is in the prompt, no collaborative signal, no business rules, and a fluent rationale that hides all of that. A-LLMRec measured the core loss: on items with history, a language model without collaborative knowledge loses to plain matrix factorization, because a prompt cannot see what thousands of similar users did. So separate the jobs. The language model interprets the request; the recommender retrieves and ranks valid IDs from the live catalogue; the language model explains what came back, RAG with a recommender as the source of truth. TIGER is the other route: generate semantic IDs under a prefix tree of real items, so the model cannot invent one. Let the model choose the words, not the inventory.
The proof of concept on Recomflix. The language model parses requests and follow-ups into preference updates and explains the returned set; the recommender retrieves and ranks the live catalogue and returns canonical item IDs with metadata; the interface renders only what the recommender returned. Item hallucination is prevented by construction at the UI boundary, the separation GLIDE runs at Spotify scale. What it does not prevent: intent parsing and generated explanations can still be wrong, which is why judges and explanations are treated as engineering in the alignment section. Ask for a film that does not exist and watch it decline.
The offline half of Jaroslav Hradil's 2026 master's thesis at CTU FIT, supervised by Rodrigo Alves and computed on Recombee infrastructure. Take any collaborative filter, ALS, our ELSA, LightGCN or a two-tower model, as two functions: encode interactions to a dense user vector, decode a vector to item scores. A dense vector is polysemantic; one coordinate means science fiction and documentary and adventure at once. A TopK sparse autoencoder, two to eight times wider with only 16 or 32 activations kept, unfolds it into coordinates that mostly mean one thing each, the trick that reads the internals of language models, applied to a recommender. Nothing is retrained, and the reconstruction check shows the sparse code loses little ranking quality, which is the licence to do this at all. The same tool on item vectors is our CompresSAE.
The online half. For every item a language model writes five short requests that describe it without naming it, "animated buddy adventure for all ages"; three train a two-layer mapper from the text vector (Qwen3-Embedding-0.6B) to the item's sparse code with InfoNCE, the contrastive objective behind dense retrieval and CLIP; the other two validate and test. Online: embed the request, map it to a direction, blend (1 − α) · user + α · δ, re-apply TopK, decode. On MIND news with ELSA the requested item's mean reciprocal rank rises from 0.042 to 0.324, roughly from 24th place to 3rd; on MovieLens-25M with ALS it doubles. Steering toward a random item lowers the target, so the effect is meaning, not mixing; without the sparse autoencoder the same mapper reaches 0.144 instead of 0.235. Limits: offline, additive requests, paraphrases of known items. The recommender is steered by the machinery of semantic search: convergence inside our own work.
Kuaishou states its recommender's envelope in the OneRec report: more than 400,000 requests per second under 500 milliseconds; a typical synchronous surface has about 100 milliseconds end to end for retrieval, features, ranking, constraints and the network. Now put a language model on that path. 100 million users, three sessions and five pages a day, is 1.5 billion ranking calls; at 1,000 tokens a call and ten cents per million tokens, generation alone is $150,000 a day, before retrieval and before any cache hit. A dot product costs microseconds. Cost per request is a learning objective, not an operations detail; it sits among the objectives of the recommendation problem. Self-hosting changes the numbers, not the shape.
Two systems claim a scaling law for recommendation; read their bills. Meta's HSTU: 1.5 trillion parameters, three orders of magnitude more compute than the prior state of the art, a 12.4 % improvement in online A/B metrics, affordable because M-FALCON serves a 285× more complex model at 1.5–3× throughput. Kuaishou's OneRec: one end-to-end model replacing the four-stage cascade at ten times its arithmetic, App Stay Time up 0.54 % and 1.24 %, and operating expense at 10.6 % of the old pipeline, because accelerator utilisation rose to 23.7 % in training and 28.8 % in inference where the cascade had left it idle. The saving came from using the hardware, not from a smarter model, and neither paper reports what the rebuild cost. Meituan's MTGR and Xiaohongshu's generative ranking carry their own accounting.
The person's history is the expensive part of every request, so cache it, share it, never encode it twice. MTServe keeps user state in a hierarchical key-value cache across GPU and host memory: up to 3.1× faster at a hit ratio above 98.5 %. Pinterest's UniPinRec shares one encoding between retrieval and ranking: ranking passes more than 3× faster, end-to-end latency down 11.1 %. PinFM deduplicates attention over the shared user sequence: 600 % more serving throughput. Douyin replaces history self-attention with linear target-to-history cross-attention and batches by request, so 10,000-event histories run at full traffic with 77–84 % less bandwidth. All of it builds on FlashAttention and PagedAttention. At scale a modelling win is realised only together with a serving win; read the systems section of these papers first.
Netflix's EASE is a dense item–item matrix in closed form, the strongest simple baseline in the field, and it never starts on a large catalogue: ten million items squared at 32 bits is about 400 terabytes. Our ELSA factorises that layer into a low-rank plus sparse part, so memory is linear in the catalogue and the matrix is never built; it is more accurate than EASE, validated at industrial scale, in production for tens of millions of items, with SANSA as its deployed successor. The line runs from the field's reproducibility crisis: of 18 neural recommenders in the 2019 study, 7 could be reproduced and 6 of those lost to tuned simple baselines, and the 2026 study of diffusion recommenders found 25 % of results reproducible and a 25-year-old ItemKNN matching the newest models. Linear models are hard to overfit; the SLIM → EASE → ELSA line is explained here. Keep a strong linear baseline in every comparison.
Our RecSys 2024 paper, beeFormer, with code on GitHub. A sentence Transformer encodes each item's text; the ELSA objective reconstructs users' interaction vectors through an item–item operator built from those text vectors; and the gradient flows back into the encoder. The result is one encoder whose vectors know what an item is and what people do with it: cold-start and zero-shot recommendation, transfer across domains, train on books and recommend films. ELSA stopped being only a model and became a loss you can train something else with. Industrial labs reached the same pattern at language-model scale, Xiaohongshu's NoteLLM and Recformer, and BLaIR shows why it is needed: an off-the-shelf text embedding knows similarity of descriptions, not of consumption.
Tomáš Laurin's 2026 master's thesis at CTU FIT names the backbone isolation problem: judged inside a whole pipeline, an encoder's merit is confounded with the ranker, the budget and the split, so two teams comparing encoders disagree and neither is wrong. REEF holds everything but the encoder fixed: eight encoders, three catalogues, five scenarios, 120 cells. Fine-tuning the multimodal BGE-M3 + SigLIP2 encoder on interactions lifts Recall@10 by 15.9 % on MovieLens, 28.7 % on H&M and 27.3 % on Amazon, more at cold start; LoRA beat full fine-tuning everywhere, and on Amazon full fine-tuning was worse than a frozen encoder. As the objective, ELSA beat BPR, InfoNCE, Jaccard and PMI: a linear loss from 2022 won. The negative result stays in: four of six cross-catalogue transfers sat at the random floor. Snap's GRID handbook reached the same diagnosis for generative recommenders.
Alignment for an engineer: five properties, each a question, a number and a component. Controllable, can the user move the system: the rank of the requested item; steering by language (slides 19–20). Safe, what does it let through: harmful-query accuracy, leakage and policy tests; SHIELD (28). Fair exposure, who gets seen: exposure share of items and suppliers; minimum-exposure guarantees and re-ranking (29). Calibrated, does my four mean your four: rating-level consistency across users; user-specific discretisation of a shared scale (The Stars Align). Evaluable, is the judge better than the proxy: correlation with A/B outcomes; behaviourally aligned judges (30). It comes after the cost section on purpose: the cheaper and more unified the stack, the more power one ranking decision has. Ask a vendor for the five numbers.
Keyword blocklists protected marketplaces for a decade because keyword search could only find what the words said. Semantic retrieval (DPR, ColBERT) understands "glass tubing" and returns the laboratory equipment; a harmful request phrased without a blocked word is answered. Merge the stacks and you merge the attack surface. SHIELD, from our lab at UMAP 2025, generates harmful and sensitive queries category by category with a language model, filters them with a reward model for realism, and trains a classifier; on a marketplace set of 17,170 harmful and 8,871 sensitive queries, BM25 similarity reaches 93.2 % accuracy, semantic embeddings 96.5 %, the fine-tuned MoralBERT 98.4 %. The dataset is the reusable part. Upgrade search to understand meaning, and upgrade the safety layer with it.
A recommender learns only from what it showed: recommend, click, retrain, and the loop amplifies popularity, shrinks catalogue coverage and homogenises profiles. Mansoury's simulation shows the minority user group losing the most precision; the bias survey names seven biases entering at data, model and results. Exposure is the resource the loop allocates, and it can be constrained at re-ranking time: xQuAD, built to diversify web search, runs unchanged inside a recommender, as does fair top-k ranking, so the post-processing slot is shared across interfaces. Our minimum item exposure guarantees (paper) give every eligible item an exposure floor with a measured relevance trade-off; Zhu et al. treat the same loop at the interaction level.
Used zero-shot, a language-model judge "convincingly argues for both positive and negative user engagement outcomes on the exact same item with identical evidence": bidirectional rationalisation, now a named failure mode. Preference optimisation over paired correct and counterfactual rationales lifts MacroF1 on real homepage logs by 32.19 % and matches the production feature-engineered model. A simulator earns trust the same way: ContextSim is scored by its correlation with 55 real A/B experiments, not by its plausibility. Behind this sits the older finding that offline numbers are hypotheses: weak baselines in 2019, irreproducible results in 2026, and at Pinterest a 14.8 % offline gain that became about 1 % online. Anything between the offline number and the A/B test has to be calibrated against real outcomes before it is allowed to decide.
Three European obligations, mapped onto the alignment table. Digital Services Act Article 27: state the main parameters of the recommender in plain language and let users influence them; the controllable row, steering by language. Article 38: very large platforms must offer one option not based on profiling; exposure guarantees and a non-personalised ranking path. AI Act Article 50: transparency for AI-generated content; grounding, cited evidence, an audit trail. Regulation is arriving as a list of properties, and it is the engineering table four slides ago. Dates and thresholds change; the mapping from obligation to component does not.
Five agent-commerce protocols in nine months, from payment networks, a search company and a model provider, settling on "discover in the chat, transact on the merchant site". What changed: an agent, not a person, reads the ranked list, and structured attributes with current inventory make items easier to retrieve, compare and safely transact. What did not: the catalogue still has to be retrieved from, ranked and constrained, and the winner is still the best-ranked item, for a new kind of requester. The survey of LLM agents for recommendation and search gives the loop, retrieve, rank, constrain, act, audit; TIGER's constrained decoding is the boundary that keeps a generative client inside the catalogue. Machine-readable catalogues are Jakub Klímek's keynote on semantic interoperability seen from inside the product; the guard rails are Herwig Mannaert's.
The portfolio on the talk's three axes, every item already used as evidence above. Accuracy: REEF, encoders compared with everything else held still, Recall@10 up 16–29 %. Affordability: ELSA and CompresSAE, linear and sparse by design, more accurate than EASE at linear cost, embeddings with 12× fewer parameters. Alignment: SHIELD and language steering, 98.4 % harmful-query accuracy, the requested item from about 24th to about 3rd. The figure sorts the wider work into sparsity and scale, representation, trustworthiness and evaluation; the publication list and github.com/recombee have the rest. Frontier labs work on being better. We have spent ten years on being good enough within a budget somebody will approve, a different question, and the one more people have.
Our Head of Research's direction, "conversational recommender systems that are controllable, evaluable and safe", mapped word by word onto what the deck has shown, so that it is not a wish list. Controllable: steering by language, constrained decoding, business rules as a query language. Evaluable: REEF, offline-to-online correlation, behaviourally aligned judges. Safe: SHIELD, exposure guarantees, and an agent interface over the Model Context Protocol that binds identity to the credential, so an agent cannot ask about another user. The two theses in this deck, Hradil's steering and Laurin's REEF, are the first steps, both defended in May 2026. One step further: recommender systems and reasoning agents in agent-to-agent marketplaces, where ranking happens on both sides. The agents survey is the map, and the 2025 retrospective has the direction in the lab's own words.
Twenty-nine peer-reviewed papers in five years, one pill per paper, coloured by the thread of this talk it belongs to. 2022: ELSA and RepSys at RecSys. 2023: explainable linear autoencoders at UMAP, inductive matrix completion at AAAI, its uncertainty-adjusted GNN form at RecSys, offline-to-online evaluation at EvalRS at KDD. 2024: beeFormer at RecSys, exposure guarantees in Expert Systems with Applications, regionalisation-based CF in ACM TSAS, uncertainty-adjusted MF in IEEE TNNLS. 2025: CompresSAE, SAGEA, a linear next-basket model and uncertainty estimation at RecSys, linear autoencoders at scale in ACM TORS, Conv4Rec in IEEE TNNLS, the harmful-query dataset at UMAP, email outreach at CIKM, triplet analysis in Expert Systems with Applications, news analytics at the INRA workshop at RecSys. 2026: rating calibration, language embeddings meeting shallow autoencoders and artist catalogs for cold-start music at UMAP, sparse representations from interactions at WWW, steerable collaborative filtering at the IntRS workshop, sparse autoencoders as semantic domain adapters and three demos at RecSys, explanations from counterfactual edits and product de-duplication at CIKM. Green and purple, scale and representation, dominate the early years; red and blue, alignment and steering, the recent ones. The drift is the previous slide, already under way.
Thanks to Recombee Research and the Python models team, Rodrigo Alves, Head of Research, and Petr Kasalický, Head of Applied Science, and to the Recombee co-founders for supporting open science. Where to continue: the publications, the code, industrial theses and PhD positions at RecombeeLab, CTU FIT (research@recombee.com), and backend and infrastructure roles at Recombee (career@recombee.com). The lab's method depends on people who bring a production question to a paper and a paper back to production; the two theses in this deck are what that looks like.
This deck was made in Slaidy, a slide editor in one HTML file where the deck stays markdown and SVG, and this page was published from it. RecSys PBook is a practical recommender-systems book personalised by a recommender, to be presented at RecSys 2026 in Minneapolis, where Recombee has five papers accepted. AIDetem.cz and Tiny are chatbots for teachers and children; EduMatch is an agentic job board matching students with companies; Research Coach and Startup Coach are language-model assistants for student research and startups; AutoResearch automates research pipelines. Several are this talk's ideas applied elsewhere. If one intersects your work, find me after the lecture.