研发效能提升:vivo AI 搜索平台化建设

作者|王兆雄、衷颖杰、刘龙
编辑|Tina
背景
在2021年下半年 , 由于业务调整 , 我们团队在原来已经负责全局搜索服务的基础上 , 又对接了i音乐和i主题的搜索服务 , 在团队人员不变、需求高速迭代、业务规模快速增长的情况下 , 效能上面临的问题也越发凸显:
没有统一开发模式 。 三个业务最初是由三个不同的团队分别开发迭代 , 不同团队有不同的开发模式 , 导致相同业务逻辑的实现方式千差万别 , 更多的是根据开发人员自身的喜好或者代码习惯进行开发 , 缺少统一规范;
缺少公共能力沉淀 。 由于业务由不同的团队开发 , 各个业务更多的是根据各自的业务需求纵向发展 , 通用功能很难沉淀 , 存在大量功能重复的代码逻辑 , 并且随着团队人员的不断更新 , 团队人员的主要精力放在业务迭代和系统维护上 , 缺少统一的系统能力抽象;
系统功能不断扩展 , 业务复杂性不断上升 。 随着需求的快速迭代 , 业务系统的代码量和架构复杂度也在快速提升 , 业务代码量级已经发展到十万级别的规模 。 开发过程中很难保证对文档做出有效沉淀 , 新接手的同学在维护迭代时只能通过阅读源码去理解业务逻辑 , 难以高效进行需求迭代;
业务流程复杂 , 各种功能繁多 。 搜索系统本身就很复杂 , 搜索调用链路长 , 涉及到的周边系统多 。 开发同学在进行业务迭代时 , 还需要考虑到是否会对上下游链路产生负向影响 。
总体来看 , 我们要解决的问题是:如何更快开发迭代——少写或不写代码 , 更快上手优化——业务流程易理解 , 更快上线交付——操作简单易实现 。
研发效能提升:vivo AI 搜索平台化建设】搜索流程分析
三个项目面对的业务场景大相径庭 , 但也都是搜索相关的业务场景 。 所以我们对这三个业务流程进行仔细的梳理 , 并从中发现了一些规律 。
全局搜索流程
全局搜索是vivo手机重要的内置应用 , 致力于满足用户信息、服务获取的需求 , 为用户提供高效、个性、智能的建议、搜索服务 , 提供一站式的搜索体验 。
研发效能提升:vivo AI 搜索平台化建设
文章图片
全局搜索应用界面
全局搜索的具体业务流程如下:
用户请求 , 用户通过全局搜索客户端发起主动搜索请求;
前置处理 , 服务端中控服务在接收到用户请求后 , 会依次完成意图、特征、分词、搜索词处理等步骤 , 为后面的召回阶段做准备;
垂类召回 , 中控服务将请求分发到各个垂类服务 , 并行召回数据结果;
后置处理 , 中控服务在接收到各垂类的召回结果后 , 会进一步对整个结果进行过滤、排序、人工规则干预、结果高亮、分页等步骤的处理 , 并生成最终的数据结果;
结果返回 , 服务端将最终结果返回给客户端 。
研发效能提升:vivo AI 搜索平台化建设
文章图片
全局搜索处理流程
在上图的多垂类结果召回阶段中 , 每个垂类的具体处理流程与整体流程基本一致 , 即也要经过前置处理 , 数据召回、后置处理等阶段 , 具体如下:
垂类具体处理流程
i音乐搜索流程
i音乐搜索是vivo默认的音频播放器i音乐App内的搜索功能 , 入口为App首页的顶部搜索框 , 为用户提供便捷的音乐搜索服务 。
研发效能提升:vivo AI 搜索平台化建设
文章图片
i音乐搜索应用界面
总体业务流程如下:
用户请求:用户通过i音乐客户端发起主动搜索请求;