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


前置处理:搜索服务在收到搜索请求后 , 会依次完成参数校验、搜索词归一化、同义词、纠错词、禁搜词、意图识别、实体识别 , 为后面的召回阶段做准备;
数据召回:并行检索歌曲、歌手、视频、专辑、歌单、听书结果内容 , 从不同的数据源召回相关数据;
后置处理:给歌曲、歌手等楼层做排序、聚合等处理 , 并提取各楼层精品结果生成最终数据;
结果返回:服务端将最终结果返回给客户
研发效能提升:vivo AI 搜索平台化建设
文章图片
i音乐搜索流程
i主题搜索流程
i主题搜索是i主题应用的搜索服务 , 为用户提供包括主题、铃声、字体、壁纸等资源的搜索 。
研发效能提升:vivo AI 搜索平台化建设
文章图片
i主题搜索应用界面
i主题搜索流程与前两个类似 , 具体处理步骤如下:
用户请求:用户通过i主题客户端发起主动搜索请求;
前置处理:搜索服务在收到搜索请求后 , 会依次完成搜索词的标准化、同义词处理、拓展词处理、黑名单过滤以及标识符处理 , 为后面的召回阶段做准备;
数据召回:从ElasticSearch以及Redis中召回包括主题、字体、壁纸等资源相关数据;
后置处理:对召回结果进行排序、去重、过滤处理 , 根据人工干预规则进行调整 , 并进行高亮和分页从而生成最终结果数据;
结果返回:服务端将最终结果返回给客户端
研发效能提升:vivo AI 搜索平台化建设
文章图片
i主题搜索流程
平台能力建设
搜索流程抽象
通过分析以上三个不同业务的搜索流程可以发现 , 虽然它们业务形态千差万别 , 但是对流程进行抽象后 , 三个搜索业务的流程基本一致 , 具体如下:
研发效能提升:vivo AI 搜索平台化建设
文章图片
搜索服务的整体流程
前置处理阶段:对用户输入的查询词进行处理 , 主要包括请求参数的加解密 , 查询词的改写(纠错、补全、同义词等)、理解(意图、实体、分词)等 。
召回阶段:单路召回或者多路召回 , 包括倒排检索召回、模型计算召回、向量检索召回 , 但是全搜业务比较特殊 , 是多垂类召回 。
后置处理阶段:对召回结果进行排序 , 包括粗排(相关性模型排序 , 时效性排序) , 精排(权威性、质量度、多样性、模型、神经网络等) , 合并不同来源数据并去重;根据活动运营规则 , 临时干预策略或者人工配置的规则对排序后结果进行过滤筛选 。
对流程进一步抽象后可以看到 , 搜索流程具有一般性 , 即用户发起搜索请求 , 经过前置处理、数据召回、后置处理后返回搜索结果 , 搜索上下文在整个过程中负责中间数据结果的传递 , 具体如下:
研发效能提升:vivo AI 搜索平台化建设
文章图片
搜索服务流程抽象
综上所述 , 一个搜索流程可以抽象成一个执行计划 , 每个流程又由许多不同的步骤(执行阶段)组成 , 每个步骤包含不同的业务逻辑(处理器) , 具体对应关系如下:
研发效能提升:vivo AI 搜索平台化建设
文章图片
业务功能对应关系
针对开发功能中面临的实际问题 , 我们的解决思路是:
开发流程规范化 。 制定统一的开发规范 , 对原有的业务功能进行解耦 , 确定每个功能的职能边界 , 尽量复用公共组件进行开发;
公共能力组件化 。 梳理业务流程 , 将公共能力沉淀到搜索平台中形成公共组件 , 业务人员在开发时可以直接通过业务配置进行复用 。 同时 , 这些通用能力是标准化的 , 业务可以按标准规范进行开发 , 易于在不同业务中分享和使用 。 当通用组件满足不了业务场景时 , 业务人员就可以根据标准规范补充更多的通用组件 , 快速满足今后类似的需求开发;