Milvus 助力 Shopee 创新变革多媒体业务

Shopee
  • 1 亿

    向量存储和搜索

  • 无缝对接

    各种内部系统及技术栈

  • 优化实时数据检索

    更低延时、更高系统可用性

感谢 Milvus 向量数据库全体团队,其提供的稳定向量检索能力、多样化功能特性,为 MMU 团队在向量检索场景搭建业务系统时提供极大的便利,其可靠的分布式扩展能力有效支撑了日益增长的数据规模。

MMU 团队

Shopee

Shopee 简介

Shopee 是一家全球性的电商平台,业务范围辐射东南亚、拉美等多个地区。凭借其用户友好的界面、安全的支付通道和多样的产品,Shopee 成为了数百万地区用户的首选购物平台。

Shopee 已经推出了多媒体理解(MMU)业务,直接对标短视频巨头 TikTok,寻求进一步提升其在电商领域的市场份额。作为 MMU 业务的一部分,Shopee 已经推出了其短视频服务,包括一个类似 TikTok 的功能 Shopee 视频和一个短视频应用程序。

用户痛点:缺乏处理海量非结构化数据的稳定向量搜索引擎

在 Shopee 多媒体业务不断发展的过程中,大量非结构化数据(包括视频、图片、音频和文本等)涌现,对 Shopee 团队构成了巨大挑战,且对其使用的传统数据库形成巨大考验。为有效从这些非结构化数据中获取有用信息,Shopee 团队采用了 Embedding 工具将非结构化数据转化为 Embedding 向量。但是,Shopee 团队仍旧迫切需要一个强大的向量数据库系统来存储并高效搜索这些向量。

Shopee 内部已有各种系统,包括视频回调系统、视频去重系统和视频推荐系统,架构高度复杂。这些内部系统采用不同的技术搭建,并且严重依赖向量搜索能力。因此,Shopee 需要一个强大的向量搜索引擎,能够无缝接入这些系统和各种技术栈中。

解决方案:使用 Milvus 搭建向量搜索引擎

根据对业界开源向量检索引擎的调研结论,Milvus 引擎具备的优势比较切合团队的需要。其中 Milvus 的云原生架构较为契合 Shopee 内部云原生生态,能够快速支撑检索系统从 0 到 1 的搭建;另外 Milvus 具有丰富特性,包括分布式、GPU、增量更新、标量等,都能对业务场景的高效落地提供有效帮助。

Milvus 1.x:高效但延迟随着数据量增大而增加

Shopee 团队最初采用了 Milvus 1.1 + Mishards 的分布式解决方案。然而在实际业务场景中,随着数据规模和请求量的增加,检索性能和吞吐到达了一定瓶颈,无法随着 read-only 节点的增多而扩展。MMU 团队分析后发现以下两点原因:

\1. Mishards 默认的分片策略在某些情况下会导致 readonly 节点分到的 segment 数量不均衡。

\2. 随着 read-only 节点的增多,每个节点都需要检索出 Top K,Mishards 在进行 Reduce 时的数据量会急剧增多,导致时延变得较高。

缓解方案是部署多套 Mishards 集群,共用相同的数据库和 S3 bucket,但这种方案的部署和维护成本都较大,长期还需要寻找更合适的部署方案。

Milvus 2.x:更稳定,延时更低

从实际效果看,Milvus 2.x 的稳定性和可扩展性相比 Mishards 集群都有了极高的提升。尤其在Milvus 2.1 发布后,其多副本能力进一步提高了集群整体的性能,基本能满足各类业务场景。另外,基于 Milvus 2.x 的云原生架构,其日志和监控的引入成本很低,也更加友好和完善。

Milvus 2.x 架构 Milvus 2.x 架构

Milvus 助力多个 Shopee 业务系统

Shopee 的实时搜索能力借助 Milvus 向量数据库达到了新高度。视频召回系统能够很好地体现这一点。Shopee 团队已经将 Milvus 无缝与即时视频召回整合,提升 Shopee 的视频推荐系统,从而为全球数百万用户带去更好的体验。借助 Milvus,离线数据检索变得更加高效,这对于视频原创性检查和视频去重环节至关重要。Milvus 在识别原创内容和识别重复视频方面发挥了重要作用,能够确保视频新鲜和原创的视频内容,同时提升用户满意度。

视频召回系统:优化视频推荐

视频召回系统是 MMU 团队为业务提供的基于视频内容的召回能力,作为视频推荐系统的其中一路召回。业务请求通过检索 Milvus 获取 Top K 候选,经过精排逻辑之后返回召回结果。

使用 Milvus 1.x 的视屏召回系统架构 使用 Milvus 1.x 的视屏召回系统架构

最初,Shopee 团队采用了 Milvus 1.x 搭建视频召回系统。由于 Milvus 1.x 主要面向数据分析场景,未针对低延迟的实时召回做针对性优化,所以在向量库和请求量到达一定规模之后,延迟会有一定下降。因此在 Milvus 1.x 架构下的某些场景采用了缓存 TopK+ 后台更新的方式:通过缓存提供实时查询接口,并在后台的更新数据流中完成 TopK 的更新。Milvus 2.x 发布后,由于其强大的分布式能力和系统性能,系统得以通过 Milvus 2.x的查询接口直接提供 TopK 召回能力。

使用 Milvus 2.x 的视频召回系统架构 使用 Milvus 2.x 的视频召回系统架构

版权匹配系统:更好的用户体验,更多原创视频

为了构建良好的内容生态,平台希望通过一定机制鼓励用户产出原创内容。为了让这些机制更好运行,系统需要对视频内容进行识别,判断其是否属于原创作品。视频原创系统为以上需求而设计。系统通过一定的处理流程识别视频的原创性,提供给业务方进行后续处理。

版权匹配系统架构 版权匹配系统架构

版权匹配系统核心流程:

  1. 预处理模块:筛选出系统所需视频,拼接核心视频信息并输出给特征提取模块。
  2. 特征提取模块:为视频提取特征并输出给业务逻辑模块。
  3. 业务逻辑模块:为视频执行 TopK 检索和原创逻辑;结果入库并输出给业务。
  4. 回扫模块:旁路流程,为各环节处理失败的数据执行兜底策略。

视频去重系统:提升用户价值

相似视频缺乏新鲜感,无法给用户带来有价值的消费体验,由此催生了对视频的去重需求,即需要识别视频是否为重复视频,从而为各业务场景提供去重能力。视频指纹系统为以上需求而设计。指纹系统为每个视频分配一个指纹 ID(指纹ID作为该视频的标识,ID 相同的视频视作重复视频)并输出,供各业务方使用。

视频去重系统架构 视频去重系统架构

后续发展

Milvus 提供的稳定向量检索能力、多样化功能特性,为 MMU 团队在向量检索场景搭建业务系统时提供极大的便利,其可靠的分布式扩展能力有效支撑了日益增长的数据规模。Shopee 团队希望 Milvus 后续能够不断升级应对更复杂的 AI 应用需求。Shopee 在将来也会和 Milvus 更紧密合作通过多媒体理解来进一步提升其用户体验,开辟电商领域新市场。

本文由 Shopee MMU 团队撰写。已获编辑和转载许可。

相关资源