2019年从0到1建设自如的搜索体系之后,亟需建立一套自己的搜索指标体系,来衡量和运营“搜索做的好还是坏”。这篇文章就是这样一个调研学习的总结,让你知道在垂直搜索领域,业内都是怎么建设搜索的指标体系的,都是用哪些指标来衡量搜索系统的表现的。
一、业界搜索技术中的“传统指标”
在传统的搜索引擎领域(以我们熟知的Google、百度等综合搜索引擎为代表),搜索的评价指标一般包含有准确率/召回率、P@10、MAP、NDCG/DCG、CTR、CVR等(这里我们仅讨论搜索相关指标,系统的指标如性能、空间利用率等不在讨论范围之内)。
WHY:为什么需要这些指标?
我们都知道,搜索的通用基本核心流程是:
搜索词 --> QP(词分析) --> 索引召回 --> 模型排序
只有这些就可以了吗?不!你还需要一些指标来对其效果和质量进行评测。这就是我们为什么需要明确和建立这些指标的核心原因:通过搜索指标,可以不断的对搜索系统进行改进和研究,也可以验证搜索引擎在真实环境中运行时的实际效果。
WHAT:这些指标都是什么(定义)?
指标一:准确率和召回率(用来评价“召回”效果)
准确率和召回率广泛用于信息检索和统计学分类领域的两个度量值,用于评价结果的质量。
- 准确率(Precision):是指检索出的相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率
- 召回率(Recall):是指检索出的相关文档数与文档库中所有的相关文档数的比率,衡量的是检索系统的查全率
这里有一个前期知识需要了解,就是混淆矩阵(Confusion Matrix)。混淆矩阵是数据科学、数据分析和机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型作出的分类判断两个标准进行汇总。比如我们用的是个二分类的模型(比如搜索里面我们关注相关还是不相关),那么把预测情况与实际情况的所有结果两两混合,结果就会出现以下4种情况,就组成了混淆矩阵。如下图所示:

- True Positive(真正, TP):将正类预测为正类数
- True Negative(真负 , TN):将负类预测为负类数
- False Positive(假正, FP):将负类预测为正类数,误报 (Type I error)
- False Negative(假负 , FN):将正类预测为负类数,漏报 (Type II error)
可以看到,通过使用混淆矩阵,可以看到每一种分类的预测情况。用混淆矩阵表示准确率和召回率的公式如下:
准确率(Precision) = 相关文档总数 / 返回的结果总数 = TP / (TP + FP) * 100%
召回率(Recall)= 相关文档总数 / 所有文档总数 = TP / (TP + FN) * 100%
两者的核心差异在“分母”上。提高准确率,在于减少误报数(FP),而提高召回率,在于减少漏报数(FN)。
放在实际的搜索场景中,因为搜索引擎处理海量数据,如果召回率达到很高,对于后续的排序以及引擎整体性能都有副作用,并且用户只会看一小部分,所以召回率太高对于满足用户需求来讲意义不大。但过高的追求准确率,可能会导致召回不全,或许某些搜索引擎的垂搜场景需要更多的长尾词带流量,但由于准确率要求极高,很多词会存在出不来对应结果的情况。因此在不同的场合中需要自己判断希望Precision比较高或是Recall比较高。也可以绘制Precision-Recall曲线来帮助分析。也可以使用F值(为准确率和召回率的调和平均值)来调和准确率和召回率的互斥关系。
F值 = 准确率 * 召回率 * 2 / (准确率 + 召回率)
指标二:P@10指标(用来评价“排序”效果)
此指标更关注搜索结果排名最靠前结果的质量,用于评估最终排序TOP10个文档中有多大比例是相关的。公式如下:
P@10 = 相关文档个数 / 10 * 100 %
这种方法比较暴力,并且只追求TOP10的结果不够全面,对于电商搜索来讲,此种方法基本无效。
指标三:MAP指标(用来评价排序效果)
MAP指标(Mean Average Precision)是针对多次查询的平均准确率衡量标准,是评价检索系统质量的常用指标。所谓MAP就是对AP取平均值,AP是衡量单个查询的检索质量的。AP值其实是对P@n的一个扩展。上述的P@10,n固定为10,而AP的计算是平均P@1,P@2......P@n所有的值。
指标四:NDCG指标(用来评价排序效果)
NDCG(normalized discounted cumulative gain,归一化折损累计增益)是一种近年来逐渐被采用的指标,尤其是在基于机器学习的排序方法中。NDCG是针对连续值的指标,它基于前k个检索结果进行计。公式如下:
NDCG@N = DCG@N/IDCG@N
DCG(Discounted Cumulative Gain): Cumulative为将所有的结果累加起来, Discounted指给排在后面的结果加一个折扣系数, 排序位置越靠后, 折扣系数越小。DCG@N的计算方式如下:

IDCG为理想情况下最大的DCG值。举个例子,搜索TOP6个结果的相关性是3、2、3、0、1、2,则计算步骤如下:
DCG@6 = 3/log(2) + 2/log(3) + 3/log(4) + 0/log(5) + 1/log(6) + 2/log(7) = 6.86
IDCG@6 = 3/log(2) + 3/log(3) + 2/log(4) + 2/log(5) + 1/log(6) + 0/log(7) = 8.37
NDCG@6 = DCG@6 / IDCG@6 = 6.86 / 8.37 = 0.8196
二、工业界真正使用的“评估方法”
上面我们了解了这些评测指标,都是基于有监督的情况进行指标测算的,也就是需要利用手工标注答案的方式进行评价,人力成本和时间成本都非常高。虽然在学术界用的比较广泛,但在工业界其实用的比较少。工业界更关注收益,比如CTR(点击率,点击的人数/看到的人数)和CVR(转化率,下单购买的人数/点击或浏览的人数),那有没有一种方法可以快速的并且自动化的评测方法来提高评估效率呢?答案就是A/B Testing。在我司,其实就是排序AB实验 + 神策埋点数据统计出CTR和CVR。
指标五:CTR(用来评价“搜索”的综合效果)
CTR(Click-Through-Rate)即点击通过率,是互联网广告常用的术语,指网络广告(图片广告/文字广告/关键词广告/排名广告/视频广告等)的点击到达率,即该广告的实际点击次数(严格的来说,可以是到达目标页面的数量)除以广告的展现量(Show content)。CTR是衡量互联网广告效果的一项重要指标。
指标六:CVR(用来评价“搜索”的综合效果)
CVR (Conversion Rate): 转化率。是一个衡量CPA广告效果的指标,简言之就是用户点击广告到成为一个有效激活或者注册甚至付费用户的转化率。
A/B Testing系统在用户搜索时,由系统来自动决定用户的分组号(Bucket id),通过用户的分组号自动将流量导入不同实验分支,使得相应分组的用户看到的是不同搜索引擎(召回策略)或者不同算法(排序策略)提供的结果。此时需要将用户行为进行埋点,用户在不同版本产品下的行为将被记录下来,这些行为数据通过数据分析形成一系列指标,而通过这些指标的比较,最后就形成了各版本之间孰优孰劣的结论。为保证其公平性一般有几点要求:
- 同一个用户在不同次搜索也可能进入不同的分组
- 保证样本数足够,更有说服力,但也要控制流量,因为新策略如果表现不行,流量较大则会产生风险
- 保证时间足够,一般一周为一个周期,比较符合显示流量的变化。有的场景可能更长,也许3-4周期
另外,也跟身边的朋友和同事咨询了一下,不同公司都用哪些指标来评估其搜索质量的,结果如下:
- 知乎:“挺多的,主要还是看ctr、曝光量、uv以及转化漏斗,基本的指标其实和自如也差不多”
- 汽车之家:“DCG、NDCG”
三、离线数据呢,如何评估?
前面总结的是搜索的“在线服务”部分,可以通过AB测试 + 大数据分析的CTR和CVR指标来进行评估和比较。那么,对于搜索的离线数据部分,也就是数据异构和同步模块,要怎么建立指标来评估优劣呢?
在网上搜索各种文章,也没有发现一篇系统讲离线数据部分该如何制定指标来评测系统的好坏。不过从经验和理解出发,觉得可以有几个最基本的指标,来反应整体数据的健康情况:
- 单数据同步时效:每一条实体从数据源头到数据末端的更新时效。
- 平均数据同步时效:所有数据同步时效的平均值。综合反应当前系统整体的数据同步效率。
- 单位数据同步流量:每分钟/小时的数据变化次数。反应数据系统的整体流量情况
- 变更数量差异对比:定期对比数据源的变化数和本系统变化数之间的差异。反应数据系统是否出现同步丢失的情况
目前已经确认可以做为离线数据指标的有两个:数据同步时效(<1min)和数据准确率(>99%)。要完成这两个指标的统计和计算,梳理到的数据大盘建设的核心技术难点有:
- 1、需要在数据流上建立TraceId
- 2、需要统计单位时间内上下游系统的“变更数量”
把每一次变更的数据都串联起来,需要一个类似于TraceId的唯一标识,这样能够把“每一次数据变更”从数据变更到最终生效,都记录这次变更的各节点时间。从而计算出在每个阶段的耗时,得到数据同步时效!
以天为单位,把两边的数据量做对比,保证数据量差异控制在可接受范围内(准确率保证99%以上)
四、前人经验,博光普照
下面是之前自如搜索推荐系统计划制定的相关指标,也可以来参考:

以上,是关于搜索在线和离线部分指标体系建设方面的调研和总结。
* 本页内容参考以下数据源:
- https://zhuanlan.zhihu.com/p/351986117
- https://baijiahao.baidu.com/s?id=1676784639267677225
- https://www.jianshu.com/p/54213477fba7
- https://blog.csdn.net/a19910112/article/details/89885753