CSDN揭秘阿里中台!一文看懂阿里推荐业务的两项利器 | 赠书


CSDN揭秘阿里中台!一文看懂阿里推荐业务的两项利器 | 赠书
本文插图
从工程的角度看 , 搜索和推荐既有差异点 , 又有共同点 。 阿里巴巴集团的搜索和推荐系统由同一个部门研发 , 因此很多工程能力是复用的 , 如搜索和推荐业务的算分服务引擎都是RS/RTP 。
本文介绍阿里巴巴推荐的中台产品—BE召回引擎和RTP算分服务 , 这是阿里巴巴推荐业务的两项利器 。
召回引擎BE
BE(Basic Engine)是基于阿里巴巴集团另一个更底层的框架服务Suez构建的 。 在Suez框架服务的基础上 , BE实现了与推荐业务相关的各种功能组件 , 如向量召回技术、多表join召回 , 以及以自定义插件形式提供的排序和算分插件接口 。
1.架构及工作原理
BE是一个典型的多列searcher+proxy架构 , 如图1所示 。
【CSDN揭秘阿里中台!一文看懂阿里推荐业务的两项利器 | 赠书】
CSDN揭秘阿里中台!一文看懂阿里推荐业务的两项利器 | 赠书
本文插图
图1BE集群部署
图1中的proxy集群有3个实例 , 完全对等 , 互为备份 。 searcher集群有2行4列 , 这表示I2I等数据被划分成4份放到4列机器上 。 每一列上的数据各不相同 , 但是执行的计算逻辑完全相同 , 4列合在一起组成完整的一行 。 2行之间完全对等 , 互为备份 。
各种I2I/S2I/B2I的召回(search)、合并(union)、关联(join)、过滤(filter)和排序(sorter)均在searcher本地完成 , 最后经过proxy的合并排序(merge sorter)返回 , 如图2所示 。
CSDN揭秘阿里中台!一文看懂阿里推荐业务的两项利器 | 赠书
本文插图
图2 BE内部逻辑
图2中的I2I、S2I、C2I都是BE支持的召回功能 , BE底层是基于阿里巴巴搜索事业部研发的通用索引和检索模块indexlib实现的 , 这里主要用到了indexlib的KV和KKV检索的功能 。
顾名思义 , KV检索是输入一个或者多个K , 返回一个或者多个V 。 KKV检索是输入pkey和skey , 返回单个值;如果只输入pkey , 不输入skey , 则返回的是值序列 。 在实际的推荐业务中 , 主要就是用这两种检索召回机制 。
合并功能(union):指的是对多张表的检索结果进行合并 , 取并集 , 并记录召回的来源表的信息和是否被两张表同时召回的信息 。 这些召回过程中记录下来的信息可以用在算分阶段 , 比如不同的来源表权重不同 , 则最终得分不同;以及如果是两张表同时召回的 , 说明被召回的元素命中多种召回策略 , 则两张来源表的权重相加作为最终权重用于算分 , 得分就更高了 。
关联功能(join):由于左表所存储的信息有限 , 从左表召回元素集合之后 , 还有一些信息存在右表 , 通过join功能可以获取右表的信息 , 让记录的字段更丰富 。 该功能用于算分阶段和返回给调用方 。
排序功能(sorter):按某个字段或者表达式进行排序 , 支持用自定义插件实现 。
最后 , 对不同的列(partition)的结果进行合并 , 然后返回给调用方 , 这是一个完整的BE召回过程 。
2、BE向量召回和应用
时下有一种非常流行的召回机制叫作向量召回 , 它通过将元素(实体)进行向量化表征来构建便于高效检索的索引 。 在检索端 , 也用相同的方式对检索元素(实体)进行向量化处理 , 利用检索技术进行检索召回 , 得到距离相近的商品或者元素(实体)集合 , 并根据距离远近进行排序 。
实际上 , 这里用到的底层向量索引和检索技术是由阿里巴巴达摩院研发的 , 一方面将其封装成通用的底层功能库 , 集成到BE服务中 , 用于词向量和短文本向量召回的场景;一方面将其集成到其他服务(如HA3引擎)中 , 用于在文本搜索场景下解决文本匹配不足而造成的零少结果问题 。