1.后台DataCatalog可以帮助大公司更好地组织和管理资产,是数据驱动的重要平台。一个通用的数据目录平台通常包括元数据管理、搜索、沿袭、标签、术语等功能。其中,搜索是DataCatalog的入口功能,承担着让用户“找号”的主要能力。在字节跳动数据中心的DataCatalog系统中,每天有超过70%的用户使用搜索功能。2.功能需求业界领先的AugmentedDataCatalog需要支持类似Google的搜索体验来搜索数据资产,以满足不同角色用户的数据查找需求。我们的系统也是如此。搜索需要支持的主要功能包括:支持多种不同类型资产的搜索。目前系统包含15+个数据源,可以分为几类:Hive、看板等数据仓库表、数据集、实时表、主题、对象存储、LasFS等分布式文件系统。主要的挑战是不同类型的资产在搜索领域和权重上有明显的差异。支持个性化。目前该系统的用户遍布整个公司,他们的角色包括数据工程师、数据分析师、产品经理、项目经理、销售和数据科学家等,需要完成的数据任务也大不相同,比如作为数据开发、数据治理、BI、数据分析和机器学习等,因此数据目录搜索的个性化尤为重要。支持各种业务元数据的高级过滤。数据资产除了名称/别名/描述等字段外,通常还有一些业务元数据,如项目/业务领域/负责人/责任部门/标签/业务术语/生命周期状态等。通过支持指定的业务元数据进行过滤,帮助用户缩小搜索范围,更快找到对应资产。支持秒级实时性能。这里的实时是指元数据的变化需要反映到二级DataCatalog的搜索中。例如,需要在操作完成后1到2秒内搜索新表,并且需要不再在搜索结果中显示已删除的表。原因是用户在创建或更新资产后,通常会去我们的系统查看对应的修改是否生效。用户在浏览器中手动搜索所花费的时间通常在几秒的数量级。超过这个时间会使用户感到困惑,并降低使用整个数据目录的体验。支持谷歌相似搜索推荐(Typeasyousearch)功能。搜索完成是搜索的一种导航功能,它通过建议用户在键入时可以键入的相关内容来提高搜索精度。该功能对响应速度有一定要求。同时,由于数据资产的特殊性,相同前缀的资产较多,因此也需要按照热度进行排序。支持多租户。我们的系统不仅仅供公司内部使用,同时也提供公有云服务,所以支持多租户也是搜索的一个P0需求。支持多种语言。数据资产的名称/描述/标签/术语需要支持多种语言,搜索输入也可能是不同的语言,最常用的是英文和中文。不同语言的分词、专有名词词典、文本特征等都会带来一些挑战。3、个性化综合搜索为了满足以上需求,我们的系统采用了个性化综合搜索方案。不同于联合搜索,用户需要指定具体的资产类型来搜索或在搜索结果页面的不同栏目中显示不同的资产。统一搜索允许用户在搜索框中输入搜索内容,无需指定搜索。用户的个性化数据。优点是可以为不同用户提供统一的搜索体验,满足不同资产的搜索需求,同时为用户提供跨类型划定资产的能力。另外,综合搜索让我们在页面上进行标准化和展示,这样我们就可以在技术上规范搜索,从而可以访问和搜索新的数据源。3.1架构3.1.1总体架构我们的搜索系统使用开源搜索引擎Elasticsearch进行基本的文档检索(召回阶段),因此各种资产元数据将存储在Elasticsearch中。整个系统包括4个主要的数据处理:实时导入。当资产元数据发生变化时,对应平台发送实时变化消息,DataCatalog系统会消费变化消息,通过摄取服务更新Elasticsearch中的文档,满足实时搜索需求很快。离线导入。在实时导入过程中,网络波动等不可控因素可能导致更新失败,因此需要定时任务检查并增量更新缺失的元数据。用户行为记录。记录用户搜索点击日志,用于后续搜索的不良案例审核和模型训练。这部分采用前端埋点和服务端埋点相结合的方式。前端埋点有成熟的内部框架,埋点数据流入离线数仓表。缺点是这部分数据需要经过离线任务T+1后才能使用。服务器上的埋点数据直接进入Elasticsearch,即时可用。同时在不支持前端埋点的场景下(比如ToB场景),可以成为主要的埋点数据采集方式。在线搜索服务。提供搜索相关的在线服务,后面会详细说明。3.1.2服务架构上图是在线搜索服务的主要组件图。整个搜索服务分为三大服务:搜索推荐服务、聚合服务和搜索服务。1.搜索推荐服务(Typeasyousearch)。搜索推荐服务有一定的性能要求。一般来说,完成请求的完成时间不能超过200ms。如果超过200ms,用户会有更明显的延迟感。因此,它不能直接使用搜索接口来实现。我们的系统是基于Elasticsearch的Contextsuggester实现的。此外,还有两个问题需要考虑:(1)基于浏览的人气排名。页面可以推荐的词数是有限制的,一般是10个,当输入很短的时候,候选推荐词通常会超过这个限制。因此,按照资产的浏览热度排序,可以提高搜索推荐的准确性,提升用户体验。搜索体验。(2)时序问题。在一次搜索过程中,会有一系列的搜索推荐请求,服务器会并行处理这些请求。通常,由于候选推荐词较少,服务器对更长的输入响应更快。当用户输入速度较快时(如连续删除字符),前端发送的请求可能会返回得较晚,因此输入停止后的推荐词可能与输入不匹配。我们的解决方案是,前端在根据服务器响应刷新数据时,需要检查返回的输入是否与当前输入框的内容一致,以保持最终的一致性。2.聚合服务。聚合服务根据输入和筛选项提供搜索过程所需的统计信息。例如,用户想知道总共有多少个搜索结果,每个筛选项下有多少个候选结果,以及其他统计信息,以引导用户对搜索结果进行筛选,缩小搜索范围。同时,每个过滤项下的可选项需要根据输入和其他关联的过滤值动态生成,这部分也需要聚合服务提供。3.搜索服务。支持核心搜索流程,通过输入,返回对应的资产作为搜索结果。分为4个主要部分。4.预处理过程(Preprocess),主要包括输入的预处理和用户信息的预处理。(1)输入的预处理主要包括分词、去激活、词性恢复等基本文本处理。分词主要包括英文分词和中文分词。英文分词需要处理-_等链接符号,中文分词主要使用IK分词。禁用主要包含“的”、“了”、“我”和各种特殊符号“》>?”等各种词的无意义词。词性恢复是一把双刃剑,因为DataCatalog中的词不同于一般的自然语言,拥有更多的专有名词。例如,不应将直播列表还原为直播列表,以避免文本匹配分数不准确。同时这部分还包括识别输入中的强模式,比如“数据库名.表名”等。(2)用户信息的预处理。用户是否为超级用户、API用户等,可以判断用户经常搜索或从不搜索的资产类型。5.召回过程(Recall)负责通过输入和过滤项根据文本相关性从Elasticsearch中查询一定数量的搜索候选结果,用于下一步的精细排序。召回过程需要保证召回结果中包含用户期望的结果,否则后续的排序优化都是徒劳的。同时,需要将召回次数限制在一个合理的值。主要原因有两个:第一,几乎没有用户会查看排名靠后的搜索结果。其次,召回过多的候选结果会影响性能,尤其是在排序性能消耗较大的情况下。我们的召回主要分为自然召回和强规则召回两种方式。6.自然回忆。对预处理后的输入调用不同的资产类型,使用最佳字段策略,对资产的不同字段设置不同的权重。例如,命中名称的资产应该比命中描述的资产具有更高的优先级。这里的权重通常是根据经验设置的,可以从搜索结果的Badcase评论中得到。这个权重值的精度不高,足以保证能召回预期的结果。7.强大的规则召回。可以定制规则以补充自然召回,覆盖精确表名的召回,或从用户最喜欢的资产列表中召回。此外,还需要做好多租户隔离,防止当前租户的用户收回其他租户的资产。(1)排序过程(Rank),负责对召回结果进行最终排序。精细排序过程包括两部分:机器学习模型预测(Learningtorank)和基于规则的调整。Learningtorank部分后面会详细介绍。1)机器学习模型的在线预测,负责主要的排序工作。加载离线训练得到的PMML模型文件,提供预测功能。2)基于强规则的调整,包括各种自下而上的排序策略,比较常用的有:完全匹配的结果排名第一。b.添加Tie-breaker以确保具有相同分数的结果对多个搜索进行一致排序。(2)后处理(Postprocess),对排序后的结果添加各种不影响顺序的后处理。例如:8.权限检查,隐藏表设置。有些资产不想被没有相关权限的用户查看,需要在搜索结果中设置相应的字段返回给前端。9.高亮,高亮命中字段,返回前端。3.2LearningtorankLearningtorank主要分为三个部分:数据收集、离线训练和在线预测。搜索系统是一个数据驱动的系统,所以在系统设计之初就需要考虑数据的收集。收集的数据可用于评估和改进搜索性能。之前介绍过数据采集和在线预测,这里不再赘述。下面主要介绍离线训练部分。离线训练的过程主要包括数据标注、特征工程、模型训练和评估。这四个步骤不是从前到后一次搞定的,但是可以进行评估,发现不足,然后添加标注数据,添加特征,重新训练,再次评估。只有当评估效果有明显的好处时,才会上线测试。3.2.1数据标注作为DataCatalog的搜索系统,要获取大规模的人工标注数据并不容易。主要原因有两个:一是标注成本高,二是很难找到合适的Markers。因此,我们的标注数据主要有两个来源:一个是来自搜索日志中有点击的部分。我们将这部分数据分为三个层次,有点击的曝光、没有点击的前五曝光、没有点击的曝光。不同的分数;二是我们根据资产名称结合日志中未点击的输入,根据规则生成一定的训练数据。训练数据集需要不断更新。在review一个badcase的时候,可以针对需要改进的场景添加相应的训练数据。3.2.2特征特征工程是一个持续的过程。经过一系列的选择,我们系统的主要特征分为4类,涵盖??了搜索的文本特征、数据的权威性、用户的个性化数据和数据的时效性。下面列出了我们使用的一些主要特征和分类:文本特征(1)输入相关的文本特征a.输入长度,比如有多少个词,总长度等。b.输入语言类型,中文或英文(2)与文本匹配度相关的特征基于词袋的CQRElasticsearch查询分数,基于BM25数据的权威流行度:AssetRank,基于资产的用途和血缘关系,WeightedPageRank算法计算出的资产热度元数据完整性,包括资产业务元数据,如项目、主题、产品线等。最近1天整个平台被使用的总次数/7天/30天。资产的生命周期:如资产总点在线、等待下线、过时。点赞用户个性化数据,分为三类:静态个性化数据(1)负责人:当前用户是否为该资产的负责人(2)收藏:当前用户是否收藏过该资产(3)点赞:当前用户是否喜欢该资产?历史搜索查询行为数据当前用户最近1天/7天/30天在整个平台上使用该资产的次数当前用户最近1天/7天在DataCatalog平台上days/当前用户历史30天查询该资产的点击次数配合部门人员查询当前用户历史最近1天/7天/30天该资产的点击次数历史上最近1天/7天/30天数据目录平台用户资产所属部门所有资产的点击次数历史上最近1天/7天/30天当前用户,在DataCatalog平台查询资产负责人所有资产的点击次数数据有效性,用户会更倾向于使用最近创建的或有更新的资产资产创建时间、资产数据以及其他最近更新时间等3.2.3ModelLearningtorank通常有三种方法:Pointwise、Pairwise和Listwise。这三类方法各有优缺点,具体如下:Pointwise,对每个输入,对每个recalledasset分别打分(通常是Regression),然后根据得分排序。(1)优点:简单直观。(2)缺点:排序实际上不需要对资产进行准确的打分。该方法不考虑召回资产之间的相互关系。考虑到用户只会点击一组中的一项资产,排名最低的和排名最低的之前的资产对损失函数的贡献没有体现。Pairwise,对于每个输入,考虑召回结果中所有资产的二元组合<资产1,资产2>,采用分类模型,预测两种资产的相对排序关系。(1)优点:基于点击和原始相关分数的排序和标注简单,相比pointwise考虑了options之间的关系。(2)缺点:同样没有考虑排序前后顺序的重要性,样本生成复杂昂贵。对异常标注敏感,错误点影响大。Listwise考虑给定输入的召回资产集的整体序列,优化整个序列,通常使用NDCG作为优化目标。(1)优点:优化整个序列,考虑序列内资产之间的关系。(2)缺点:单个样本的训练量较大。如果样本太少,则无法预测所有样本的良好结果。我们尝试了Pointwise和Listwise,最终我们的系统采用了Listwise方案。主要原因是在我们的标注方式下,Listwise方案更容易标注。在具体实现上,我们采用了LightGBM的框架。3.2.4评估我们使用NDCG、AUC和验证命中率来评估模型。NDCG,归一化折扣累积收益。NDCG是推荐和搜索中常用的评价方法,用于评价排序结果整体的准确性。AUC,AUC主要反映排序能力的相关性,用于衡量正负样本不平衡情况下模型的离线拟合程度。回放带点击的历史数据点击率,用待评估模型预测带点击的历史输入,排序后得到Top3、Top5、Top10点击率作为参考。这种方式比较直观,缺点是不能在没有点击的情况下对历史数据体现效果。3.3Metrics在搜索服务发生变化或推出新模式后,我们需要衡量在线搜索的真实效果。目前我们主要通过搜索点击率和Top3点击率来衡量。由于DataCatalog搜索的特殊性,我们更关注模糊搜索的整体点击率和Top3点击率(输入和资产名称完全一致为精确搜索,其他为模糊搜索).其实点击率并不是越高越好。点击率太高可能意味着搜索结果页面显示的信息太少,用户不得不点击结果进入资产详情,即使他们只想查看一些简单的信息。用户对探索系统不太感兴趣,只会搜索熟悉的资产或肯定能找到的输入。当然,点击率低意味着搜索体验差。因此,在点击率保持在一定的健康范围内后,我们还需要关注模糊搜索和精确搜索的比例等指标。4.其他模式除了个性化的搜索需求,还会有一些场景用户不需要精细排序,只需要列出所有包含相关文本的资产,所以我们也支持简单的列表模式,用户可以在listSchemas通过指定字段对搜索结果进行排序。我们还计划实现一些查询语法功能,以支持用户在列表模式下更灵活地约束输入。5、后续工作DataCatalog系统的搜索功能还有很多有意义的工作值得我们继续探索,例如:血缘关系搜索。当一个资产的一级下游有上千条时,要从当前资产的众多下游中找到相关资产并不容易。因此,提供基于谱系的筛选和搜索是一个不错的选择。在多个租户之间迁移模型。作为支持多租户的公有云服务,由于租户之间的数据差异和新租户的冷启动问题,以较小的数据量和成本支持不同租户良好的搜索体验也是一个具有挑战性的方向。6、关于我们的火山引擎大数据研发管理套件DataLeap一站式数据中台套件,帮助用户快速完成数据集成、开发、运维、治理、资产、安全等,帮助数据团队有效降低工作成本和数据维护成本,挖掘数据价值,为企业决策提供数据支持。
