SetMIR: set prediction cuts ANN calls 33% and lifts Snap DPA CVR 3.11%

SetMIR: Multi-Interest Retrieval as Set Prediction

Xiaodong Liu, Congfei Zhang, Hsiang-wei Chao, Siman Wang, Xiao Bai, Tong Zhao, Jingxiao Ma, Wen Zhang, Zhe Liu, Shantanu Aggarwal, Di Huang, William Leach, Yunzhi Zhou, Yajun Wang, Jinchao Li, Yu Zhang

cs.IR

2026-08-31

SetMIR treats multi-interest retrieval as set prediction, issuing 6.70 ANN calls on average. Online CVR rises 3.11% over Snap DPA's current mix.

What problem this solves

Industrial retrieval is usually a two-tower ANN: one user vector, one item vector, a few thousand candidates. One vector cannot hold streetwear, baby clothes, and skincare from the same week. Multi-interest retrieval issues K user vectors, then collapses onto a few duplicated interests and still dispatches all K ANN calls even when some of them are empty.

Snap's SetMIR treats multi-interest retrieval as set prediction. A fixed bank of K learnable queries produces a variable-size set. Hungarian matching assigns targets one-to-one at train time; a presence head decides how many ANN calls to issue at serve time.

Method

A 40-event history is looked up in frozen content embeddings, then given positional encodings and a learned event-type embedding. The event scale α starts at 0, so the model lives in content space first and only later mixes in click / add-to-cart / purchase intensity. A 2-layer transformer encodes history; K=10 queries cross-attend through a 6-layer decoder. Each query emits an L2-normalized retrieval vector and a sigmoid presence score. Hidden size is 128, about 33M parameters.

Targets are high-intent items (purchase > add-to-cart > swipe-up) in a future 3-day window, deduplicated and capped at 15. Hungarian matching pairs queries to targets by embedding dot product plus the presence logit. Matched queries take in-batch InfoNCE; unmatched queries only learn "absent." A margin-0.3 repulsion penalizes active queries that stay too close. At inference, presence threshold τ=0.3 drops idle queries, cosine NMS at 0.9 drops near-duplicates, each survivor retrieves ⌈N/K̃⌉ items, and scores merge by max.

Results

Offline eval is Snap Dynamic Product Ads logs, about 1M test users and 5.3M target products. Metrics are normalized so SetMIR equals 100%. Baselines always dispatch K=10.

MethodANN callsR@1R@10MRR
MIND10.0045.7%52.9%44.4%
ComiRec-SA10.0067.4%89.8%80.0%
KuaiFormer10.0043.0%52.0%42.2%
SetMIR (argmax)2.1662.1%63.5%56.4%
SetMIR6.70100%100%100%

ComiRec-SA already matches SetMIR at R@100 (99.9%) and still lags at the head. Replacing Hungarian matching with argmax collapses to about two live interests and 63.5% of R@10. Dropping the presence loss raises calls to 8.23 and cuts R@10 to 91.4%. Dropping diversity raises mean query cosine from 0.298 to 0.321. Scaling K from 1 to 10 lifts R@10 to 155% of the single-vector run; K=7 already reaches 99.8% of K=10. Presence gating alone cuts 10 calls to 7.73 and slightly raises R@1; NMS then lands at 6.70, 0.8% R@10 below full dispatch.

Online, SetMIR is added as a new source with the global quota unchanged: CVR +3.11%, CTR +0.21% versus the current mix. Inside the treatment arm, against item-to-item retrieval with the same embeddings, index, and quota, CTR is +44% and CVR is +51%.

Why it matters

For teams already running multi-query ANN, interest collapse is handled in the objective rather than by an extra regularizer: one-to-one matching plus an explicit absence target. The presence head spends budget per request and keeps recall after dropping 33% of calls. The architecture is close to Kuaishou's KuaiFormer; the gap is the supervision, not a deeper transformer.

The item tower is frozen, so this compares interest extractors, not end-to-end two-towers. Offline numbers are relative by company policy, so they do not translate to absolute recall against published tables.

Limitations

There is no standalone limitations section. Visible gaps: frozen item embeddings put MIND/DCM on a different track; DCM and KuaiFormer are reimplemented from papers without official code; the A/B ran about a week with undisclosed traffic; an unmatched query means the interest did not appear in the future window, not that the user lacks it. NMS at 0.9 is loose, so diversity is mostly a training effect.

Terms

Source

What people are saying

Related papers

All paper explainers