向量搜索的回滚计划比首次演示更重要
我曾参与过一个产品搜索功能的开发,最初的向量演示效果看起来很棒。几次测试查询都找到了正确的目录项,团队希望尽快上线。问题出现在一位商品运营人员重命名了一个产品系列并将几个 SKU 移入新类别之后。数据库中的文本变了,但嵌入索引(embedding index)中仍保留着旧的产品语言,导致搜索结果显得很奇怪。用户输入新术语,却得到了旧系列的产品。 我们通过将嵌入视为真正的派生数据而非辅助文件来解决这个问题。每一行都增加了 embedding_version(嵌入版本)、source_hash(源哈希)和 indexed_at(索引时间)。索引作业会比较我们实际嵌入字段的哈希值,然后仅对过时的数据行重新排队。在发布时,我们还保留了纯关键字回退方案,以及一个可以在向量服务出现偏差或变慢时将流量切回 BM25 结果的功能开关。那个回滚开关是我最庆幸拥有的东西。 我的实践经验是,难点不在于调用嵌入…