我在修复产品搜索索引中重复嵌入向量时学到的经验
我曾负责一个产品搜索项目,其中的向量搜索结果开始在略有不同的标题下重复出现同一个商品。业务部门的投诉很简单:买家搜索某个替换零件时,在看到任何替代品之前,先看到了四个几乎一模一样的卡片。起初我以为是嵌入模型太弱,但实际上模型只是暴露了数据清理方面的问题。 我提取了原始产品数据源、嵌入表以及几个糟糕查询的搜索点击日志。重复的行源于供应商别名、已停产的 SKU 以及共享相同产品描述的捆绑销售列表。由于流水线是独立嵌入每一行的,因此向量索引对"规范产品"没有任何概念。更糟糕的是,我们的夜间作业仅按数据源行 ID 进行更新插入(upsert),而不是按规范化的产品键进行。 解决方案是在嵌入之前创建一个规范键:包含制造商零件编号、规范化品牌、包装尺寸以及针对供应商特定名称的别名表。我保留了库存和定价的独立行,但每个规范产品只保留一个搜索文档。重新索引后,我对比了前二十个问题查询的召回率、重复率和点…