全部产品

数据对接期

更新时间:2020-09-16 10:20:52

数据对接期

1、什么是场景ID,该如果进行埋点,如果在查询中使用,bhv表场景ID是否需要对应,有什么作用?

举例1.1

内容表(item)中有一个itemA,其item_id为1,场景ID字段值为:1001,1002

行为表(behavior)中有两条行为,分别为

item_id=1,scene_id=1001,bhv_type=click;

item_id=1,scene_id=1002,bhv_type=expose

场景是指物品投放的不同地方,可以理解成是对物品的一个分类。如果您没有多场景需求,将该字段(scene_id)置为空即可。如果进行埋点请阅读数据埋点中场景ID埋点部分。如果对场景理解存在歧义,请阅读投放场景使用指南

一个物品可以在多个场景投放,需要在scene_id字段指定时用逗号隔开

查询中如果有多场景ID,则在参数sceneId中带上需要投放的ID即可。如果没有多场景,则不用填充此参数。详情参照获取推荐结果

查询时如果带上1001,则可能会召回该物品(跟进算法模型决定是否推荐该物品),如果带上1003,则永远不会召回该物品

行为表和内容表中的场景ID需要一致,正确的填写场景ID有助于算法模型训练。

行为表中数据表明,该物品在场景1001中有一次点击行为,在1001中有一次曝光行为。算法模型对1001和1002分别训练,也就是说两个场景的行为训练不会相互干扰。合理的填写场景ID有助于提供算法效果。

2、如何确定数据上传成功,如果查询已经上传的数据?

SDK返回结果为true则意味的消息发送成功。是否正确执行,需要通过更新记录查询、数据表查询等功能进行确认。
详情文档请见:AIRec控制台—-数据管理

3、生效了一份新版本的数据,上一版本数据会被清理掉吗,之前的增量数据会如何处理,新的数据多久线上生效?

注意:通过历史数据启动的实例才会有数据版本。

举例4.1用户A在购买推荐服务并上线后,近期公司业务发生较大调整,所有的用户ID需要做一次更新。原ID区间1-10000需要更换至20000-30000。现考虑如果在推荐系统中进行数据更新

在数据有较大变动的更新,我们建议用户优先使用SDK增量推送的方式。这样算法效果过渡会比较平滑。

用户A可以通过SDK增量推送的方式对user表进行更新,先批量add新的数据(20000-30000),然后对应的bhv行为数据也使用新的userid。平稳一段时间后,再del掉不用的用户ID。

如果考虑到没有足够的quota空间,决定使用全量更换数据版本的方式。在切换了数据版本后,由于智能推荐的后台算法调度周期限制,item数据会在4小时后生效,user和bhv数据会在第二天0点生效。数据实际生效前还是会查到老的数据信息。数据实际生效后上一版本数据会被完成清理掉,之前的增量数据会被完全清理。

用户A决定走全量替换的方式,原有数据版本M,他需要新建一个数据版本N,上传最新的user数据。在控制台生效完毕数据版本N后,停掉M的增量,替换成N的数据流程的增量信息。但是数据实际生效在第二天0点,当天查到的数据还是M的userId(1-10000),当天推送的新的增量(20000-30000)不会丢失,会在第二天一起生效。

在智能推荐中,为了防止给用户反复推送相同的内容,曝光过滤是必不可少的一环,尤其对于新闻这类行业,尤其重要。

对于物品量较少的用户,极有可能一个userId多次访问后,会出现查询SDK的返回空结果。请用户做好抄底准备,不要让前端出现空窗。后期智能推荐会开放控制台,让用户可以定制曝光过滤时间。

4、类目有什么用处,该如何使用,必须填吗?

类目的合理上报,能提升效果,并能做打散功能。

类目可以仿照淘宝的类目页面,相当于对物品按N级进行归类。目前类目的功能在智能推荐中主要用于打散,也会在排序的时候作为特征考虑到模型中,对算法效果有促进作用。

类目的使用需要视用户的业务逻辑,如果没有打散需求,可以置空。如何使用参见 数据规范 中对类目相关字段的解释,如果埋点参见 数据埋点指南,打散功能参见 通过实例运营策略提升推荐结果多样性

5、我的数据还没有准备好,如果快速通过构造的数据启动服务,测试相关的SDK?

智能推荐服务提供了可以用来测试的全量数据,可以从如下链接下载对应的数据,用以启动服务,快速测试SDK的推送和查询等相关功能。测试完毕后,可以通过新建数据版本的方式更换掉测试的全量数据,也可以直接通过增量的方式,推送覆盖原来的测试数据。

初始化数据下载地址

6、如何设置tag字段,用户表和物品表中的tag是需要相互关联的吗?

