小红书精读:Think-to-Personalize: Unifying Reasoning and Retrieval for User-Centric Personalized Dense Retrieval

less than 1 minute read

检索之前先想一步?TTP把推理揉进召回✨

各位算法同学们,过去做个性化检索都是把用户历史拼进特征再学个向量,但有没有想过:与其让模型自己从嘈杂行为里猜意图,不如让它先把“这人到底想买啥”推理出来,再拿这个推理结果去检索?今天这篇美团和科大的工作就把这件事做成了端到端,线上订单量还涨了。

📄 Think-to-Personalize: Unifying Reasoning and Retrieval for User-Centric Personalized Dense Retrieval

🔧 核心创新是把用户历史序列和当前query一起喂给LLM,让它先输出一个意图增强query,再取向量做检索,整个过程共享同一个编码器,推理和召回被绑在一起优化。 🔧 训练分两段:第一段SFT用生成损失加InfoNCE对比损失做冷启动,让模型学会格式和基本检索能力;第二段用GRPO做强化学习,奖励函数不只看格式和长度,还专门设计了检索奖励,衡量重写后的query相对原query在正样本得分和负样本区分度上的增益。 🔧 避免过个性化的坑:数据构造时用大模型生成5个候选重写,再用重排器按与真实购买item的相关性增益过滤,只保留收益为正的样本,并且保留一部分“不改写”的样本,让模型学会什么时候该收手。

📊 在自建数据集上,TTP在General上Recall@20达到47.52%,比最强的隐式建模基线MAPs高1.76%;在Broad这种模糊query场景,Recall@20比Qwen-Embedding高7.47%,说明它对意图消歧特别有效。 📊 在公有Amazon和KuaiSearch上也是全面领先,Amazon的HR@20到90.17%,KuaiSearch的HR@20到21.94%,都比Decoupled-Stage这种拆成两段的强。 📈 线上A/B测试订单量提升0.46%,虽然数字不大,但检索场景这种量级已经能说明问题了。

总结一下,这个思路适合那些query短、历史行为丰富的电商/本地生活场景。注意点是推理会带来额外延迟,论文里加了长度惩罚来控制输出,落地时得评估线上时延;另外RL阶段的检索奖励依赖SFT模型打分,如果SFT模型本身很拉,奖励信号也不可信,所以先得把第一段训扎实。

图 1

原文:AlphaXiv

Updated: