使用行为过滤表实现曝光过滤功能

更新时间:
复制 MD 格式

本文介绍使用智能召回引擎的行为表和行为过滤功能实现曝光过滤的需求

创建一个召回服务

用户可以创建一个X2I、向量、多路归并召回,详情参见快速拉起服务

注册行为数据表

MaxCompute客户端中准备数据

DROP TABLE IF EXISTS aime_example_expose;
-- 创建数据表
CREATE TABLE IF NOT EXISTS aime_example_expose (
  user_id STRING COMMENT "用户ID",
  item_id STRING COMMENT "物品ID",
  time BIGINT COMMENT "行为时间"
) PARTITIONED BY (
  ds STRING COMMENT "分区字段"
);
-- 写入向量数据,实际业务场景下,具体的写入数据由您的算法逻辑产出
INSERT OVERWRITE TABLE aime_example_expose PARTITION (ds = '20210822')
SELECT 'u0001' AS user_id, '10001' AS item_id, 1640275200 AS time UNION -- 20211224
SELECT 'u0001' AS user_id, '10002' AS item_id, 1640275200 AS time UNION -- 20211224
SELECT 'u0002' AS user_id, '10003' AS item_id, 1640275200 AS time UNION -- 20211224
SELECT 'u0002' AS user_id, '10004' AS item_id, 1640275200 AS time UNION -- 20211224
SELECT 'u0003' AS user_id, '10001' AS item_id, 1640275200 AS time UNION -- 20211224
SELECT 'u0003' AS user_id, '10002' AS item_id, 1640188800 AS time UNION -- 20211223
SELECT 'u0003' AS user_id, '10003' AS item_id, 1640102400 AS time UNION -- 20211222
SELECT 'u0003' AS user_id, '10004' AS item_id, 1640016000 AS time UNION -- 20211221
SELECT 'u0003' AS user_id, '10005' AS item_id, 1639929600 AS time UNION -- 20211220
SELECT 'u0003' AS user_id, '10006' AS item_id, 1639843200 AS time UNION -- 20211219
SELECT 'u0003' AS user_id, '10007' AS item_id, 1639756800 AS time UNION -- 20211218
SELECT 'u0003' AS user_id, '10008' AS item_id, 1639670400 AS time UNION -- 20211217
SELECT 'u0003' AS user_id, '10009' AS item_id, 1639584000 AS time UNION -- 20211216
SELECT 'u0003' AS user_id, '10010' AS item_id, 1639497600 AS time;      -- 20211215
-- 写入标识分区
INSERT OVERWRITE TABLE aime_example_expose PARTITION (ds = '20210822.done')
SELECT NULL, NULL, NULL;

在智能召回引擎控制台上注册数据

进入实例详情-数据管理页面,按照如下方式填写:

数据类型选择行为表数据ID填入行为表ID(如aime_example_expose),展示名称自定义填写(如"示例行为表"),来源储存选择maxcomputemaxcompute项目名称填入您的MaxCompute工作空间名,maxcompute源表名称填入已创建的MaxCompute表名(如aime_example_expose)。

点击“下一步”,开始配置索引

在配置索引页面,设置字段索引信息:将源表字段名称 user_id 映射为索引字段,勾选主键,数据类型为 STRING,主键为行为表的 user_id;将 item_id 映射为索引字段,勾选分片字段,数据类型为 STRING,分片字段为 user_id 关联的物品 ID,BE 会根据分片字段将数据分布到不同分片上;将 time 映射为索引字段,数据类型为 INT64,该字段记录行为发生的时间,业务配置的行为过滤时间窗口会根据该字段的值过滤时间窗口内的行为。

点击“下一步”,开始配置全量调度方式。注意:如果需要实时曝光过滤,需要对行为表开启增量,用户调用BE api将实时的曝光数据写入到行为表中。

全量调度策略中,调度策略选择依赖数据源产出新分区,分区填写ds(即MaxCompute表的分区字段名)。在实时调度策略中,将实时增量开关设置为

点击“配置完成并上线”,完成注册并发布

在服务中配置曝光过滤

在注册阶段或后续通过编辑服务的方式进入到服务配置页面。具体路径:在智能召回引擎控制台的实例详情页面,选择目标服务并进入编辑,即可打开服务配置页面,其中包含召回配置及过滤条件等设置项。

配置曝光过滤

进入X2I、向量、多路归并召回的配置页面,找到行为过滤的配置项。

  • 行为过滤开关:是否开启行为过滤。开启行为过滤后,用户可以选择关联一个行为表,在请求参数中传入行为表的user_id字段,召回引擎会查询user_id关联的行为数据物品,从召回过滤中将这些物品过滤。

  • 行为过滤时间窗口:该配置会根据行为数据中的时间戳字段,仅选择最近N天的行为数据进行曝光过滤。

  • 循环曝光开关:如果召回的物品经过曝光过滤后,不足return_count指定的返回条数,开启循环曝光后,召回引擎会按照行为数据的时间由远到近补足return_count的物品数。

  • 行为表:行为过滤关联的行为表。

单个user_id最多关联5000个行为数据,超过的部分按照时间顺序丢弃最旧的行为数据。

过滤条件区域还可配置物品属性过滤,选择物品详情表的字段并设置过滤条件(如某字段等于指定值)。完成所有配置后单击提交发布

向行为表写增量

对于开启增量的行为表,用户可以调用API向召回引擎实时写入增量信息,详情参见BeReadSDK