上周和一位做搜索架构的朋友喝咖啡,他抱怨说现在处理数据越来越分裂——线上搜索用 Elasticsearch,离线分析靠 Spark,AI 推理还得搭个向量数据库。三个系统的数据不同步,维护成本高得离谱。我说你听过 Vespa 吗?他愣了一下,答道这不是雅虎搞的那套老东西吗?我笑了,老东西现在可是火得不行,连 Spotify、腾讯都在用它。

说 Vespa 老,确实有点冤枉它。它最早是雅虎内部使用的搜索系统,2017 年开源出来。但真正让它走红的,是这两年大模型爆发后带来的需求变化。传统数据库要么擅长搜索,要么擅长分析,要么能处理向量,很少有系统能把这三件事揉在一起。Vespa 的野心就是做那个“三合一”的平台。
先聊聊它最核心的能力——实时搜索。传统搜索系统的索引更新通常有分钟级延迟,你改个商品价格,用户要等好几分钟才能搜到新价。Vespa 不一样,它采用实时索引,数据写进去立刻就能被搜索到。比如电商场景里,商家改库存、调价格、上新款,这些操作几乎是秒级生效。这种能力对广告竞价、动态定价这类业务来说,不是锦上添花,而是刚需。
更狠的是它处理复杂查询的方式。一般的搜索系统只能做关键词匹配,顶多加点过滤条件。Vespa 支持“结构化搜索 + 文本搜索 + 向量搜索”混在一起。举个例子,你搜“红色连衣裙,价格低于 500,风格偏复古,图片风格类似的”,传统系统得拆成好几个步骤:先搜关键词,再过滤价格,用向量做相似度匹配。Vespa 一条查询就能搞定,而且结果返回时间控制在几十毫秒。
这就引出了第二个核心能力——AI 推理。很多数据库说支持机器学习,其实只是给你个接口,让你把训练好的模型传进去,它帮你做预测。Vespa 做得更绝,它允许你把模型直接部署在数据库里。也就是说,你写一条查询,查询过程中可以调用模型做实时推理。
比如推荐系统,传统做法是:用户请求来了,先查数据库拿用户特征和候选物品,然后把它们送给推荐模型做排序,最后返回结果。这一来一回,延迟高得吓人。Vespa 的做法是:把推荐模型直接部署在数据库节点上,查询时模型就在数据所在的地方就地推理,省掉了数据传输的步骤。Spotify 就是这么用的,它把数百万首歌的音频特征向量存进 Vespa,用户每次听歌时,系统实时计算歌曲相似度,生成动态歌单。
再深入一层,Vespa 还支持多阶段推理。什么意思?有些 AI 任务需要多个模型串起来跑。比如广告系统,先跑一个粗排模型从百万级候选里筛出几千个,再跑一个精排模型做最终排序。传统做法是分两步走,中间数据要落盘,延迟高且浪费资源。Vespa 允许把这两个模型串在一条查询流水线里,中间结果在内存里直接流转,效率提升不止一个量级。
还有个容易被忽视的点——数据一致性。很多高性能系统为了速度,牺牲了一致性,比如允许脏读。Vespa 在这方面很较真,它使用类 Paxos 的一致性协议,保证写入成功后,后续所有查询都能看到最新数据。这对于金融场景、广告计费场景来说,不是可选项,而是必选项。
当然,没有系统是完美的。Vespa 的学习曲线确实陡,它的查询语言不是 SQL,而是自己的一套 YQL(Yahoo Query Language)。虽然功能强大,但团队里如果有人只熟悉 SQL,切换会有阵痛。另外,它的社区相较于 Elasticsearch、MongoDB 要小得多,遇到复杂问题时能找到的资料有限。
但如果你衡量的是“一套系统能搞定多少事”,Vespa 的性价比就凸显出来了。一个团队只需维护一套系统,不用在搜索、分析、AI 推理之间来回折腾,数据也不必在不同系统间倒腾,运维成本大幅下降。腾讯广告团队正是看中了这一点,把原本分散在多个系统的广告检索和排序任务统一迁移到 Vespa 上,据说查询延迟降低了 40%。
回到开头的问题。下一代智能数据平台长什么样?我的判断是,它一定不是那种“大而全”的巨无霸,而是像 Vespa 这样,在关键能力上做到极致,同时还能优雅融合不同数据服务类型的系统。实时搜索、向量检索、AI 推理,这些能力单独来看都不新鲜,但把它们无缝整合,让开发者不再纠结“这个数据该放哪儿”,这才是真正的价值。
未来的数据平台,拼的不是单点功能的强悍,而是整合能力的高低。Vespa 用十年的时间证明了这条路可行。现在的问题是,你愿不愿意给自己一个机会,试试这套能让你少掉不少头发的方案?


