美团搜索粗排优化的探索与实践
2025.09.26 12:22浏览量:3简介:本文深入探讨美团搜索粗排阶段的优化策略与实践经验,从模型优化、特征工程到工程架构,系统阐述如何提升粗排效率与准确性。
引言
在美团搜索场景中,用户请求量日均数亿次,如何在海量商品中快速筛选出与用户需求高度匹配的候选集,是粗排阶段的核心目标。粗排作为搜索链路的首个排序环节,直接影响后续精排的效率与最终结果质量。本文将结合美团搜索团队在粗排优化中的探索与实践,从模型优化、特征工程、工程架构三个维度展开论述,为行业提供可复用的优化思路。
一、粗排阶段的核心挑战与优化目标
1.1 粗排的定位与核心矛盾
粗排阶段位于搜索链路的最前端,需在毫秒级时间内从千万级商品库中筛选出千级候选集供精排使用。其核心矛盾在于:
- 效率与效果的平衡:模型复杂度提升可提高排序准确性,但会增加计算延迟,影响用户体验。
- 特征稀疏性问题:粗排阶段可用的用户行为数据、商品特征较精排更少,导致模型对长尾需求的覆盖能力不足。
- 动态场景适配:美团搜索覆盖餐饮、酒店、旅游等多业务场景,不同场景下用户意图差异显著,需动态调整粗排策略。
1.2 优化目标量化
美团搜索团队将粗排优化目标拆解为三个维度:
- 召回率(Recall):粗排返回的候选集覆盖精排阶段Top-K结果的占比,目标≥90%。
- 计算效率(QPS):单节点每秒处理请求数,目标≥5000 QPS。
- 特征覆盖率:粗排模型可用的特征数量,目标≥200维。
二、模型优化:从传统到深度学习的演进
2.1 传统模型的局限性
早期美团粗排采用逻辑回归(LR)模型,其优势在于计算效率高,但存在以下问题:
- 特征交叉能力弱:无法自动学习高阶特征组合,对复杂用户意图的建模能力不足。
- 冷启动问题:新商品或新用户因历史行为数据缺失,排序质量下降。
示例代码(LR模型特征处理):
def lr_feature_processing(user_features, item_features):# 一阶特征拼接features = []features.extend(user_features['age'], user_features['gender'])features.extend(item_features['price'], item_features['category'])# 手动交叉特征(需预先定义)if user_features['gender'] == 'male' and item_features['category'] == 'electronics':features.append(1)else:features.append(0)return features
2.2 深度学习模型的引入
为解决上述问题,美团搜索团队逐步将粗排模型升级为深度学习架构,主要演进路径如下:
2.2.1 DNN双塔模型
- 结构:用户特征与商品特征分别通过独立DNN网络编码,最后通过点积或余弦相似度计算匹配分数。
- 优势:计算效率高,可通过预计算用户向量实现实时召回。
- 优化点:引入用户历史行为序列的Attention机制,提升对动态意图的建模能力。
模型结构示例:
class DualTowerModel(tf.keras.Model):def __init__(self, user_dim, item_dim):super().__init__()self.user_tower = tf.keras.Sequential([tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(64, activation='relu')])self.item_tower = tf.keras.Sequential([tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dense(64, activation='relu')])def call(self, user_features, item_features):user_emb = self.user_tower(user_features)item_emb = self.item_tower(item_features)return tf.reduce_sum(user_emb * item_emb, axis=-1)
2.2.3 多目标学习框架
美团搜索场景需同时优化点击率(CTR)、转化率(CVR)、GMV等多目标,粗排阶段采用以下策略:
- 共享底层表示:通过多任务学习(MTL)共享用户和商品的特征编码层,降低模型复杂度。
- 动态权重调整:根据业务场景(如促销期侧重GMV,日常侧重CTR)动态调整各目标的损失权重。
损失函数设计:
def multi_task_loss(y_true_ctr, y_pred_ctr, y_true_cvr, y_pred_cvr, alpha=0.5):ctr_loss = tf.keras.losses.binary_crossentropy(y_true_ctr, y_pred_ctr)cvr_loss = tf.keras.losses.binary_crossentropy(y_true_cvr, y_pred_cvr)return alpha * ctr_loss + (1 - alpha) * cvr_loss
三、特征工程:从静态到动态的升级
3.1 静态特征优化
- 离散化处理:对连续特征(如价格、距离)进行分桶,减少特征稀疏性。
- 交叉特征构建:通过规则引擎生成组合特征(如“用户性别+商品类别”)。
3.2 动态特征引入
- 实时行为序列:将用户最近10次点击的商品ID序列通过Transformer编码,捕捉短期兴趣。
- 上下文特征:加入时间、位置、设备类型等上下文信息,提升场景适配能力。
实时特征处理流程:
用户请求 → 提取实时行为ID → 查询行为序列存储 → Transformer编码 → 特征拼接
3.3 特征选择策略
- 基于重要性的筛选:通过SHAP值或Permutation Importance评估特征贡献度,淘汰低效特征。
- 在线A/B测试验证:对新特征进行灰度发布,监控召回率、QPS等核心指标。
四、工程架构:高性能与可扩展性设计
4.1 分布式计算优化
- 模型服务化:将粗排模型部署为gRPC服务,通过负载均衡实现水平扩展。
- 异步计算框架:对非实时依赖的特征(如用户画像)采用异步预计算,减少请求延迟。
4.2 缓存与预计算
- 用户向量缓存:对高频访问用户,预计算并缓存其特征向量,减少实时计算量。
- 商品索引分片:按商品类别或热度分片存储,提升查询效率。
4.3 监控与告警体系
- 实时指标监控:通过Prometheus采集QPS、延迟、错误率等指标,设置阈值告警。
- 离线分析平台:基于Spark构建特征质量分析平台,定期生成特征分布报告。
五、实践效果与未来方向
5.1 优化效果
- 召回率提升:从85%提升至92%,精排阶段可用的候选集质量显著提高。
- QPS提升:单节点QPS从3000提升至6500,支持业务快速增长。
- 特征覆盖率:从150维扩展至280维,长尾需求覆盖能力增强。
5.2 未来方向
- 强化学习应用:探索基于强化学习的动态粗排策略,适应实时业务变化。
- 图神经网络:利用商品-用户-场景的图结构,提升复杂关系建模能力。
- 端到端优化:研究粗排与精排的联合训练框架,减少层级误差传递。
结语
美团搜索粗排优化是一个持续迭代的过程,需在效率、效果与工程复杂度之间找到平衡点。通过深度学习模型的引入、动态特征的构建以及工程架构的优化,美团搜索团队已构建起一套高可用、高性能的粗排系统。未来,随着业务场景的进一步复杂化,粗排阶段将承担更多“智能筛选”的职责,成为搜索链路的核心竞争力之一。

发表评论
登录后可评论,请前往 登录 或 注册