2023年Q3,亚马逊内部测试组发现个诡异现象:用户搜"防水蓝牙音箱",前10个结果里有4个是充电宝,2个是耳机收纳盒。推荐系统的点击率暴跌23%,退货率却涨了17%。
这不是推荐算法"不懂你",是数学工具选错了战场。
向量搜索的瓶颈:当"相似"变成"近似"
传统推荐系统把商品和用户都变成高维向量(一种用数字列表表示特征的技术),靠计算夹角余弦找相似。这套方法在2018年前够用,因为商品库只有几千万SKU,用户画像也简单。
但2020年后,电商的复杂度指数级爆炸。一件冲锋衣同时属于"户外装备""通勤穿搭""送礼清单"三个场景;一个用户上午看露营帐篷,下午搜婴儿推车——向量空间里的单点表示,根本抓不住这种多维交叉关系。
亚马逊机器学习团队负责人Alex Spiro在2023年 re:Invent 大会上打了个比方:「向量搜索像在二维地图找餐厅,只能问"离我多近"。但用户实际想问的是"适合约会、有露台、人均200以内、今晚有位"——这是四个独立维度的同时约束。」
更麻烦的是"多模态"内容。一张商品图里,背景是雪山(场景)、主体是红色(颜色)、模特穿L码(尺码)。向量模型把这些压缩成一坨数字,查询时只能整体匹配,无法单独提取"红色"或"L码"做筛选。
结果?系统把"红色羽绒服"和"红色连衣裙"算成高度相似,因为它们的视觉向量确实很近。用户骂骂咧咧关掉页面。
张量分解:把"一团乱麻"拆成可组合的零件
张量(tensor)是向量的高维推广。如果说向量是列表,矩阵是表格,张量就是Excel里带多个工作簿的三维数据块。
关键突破来自一种叫CP分解的数学操作:把一个庞大的多维张量,拆解成若干"因子矩阵"的乘积。每个因子对应一个独立维度——颜色、场景、价格带、用户意图——查询时可以自由组合。
Google Research 2022年的论文《Tensor-Train Decomposition for Large-Scale Recommendation》验证了这条路:用张量替代向量表示用户-商品交互,召回准确率提升34%,计算延迟反而下降18%。
亚马逊在2023年底跟进。他们的新系统把商品属性拆成12个独立因子矩阵,用户实时行为另建3个动态因子。查询"防水蓝牙音箱"时,系统不再匹配整体向量,而是分别检索"防水等级""音频设备""户外场景"三个因子,再取交集。
内部A/B测试数据:搜索相关性评分从0.61拉到0.87,加购转化率提升19%。
工程落地的暗礁:不是算不快,是拆不对
张量计算的理论优势很明显,但电商场景有特殊的脏活。
第一是维度爆炸。12个因子矩阵,每个有5000个潜在特征,组合空间是5000^12——比宇宙原子数还多。必须做"稀疏化"剪枝:只保留实际出现过的属性组合,把计算量压到可控范围。
第二是实时性矛盾。用户滑动商品流时,行为数据每秒更新。因子矩阵如果全量重算,延迟扛不住。亚马逊的解法是"增量更新":主干矩阵日级全量训练,用户个人因子用在线梯度下降实时微调。
第三是解释性黑洞。向量搜索至少能告诉你"这两件商品向量夹角小",张量分解后的多因子交集,运营人员根本看不懂为什么推了这件。亚马逊加了层"归因翻译":把因子权重映射回可读的属性标签,输出"推荐原因:防水场景匹配+近期浏览同类"。
Netflix的推荐团队在2024年Q1技术博客中坦承,他们试过张量路线,最终退回改进版向量方案。原因很实在:「影视内容的维度比商品少,用户意图也更单一(就是看片子),张量的复杂度收益覆盖不了维护成本。」
行业扩散:从电商到工业质检的意外跳跃
张量计算在推荐系统的成功,正被复制到意想不到的领域。
西门子成都工厂的视觉质检系统,原本用向量匹配缺陷图片。但"划痕"在金属表面和塑料表面的视觉特征完全不同,向量模型经常混淆。2024年改用张量分解后,把"缺陷类型""材质""光照条件"拆成独立因子,误检率从4.7%降到0.9%。
更前沿的是药物分子筛选。辉瑞和MIT的合作项目用张量表示分子结构:原子类型是一维,化学键是另一维,三维空间坐标是第三维。传统向量方法只能整体比较分子相似度,张量分解可以单独优化"与靶点结合能力"这一因子,把候选分子筛选效率提升40倍。
回到电商战场,阿里国际站在2024年6月上线"多意图搜索",底层同样是张量架构。他们的特殊挑战是跨境场景:同一个英文query,美国用户要的是"批发价",东南亚用户要的是"免运费"——必须在因子层就把地域偏好拆开。
张量不是万能药。它的核心假设是"维度可分解",如果业务场景本身混沌纠缠(比如社交内容的情绪+话题+人际关系),强行拆分反而失真。但在商品属性清晰、用户意图可拆解的领域,这把数学手术刀正在重新划定推荐系统的性能天花板。
亚马逊搜索团队在内部复盘文档里写了一句挺实在的话:「我们花了18个月才搞明白,问题不是算法不够聪明,是表示方法太懒了。」
当你的用户下次搜"适合送女朋友的降噪耳机",系统能不能同时理解"降噪"是功能需求、"送女朋友"是场景约束、"适合"是价格暗示——这取决于你愿不愿意把一维的向量,展开成多维的张量。问题是,你的技术债允许你重构底层吗?
热门跟贴