共计 2511 个字符,预计需要花费 7 分钟才能阅读完成。
背景痛点
随着电商平台 SKU 数量的爆发式增长,人工选品面临巨大挑战:

- 效率瓶颈 :运营人员每天需要浏览数百个商品页面,分析数十个维度指标,单个选品决策耗时长达 15-30 分钟
- 主观偏差 :人工判断容易受个人偏好影响,同一商品在不同运营手中可能得到相反结论
- 规模限制 :头部电商平台周均上新量超过 10 万 SKU 时,传统方法需要配置 50 人以上的选品团队
- 成本压力 :资深选品专家年薪普遍在 30-50 万区间,年人力成本超过千万级别
技术选型对比
当前主流自动选品方案的技术指标对比:
| 方案类型 | 准确率 | 召回率 | 开发成本 | 维护难度 |
|---|---|---|---|---|
| 规则引擎 | 65-75% | 40-50% | 低 | 高 |
| 传统机器学习 | 78-85% | 60-70% | 中 | 中 |
| LLM(ChatGPT) | 82-90% | 75-85% | 中 | 低 |
选择依据 :
1. 规则引擎依赖人工定义特征权重,难以应对长尾商品
2. 传统 ML 需要标注大量训练数据,模型迭代周期长
3. ChatGPT 具备 zero-shot 能力,可直接理解商品文本特征
核心实现模块
商品数据预处理
- 特征提取流程 :
- 商品标题→关键实体识别(品牌 / 型号 / 规格)
- 商品描述→去除停用词后的 TF-IDF 向量
- 用户评论→情感分析得分(使用 TextBlob 库)
-
类目信息→层次化编码(三级类目转 one-hot)
-
向量化存储 :
from sklearn.feature_extraction.text import TfidfVectorizer tfidf = TfidfVectorizer(max_features=500) title_vectors = tfidf.fit_transform(df['product_title'])
Prompt 工程优化
基础模板 :
你是一个专业的电商选品助手,请根据以下商品特征推荐相似爆款商品:[商品标题]:{title}
[商品类目]:{category}
[价格区间]:{price}
[用户评分]:{rating}
要求:1. 推荐 3 个最匹配的商品 ID
2. 说明推荐理由
3. 用中文回复
关键参数 :
– temperature=0.3(平衡创意与稳定性)
– max_tokens=500(控制响应长度)
– top_p=0.9(避免生成无关内容)
结果后处理
- 去重逻辑 :
- 基于商品标题的 Jaccard 相似度(阈值 >0.7 判为重复)
-
价格带过滤(排除超出±30% 区间的推荐)
-
排序算法 :
def sort_recommendations(recs): return sorted(recs, key=lambda x: (x['match_score'], x['sales_volume']), reverse=True)
关键代码实现
import openai
import logging
class ProductRecommender:
def __init__(self, api_key):
openai.api_key = api_key
self.logger = logging.getLogger(__name__)
def get_recommendations(self, product_data):
"""
调用 ChatGPT API 获取选品推荐
:param product_data: 包含 title/category/price 等字段的 dict
:return: 推荐结果列表
"""
try:
prompt = self._build_prompt(product_data)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.3,
max_tokens=500
)
return self._parse_response(response.choices[0].message.content)
except Exception as e:
self.logger.error(f"API 调用失败: {str(e)}")
return []
def _build_prompt(self, data):
"""构建 Prompt 模板"""
return f""" 根据以下商品特征推荐 3 个最匹配的商品:标题:{data['title']}
类目:{data['category']}
价格:{data['price']} 元
评分:{data['rating']}/5
要求:返回商品 ID 和推荐理由 """
生产环境考量
限流应对方案
-
指数退避重试 :
import time def call_with_retry(api_func, max_retries=3): for i in range(max_retries): try: return api_func() except openai.error.RateLimitError: wait_time = 2 ** i + random.random() time.sleep(wait_time) -
本地缓存策略 :
- 对相同特征的商品请求缓存 24 小时
- 使用 Redis 存储推荐结果
成本控制
- 监控仪表盘指标:
- 每日 token 消耗趋势
- 平均每次请求 token 数
- 无效请求占比
- 优化技巧:
- 限制 prompt 长度(截断过长的商品描述)
- 使用 gpt-3.5-turbo 替代 gpt-4
避坑指南
模型幻觉应对
- 事实校验机制 :
- 将推荐商品与数据库真实 SKU 比对
-
设置黑名单过滤不存在商品
-
置信度打分 :
def check_confidence(response): """检测响应中是否包含不确定表述""" low_confidence_phrases = ["可能", "也许", "建议", "不确定"] return not any(phrase in response for phrase in low_confidence_phrases)
冷启动优化
- 数据增强方法 :
- 人工标注少量种子数据(200-500 条)
-
使用相似商品扩展训练集
-
混合推荐策略 :
- 初期结合规则引擎结果
- 随数据积累逐步提高 LLM 权重
延伸方向
建议尝试多模态方案:
1. 使用 CLIP 模型提取商品图像特征
2. 将视觉向量与文本特征拼接
3. 构建跨模态推荐索引
完整实现需要考虑:
– 图像特征存储方案(FAISS/Pinecone)
– 多维度权重调参
– A/ B 测试评估效果
正文完
