This is a short index for a three-part series on why social recommendation keeps underperforming the item-recommendation playbook, and what to do about it. The series comes down to one idea, in three posts. This page is that idea, with links.
The idea
Item recommendation runs on a bipartite graph, users on one side, items on the other, and that topology fixes every node’s role. Social recommendation runs on a unipartite graph, where the same person is the viewer in one edge and the candidate in another. That single difference is the root cause of most of what goes wrong when you port the item-rec machinery (shared embeddings, attention, sequence models) onto people: it pushes the viewer–candidate relevance matrix toward high effective rank, which the low-rank operators underlying that machinery cannot express, and it puts the dominant signal, triadic closure, in a motif the bipartite topology cannot contain at all. The response the series builds is to stop giving each candidate one fixed vector and instead generate the viewer’s side of the comparison from the viewer’s own structure, a per-viewer projection operator; it does not raise the rank ceiling, and the real question is how to do it at a billion users without the cost exploding.
The three posts
- Part I: Item recommendation is bipartite. Social recommendation isn’t., the diagnosis. Why the topology difference breaks the playbook, why piling on attention cannot help (attention is a rank-capped bilinear operator), and the two-axis defense against the obvious objection.
- Part II: How to tell whether your recommendation problem is low-rank, the rigor. How to measure rank without fooling yourself (algebraic rank is useless; the two confounds are sparsity and popularity; there is one figure that settles it), and why even proving “high-rank” leaves you inside a frame too small for the problem.
- Part III: Viewer-conditioned projection at billion scale, the build. The candidate embedding as a structural fingerprint, the per-viewer operator as a low-rank residual, the hypernetwork that generates it, and the query-side trick that makes it serve for free, plus the honest novelty map and the dual-attention defense.
The ideas that hold it together
- The candidate embedding is a noun in item recommendation; it has to be a verb in social recommendation.
- The same person is a different person to every viewer.
- Attention mixes structure, it doesn’t discover it. You cannot out-rank a rank cap by adding another head.
- The dominant social signal, triadic closure, lives in a motif a bipartite graph cannot contain.
- Viewer-conditioned projection is a middle floor, not the endpoint. It does not replace graph features.
Where it stops
The honest claim is narrow. Per-viewer projection is not a new mechanism, it goes back to McAuley and colleagues, in 2015, and it is not a way around the rank ceiling either; what the unipartite topology forces is asymmetry, per-viewer projection is one way to get it, and the query-side factorization is what makes that way affordable at scale. What is left is the evidence: the metric-versus-dimension curve, and the Adamic-Adar-on-top-of-attention ablation, on a real graph. That part is an experiment, and experiments, unlike arguments, are easy to read.