发布于2026-05-28 阅读(0)
扫一扫,手机访问
在电商搜索这个领域,技术团队常常面临一个经典难题:如何同时满足“精准命中”和“智能联想”这两种看似矛盾的需求?最近,Instacart给出了一份引人注目的答卷——他们彻底重构了搜索基础设施,用PostgreSQL完全取代了Elasticsearch,并将关键词检索与语义检索整合进了一个统一的系统。
这个决策的核心逻辑很清晰:将目录和搜索数据全部整合到Postgres中,目标直指简化运维、消除数据同步的额外开销,并最终提升搜索结果的精确度与召回率。换句话说,他们想让系统变得更聪明、更高效,同时让工程师的日子更好过。
重新设计的精髓,在于对检索方式的根本性改进。传统的基于关键词的搜索,在处理诸如“8盎司香蒜意面酱”这类具体查询时堪称完美,它能精准匹配产品属性,分毫不差。然而,当用户输入“健康食品”这样宽泛的、意图驱动的查询时,关键词匹配就显得力不从心了。
这时,就需要语义检索登场。它能够理解词语和概念之间的深层关联,而不仅仅是字面匹配。Instacart的聪明之处在于,他们没有二选一,而是通过Postgres将这两种方法结合了起来。这种混合策略,本质上是在“精确度”(确保返回的结果高度相关)和“召回率”(尽可能网罗所有相关项)之间寻找最佳平衡点。最终受益的是顾客:他们既能快速找到心中所想的确切商品,也有机会发现那些意料之外、情理之中的替代选项。
据Instacart工程团队透露,这次迁移带来了显著的效率提升。最直接的好处是开发速度的加快,因为工程师们不再需要为协调不同系统间的数据而头疼。这套混合基础设施也赋予了平台更大的灵活性,使其能够从容应对动态变化的库存和复杂的用户偏好,轻松支撑日均数百万次的搜索请求。价格、库存、折扣信息的实时更新,也得以更顺畅地实现,为顾客打造了更高效、更个性化的购物体验。
用Instacart工程师Ankit Mittal的话来说:
与之前在Elasticsearch中使用的非规范化数据模型相比,规范化数据模型使我们的写入工作负载减少了10倍。这带来了将近80%的存储和索引成本节省,减少了死胡同搜索,并改善了整体客户体验。
回顾过去,他们的架构是分离的:Elasticsearch专司全文查询,而事务性数据则存放在Postgres中。维护两套独立数据库的挑战不言而喻——数据同步复杂,运营成本高昂。为了引入语义搜索能力,团队最初尝试了FAISS,但最终选择了基于Postgres pgvector扩展的混合模型。这一选择使得基于词汇和基于向量的检索能在同一屋檐下运行,从根本上减少了数据冗余和系统复杂性。
之前使用 FAISS 和 Postgres 的检索架构(来源:Instacart工程博客)
经过重新设计的架构,采用了分片的Postgres实例和规范化的数据模型来实现水平扩展。每个分片都包含了完整的目录和搜索索引,查询通过专门的服务层被路由到合适的分片。
在技术细节上,团队利用Postgres的GIN索引和改进的`ts_rank`函数,实现了高性能的文本匹配。而关系型模型的内在优势,使得机器学习所需的特征数据和模型系数可以被存储在独立的表中,管理起来非常清晰。与Elasticsearch方案相比,规范化带来的写入负载十倍的降低,直接转化为了存储和索引成本的大幅削减。同时,该架构还能轻松管理数百GB的机器学习特征数据,为运行更高级的检索模型铺平了道路。

使用 pgvector 和 Postgres 的混合检索架构(来源:Instacart工程博客)
可以说,Postgres的强大扩展能力是这次重构的基石。例如,利用`pg_trgm`进行基于三元组的模糊文本搜索,依靠`pgvector`处理基于嵌入向量的语义搜索。这使得单一数据库同时驾驭了传统与智能两种搜索模式。查询请求通过路由层直达拥有所需索引的分片,由于免除了跨系统同步的步骤,结果返回的效率自然更高。
Instacart的这次技术迁徙,不仅仅是一个数据库的替换故事。它展示了一种趋势:通过统一和简化的数据栈,结合现代数据库的扩展能力,完全可以在不牺牲性能的前提下,构建出更智能、更经济、也更易于维护的搜索系统。这对于面临类似挑战的众多技术团队而言,无疑提供了一个极具参考价值的范本。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9