共计 2064 个字符,预计需要花费 6 分钟才能阅读完成。
小红书 Skill 技术解析:如何构建高效的内容推荐引擎
背景与痛点
随着用户规模和内容量的快速增长,小红书面临着推荐系统效率与精准度的双重挑战。具体来说,主要存在以下几个痛点:

- 冷启动问题:新用户和新内容缺乏足够的历史交互数据,难以准确匹配
- 数据稀疏性:用户与内容的交互矩阵极其稀疏,传统协同过滤效果受限
- 实时性要求:用户行为需要秒级反馈到推荐结果中
- 多样性需求:既要保证推荐精准度,又要避免信息茧房效应
技术架构
小红书 Skill 推荐系统采用分层架构设计,主要包含以下核心组件:
- 数据采集层:实时收集用户行为日志(浏览、点赞、收藏等)
- 特征存储层:用户画像特征库和内容特征库
- 在线服务层:
- 召回模块(多路召回策略)
- 排序模块(精排模型)
- 策略服务(业务规则处理)
- 实验平台:AB 测试框架和效果评估系统
整体架构遵循 Lambda 架构,同时支持批处理和实时计算。
算法实现
特征工程处理
用户画像构建:
- 静态特征:年龄、性别、注册信息等
- 动态特征:
- 短期兴趣(最近 7 天行为)
- 长期兴趣(历史行为聚合)
- 上下文特征:地理位置、设备信息、时间特征等
内容特征提取:
- 结构化特征:类目、标签、发布者信息
- 非结构化特征:
- 文本特征(BERT 向量)
- 图像特征(ResNet 提取)
召回与排序算法
召回阶段 采用多路召回策略:
- 协同过滤(ItemCF):基于物品相似度
- 内容召回:基于标签 / 类目匹配
- 热点召回:实时热门内容
- 深度学习召回:双塔模型
排序阶段 使用深度学习模型:
- 特征拼接:将用户特征、内容特征、上下文特征拼接
- 模型结构:
- Wide&Deep 架构
- DIN(Deep Interest Network)
- 多任务学习(CTR+CVR)
实时计算优化
- Flink 实时计算框架处理用户行为
- 在线特征实时更新(如用户最近点击序列)
- 模型预测 API 响应时间优化到 <50ms
代码示例
# 特征预处理示例
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# 用户特征处理
def process_user_features(df):
"""
处理用户特征
:param df: 原始用户数据
:return: 处理后的特征 DataFrame
"""
# 数值特征归一化
num_cols = ['age', 'follower_count']
scaler = MinMaxScaler()
df[num_cols] = scaler.fit_transform(df[num_cols])
# 类别特征 one-hot 编码
cat_cols = ['gender', 'city_level']
df = pd.get_dummies(df, columns=cat_cols)
return df
# 双塔模型召回示例
import tensorflow as tf
class TwoTowerModel(tf.keras.Model):
"""双塔召回模型"""
def __init__(self, user_dim, item_dim):
super().__init__()
# 用户塔
self.user_tower = tf.keras.Sequential([tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dense(128)
])
# 内容塔
self.item_tower = tf.keras.Sequential([tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dense(128)
])
def call(self, inputs):
user_emb = self.user_tower(inputs['user_features'])
item_emb = self.item_tower(inputs['item_features'])
return tf.math.l2_normalize(user_emb, axis=1), tf.math.l2_normalize(item_emb, axis=1)
性能优化
并发处理方案
- 服务无状态化设计
- 线程池 + 异步 IO 处理请求
- 关键服务部署多副本
缓存策略
- Redis 多级缓存:
- 热点内容缓存
- 用户特征缓存
- 本地缓存(Caffeine)减少 Redis 访问
- 缓存失效策略:
- 主动更新(用户行为触发)
- 被动过期(TTL)
AB 测试框架
- 流量分层设计
- 指标监控体系:
- 核心指标(CTR、停留时长)
- 辅助指标(多样性、覆盖率)
- 统计显著性检验
避坑指南
- 特征穿越问题:
- 严格区分特征生成时间和使用时间
- 离线特征与在线特征一致性校验
- 模型退化问题:
- 定期模型重训
- 在线指标监控报警
- 冷启动解决方案:
- 内容质量分初筛
- 跨域迁移学习
总结与展望
小红书 Skill 推荐系统通过分层架构设计和算法优化,有效解决了高并发场景下的推荐效率问题。未来发展方向包括:
- 图神经网络应用(社交关系挖掘)
- 强化学习优化长期收益
- 多模态内容理解
- 隐私保护推荐技术
推荐系统的优化是一个持续迭代的过程,需要平衡算法效果、系统性能和用户体验。通过不断的技术创新和实验验证,才能构建真正智能的内容推荐引擎。
正文完