用户A运营了电商类的APP,自己的运营团队维护了一个标签池:红色,黄色,黑色,休闲,正装等。用来定位其商品和用户的偏好。

用户表和物品表中的tag字段是相关联的,其tag池数量建议不要超过50000。

对于传给智能推荐的user和item表,其使用的tag标签需要出自同一个标签池,所有标签个数建议不要大于50000

TAG字段主要是用户对user,item的一种画像的定义,由用户的算法团队或者运营团队人工加上的标签,也可以是user注册是自己的选择。智能推荐算法训练时,会将tag作为输入信息的一种。合理的标签,会对算法效果有正向促进的作用。

如果一个user的标签tag是黑色,正装。那么智能推荐系统会更偏向于像该用户推荐具有该标签的商品。这是一个正向促进的作用。

7、数据版本是什么意思?

注意:通过历史数据启动的实例才会有数据版本。数据版本是为了客户方便管理实例的全量数据,目前最多可拥有3个数据版本,方便进行线上数据版本的更迭和比对优化。每一次执行全量数据导入,都会自动生成一个数据版本。3个数据版本中,将始终有1个服务线上的版本,直到有新版本生效;其余2个未生效的版本将保持先进先出的原则。
I、当我们导入数据后,会生成如下的数据版本数据导入

II、如果有两个数据版本,则可以把之前的数据版本删除shanchuIII、生效数据版本(点击生效后,触发模型训练,大概需要1.5小时的时间)点击生效生效中

8、新的数据版本生效后,后面对数据的订正,只能通过SDK增量推送吗?是否是实时更新的?

在数据版本生效稳定后,我们建议后面所有的数据更新走SDK增量推送的方式。所有的更新都是实时生效的。

9、add和update操作的区别是什么?

add为新增操作,update为更新操作。add操作将新增一条文档,若已存在则替换原本文档。上报需提交主键以及全部字段信息。update操作将更新一条已有文档,确认主键后仅上报待更新字段即可。如果update一条不存在的文档,将需要等待一个内部调度周期才可生效。

10、标签的数据怎么传?

多个标签通过逗号分隔。
单条内容标签数不能超过100个,标签池总个数建议不要超过50000。

11、feature,feature_num是什么含义?

feature:字符串型描述性物料特征。
feature_num:数值型物料特征。
自定义的字段特征可传到这两个字段之中。

12、item_type没有我的数据类型,怎么办?

当前已有的类型为:image、article、video、shortvideo、item、recipe、audio。如果已有的类型中有没用到的,比如audio没用到,想要的类型为专题合辑,那么就用audio代表专题合辑。

13、traceinfo是什么?从哪里拿到?有什么作用?

①trace_info是什么:推荐链路跟踪信息。
②从哪里可以获取到:通过服务端SDK从AIRec获取推荐结果。
③trace_info如何使用:获取后,当推荐出来的item_id被用户产生了行为,需要在上报该条行为数据时,将此trace_info字段原样上报到行为表中。④trace_info的作用:主要用于智能推荐的算法工程师进行模型调优与排查。
测试样例

14、什么是正例数据,什么是负例数据?

正利数据指的是用户的正向反馈行为,主要是点击,点赞,购买等。初始化的时候必须有点击。
负利数据主要是的是曝光,expose。(如该内容仅有曝光而并未发生点击、点赞等行为,即认为负利的反馈。曝光、点击行为为必传行为。)

15、用户、物品、行为都需要实时上报吗?为什么?

用户和物品和行为的增量/存量数据都需要实时上报。
不实时上报的影响:
行为数据:因为是实时链路,不实时上报的话做不到实时反馈。用户数据:如果有新用户没及时上报,带着新用户的id来请求智能推荐的时候是无法更精准的进行推荐。物品数据:建议是实时的。有变动的物品信息要实时更新。

16、切换标准版服务需要重新传数据吗?

不用。用入门版测试,如果想迁移正式环境直接升配,平滑升级。

17、通过服务端SDK推动数据的常见错误

①ClientException: DocumentError.MissingField : Missing fields, field names: item_id
问题原因:
没有上传必填字段如item_id,或者是上传过来的必填字段为空字符串。

②ClientException: BadFormat : null
问题原因:
需要您检查上报过来的JSON字符串是否拼接错误,导致JSON parse失败。

③ClientException: InstanceNotExist : The specified instance does not exist
问题原因:
1、实例还未启动成功
2、推送数据代码中的regoin区域写错,需要改成已购实例所在区域。

④ServerException:FetchDocumentBackendError:Internal server error
问题原因:
请检查传过来的JSON数据中固定的字符串是否拼写错误,如field错写成了filed。