搜索系统面临的挑战
电商平台Instacart(Instacart)每天服务1400万用户,涉及数十亿产品。对于这样规模的平台,提供快速准确的搜索功能至关重要。搜索系统面临两大挑战:
- 需要具备语义理解能力,准确解读用户在搜索"健康食品"等模糊查询时的真实意图
- 必须实时反映库存、价格和排名的变化,保证搜索结果的准确性
原有架构的局限
Instacart最初采用Elasticsearch进行常规搜索,Facebook AI相似度搜索(FAISS)负责语义搜索。但这一架构存在明显问题:
- 非规范化数据模型导致数十亿商品需要频繁更新
- 索引负载过重,修复数据错误需要数天时间
- 机器学习模型的引入进一步加剧了性能问题
技术架构重构
为解决这些问题,Instacart将文本检索迁移到采用高度数据规范化的分片PostgreSQL实例:
- 规范化数据模型使写入工作负载减少90%
- 机器学习特征和模型系数可存储在独立表中,实现灵活更新
- 采用NVMe存储,将计算移近数据,搜索性能提升一倍
统一的语义搜索方案
最终,Instacart选择PostgreSQL扩展pgvector来整合检索机制:
- 消除了数据重复
- 降低了运营复杂性
- 实现了更精细的结果控制
- 充分利用PostgreSQL的实时过滤能力
生产环境A/B测试显示,零结果搜索次数下降6%,用户更容易找到所需商品,为平台带来可观收入增长。
行业最佳实践
电商平台Shopify(Shopify)也通过实时机器学习改进了搜索体验:
- 在Google Cloud Dataflow上实现每秒处理2500个嵌入
- 通过优化线程数和模型部署策略,平衡性能与资源利用
- 采用流式处理确保商品信息实时更新,提升用户体验