准召系统

准召平台的目的是打造一个评估系统,简而言之是将一些query放入到诊断系统当中,通过诊断结果去判断当前的算法有没有成功召回大卡,从而帮助算法工程师去进一步优化这个问题。

数据从何而来

这里的数据来源会根据创造的评估任务的不同而不同,比如说,现在这里有两个评估功能。

准确评估

一个功能是去创建一个准确任务,这个准确任务的目的是判断召回大卡的位置是否达到了预期,这里并不是指将其召回到最上面或者只要召回了就好了,这里会对不同的query词造成的召回位置有不同的要求,不同搜索词的召回结果和位置,会根据搜索人的意图,而有自己最佳的位置。

不过,在讲逻辑之前,先说一下背景:数据来源其实是现网的历史搜索结果,现网的历史搜索结果会先放入hdfs,因为hdfs的特性,特别适合这种只写入,不修改不查询的场景,当天历史搜索结果写入完后,会执行一定的计算,把数据全部放入到clickhouse当中(原来是hive),这样就可以执行sql去灵活的获取数据了。

我们的目的是要进行的选择某一个垂直搜索的某一个业务进行准确召回,所以业务肯定会有对应的业务类型,那么去数据库中执行sql语句抓取就好了,抓取完数据后会进行一定的初步梳理,再落入mysql数据库,后面还需要二次处理。

当然,你也可以自己选择query放进去,比如说自选query就是这样的。

值得注意的是,在准确评估条件下,需要根据不同的条件去Clickhouse取数据。对于全搜而言,reqbusinesstype_ 和scene_是:reqbusinesstype_=0,scene_=(3, 20, 101, 74 )

对于视频号内搜而言:
reqbusinesstype_=14,scene_=(123)

SQL:

1
2
3
4
5
6
7
8
9
10
11
12
敏感数据
******
******
******
******
******
******
******
******
******
******
******

召回评估

那么前面说了,准确评估的数据可以直接去clickhouse取,那么召回评估的是否也可以呢?其实不行,因为这里涉及到很多的因素,比如,对于召回而言,其实需要去判断这个词组有没有被召回,那么就不能直接去数据库里面取,因为数据库里面的都是挑选好类别的,而是需要去现网打捞数据,然后把打捞回来的数据经过进一步的计算和预处理,才会变成适合去进行召回评估的数据,那么这种数据就会直接放入到hdfs文件里面,需要召回的时候再进行数据的读取。

当然,这里你也可以自己选择query放进去,因为这里本质上两个操作首先做的都是获取数据,而不是真正的算法评估结果。

值得注意的是,对于目前而言,是不区分全搜和视频号内搜的数据的,因为HDFS文件其实只有一份,所以不能够精确的去区分这个query词组是属于全搜还是视频号内搜的。

召回为什么要区分数据

其实对于搜索词而言,虽然都只是一些字符串,但是更多的是期望当前搜索词就是触发该垂直搜索的真实的字符串,如果使用别的垂搜的搜索词去还原这个搜索现场,虽然也是可以看到算法的结果,但是对于真实的搜索词组和搜索情况而言,可能就没这么的精确,所以,要去限制reqbusinesstype_ 和scene_是有原因的