1.搜索和推荐无处不在
我们习惯了百度、Google、360搜索的便捷,输入你想要搜索的关键词,立马呈现给你一批对应的结果,供你筛选。我们也经常上淘宝、京东、拼多多购物,输入想买的商品,瞬间列出一页一页的商品清单供我们选择。我们使用美团、饿了么搜索想吃的美食,美食列表会按照距离,订单数量,好评给你做排行榜。我们想要去旅行,打开去哪儿网、大众点评、小红书,搜索一下地名,就出现对应地方的旅游景点、住宿旅馆、网红打卡点等相应的信息和评价。
当然,打开今日头条、抖音、微博、小红书不用搜索也会推荐出热点新闻、热点视频等事件供你浏览。而你的浏览记录、点赞、转发、收藏、评论等动作,还会为接下来的事件推荐,提供更加准确的依据来。让你驻足停留,流连忘返,上瘾并沉迷其中无法自拔。还会引导你去做出消费的行为,比如:直播打赏,进入超链接,去购物商城等等。而你的这些动作,统统被称为用户行为,这些行为,还会继续曝光对应的内容,让其成为更火爆的新闻,会立马推荐给其他人,形成一波又一波的热点事件。
想想,是不是很惊讶?但是,这就是事实,我们深陷其中,却都习以为常,每天沉浸在手机端的各大APP里,畅游在这些信息的海洋中,被包围着,甚至被左右和绑架着,这个专业术语叫:用户粘性。
这就是目前互联网各个大厂主要玩的东西。是的,BTA,这也是他们最主要的赚钱办法。
想过没有,这里背后的逻辑是什么?对我们的生活有什么影响?积极的、消极的,这里我不去谈论,一句话两句话好像也说不清楚。我只想拆拆,背后的逻辑是什么?
这背后做决策的,就是被称之为智能搜索和推荐的算法。国内互联网,都足劲儿,搞这些算法,谁家的算法更智能更强大,更贴近你的习惯,谁家的用户量就多,对应APP的使用率就更广泛。而你,就是他们的用户。
本质,让你习惯上他们的搜索和推荐算法来,我们就是这样被套路的。
下面,用最通俗的语言,来拨开这套算法最神秘的面纱,科普一下背后的逻辑,当然不用担心,不涉及具体的算法、逻辑架构以及数据存储、处理等等。
互联网的数据从哪里来
我们打开互联网APP,里面的内容包罗万象,我们可以搜索感兴趣的内容,或者上京东购买商品,或者上知乎表达想法,或者刷抖音的短视频、看直播,在美团点个外卖、在去哪儿网购买个机票、浏览今日头条、微博的热点新闻和资讯、上淘票票订购电影票或者查询百度知识问答库、维基百科,用高德定位导航去某个地方等等。这些动作所呈现的内容信息,统统叫做数据。专业点叫做互联网大数据。
比如百度搜索,你搜出来的所有内容都是百度搜索引擎通过网络爬虫爬过来进行整合的数据,以及各大网站主动提交规则给百度的数据,让百度添加到搜索的规则引擎中,增加网站的曝光率,这个数据非常海量,那么百度大数据的容量有多少?百度技术委员会理事长陈尚义透露:“百度每天处理的数据量将近100个PB,1PB就等于100万个G,相当于5000个国家图书馆的信息量的总和”。
而淘宝、京东、拼多多、美团里面的数据,主要包括店铺数据、商品数据、客户数据、物流数据、运营数据等等。这里主要介绍商品数据,它的来源就比较专项了,这里有运营人员通过店铺后台按照类别进行编辑和上架,也有个人通过APP的运营后台进行注册店铺。而像京东自营平台的商品信息,更多是商家上架的商品栏目。当然,这个数据量非常庞大。据统计,淘宝拥有近5亿的注册用户数,每天有超过6000万的固定访客,同时每天的在线商品数已经超过了8亿件,平均每分钟售出4.8万件商品。这背后就包含每个电商经营者具体电商的支付数据、库存数据、物流数据、日志数据等等。光订单量产生的数据,淘宝日订单量在5000万单以上,美团3000万单以上。淘宝单日数据产生量超过50TB(1TB等于1000GB),总体存储量可达40PB(1PB等于1000TB)。
而像抖音、今日头条、小红书、知乎这样的APP平台,其数据主要包括新闻、资讯类、视频内容、直播,当然现在也有抖音电商、抖音外卖等等,这里的数据类型更为丰富。但是数据来源更多是用户自产自销,广大用户在对应的APP后台编辑好文章、短视频,上传给对应APP,后台APP的审核机制对信息进行审核,形成即将发布的新闻资讯,再通过推荐算法推荐给广大用户。抖音用户人数为8亿,抖音的活跃人数1.3亿人而快手的活跃人数为7300万人。可以想想这些人,也就是广大用户我们,每天产生多少新的视频出来。
而像知乎、博客、CSDN、各大新闻的留言网站、评论网站等,其数据主要为留言数据,图片数据,各大网站直接收录到对应数据在网站里面,充实网站的信息,这里也可以用海量来形容。据报道,知乎发布“我的知乎十年历”用户数据报告。报告显示,成立十年以来,知乎已经积累了超过4400万个问题和2.4亿个回答。想想,你想要的问题,是不是知乎都有?知乎背后的搜索引擎会对问题进行类型分类和数据训练、做活跃度排序、再进行分布式存储。然后当你按照问题的描述去搜索的时候,知乎的搜索引擎会进行一系列的流程,呈现给你排序好的答案。当然还会做热门排行榜推荐。
上面的各大APP的数据内容,其实只举了一些经典案例,不过已经包罗万象了,这个就是互联网的魅力,所有的内容以数据的形式,被搬上互联网,被随时随机的检索和浏览。而我们,拿起手机,在数据形成的虚拟世界里徜徉。为什么总说互联网是有记忆的,因为我们每个人,每一次的上网的过程,浏览过的信息,所做的操作、交流的文案,在这里都会留下足迹,而且永久存储。想想,是不是还是挺震撼的。
百度输入关键字,背后发生了什么
有没有想过,当你在百度、360、知乎、头条、抖音输入了一段想要搜索的文字,点击一下搜索按钮就呈现给你一页一页排好序的结果列表。这里面就是搜索引擎在起作用,背后的搜索链路也非常长,这里用比较通俗的语言向大家展示背后的逻辑。
搜索的本质是想检索出用户需要的数据,再以一种动态网页(HTML)的形式展示给用户,上面我们已经介绍了各大互联网的数据,这个数据是海量的,也是非常丰富多彩的。需要将这些数据组织、管理、存储并且高效的利用,就需要各种手段。
互联网大数据工程师就是专门干这个的,本质就是做数据的存储与计算、任务的调度与管理。这里我们主要以存储来介绍,数据本身都是在高性能的分布式服务器中存着,而且各种类型的数据需要各种不同的数据库去存储,比如常见的关系型数据库oracle、myql、sqlserver、postgresql等等。如视频类、图片、文本类、日志类数据存储需要存在非关系形数据库中,如:mongodb、elasticsearch、hbase等,上面的数据库产品可能大家或多或少的听说过。
而搜索的过程,就是搜索引擎分析你输入的句子(语义解析),并通过自然语言处理(NLP)来进行分词,以标准化你输入的关键字。因为人们输入的句子是千差万别的,怎么让机器理解你得想法,以及准确让机器知道你想搜索的目标结果是什么(意图分析),再进行类型预测,这里每种不同的资料存储再不同的服务器上,所以需要做预测到底是想搜哪个(类目预测)。此时服务器拿到了一批结果,但是结果很多,有相关性强的也有相关性弱的,就需要做排序(召回结果排序),而且排序的过程通常需要好几轮,因为指标太多了,我们经常看到搜索某个关键词,返回上亿条分页的结果。但是往往你只会看最前面的几条(当然你说最前面是广告,这就另说了,百度要盈利,将付费的广告排在了前面,这个体验大家都会吐槽)。上面的流程,是不是非常绕口又感觉很难理解?下面拆开进行详细分析。
上面搜索的流程,大概分别为:抓取建库;意图识别;结果召回;检索排序;结果展现,以保证搜索的内容能够满足快速,全面、准确、稳定。
抓取建库
本质就是组织数据,训练数据。从海量的互联网信息中获得有用的数据进行清洗、保存、更新。这个过程因此通常会被叫做“spider”,Spider抓取系统是搜索引擎数据来源的重要保证,如果把web理解为一个有向图,那么spider的工作过程可以认为是对这个有向图的遍历。从一些重要的种子 URL开始,通过页面上的超链接关系,不断的发现新URL并抓取,尽最大可能抓取到更多的有价值网页。对于类似百度这样的大型spider系统,因为每时每刻都存在网页被修改、删除或出现新的超链接的可能,因此,还要对spider过去抓取过的页面保持更新,维护一个URL库和页面库。
抓取过来的数据需要进行清洗,数据清洗就是对数据进行质量把控,比如百度有专门的模式识别方案。提出那些违反规则的超链接进行屏蔽。还有最关键的一步就是对所有的资源建立索引。索引就相当于一个字典给其建立目录,当你的内容发生变化了,相应的就需要更新索引,以维持整个索引的有效性。
意图识别
在用户输入的句子中,搜索引擎准确理解用户表达意图的效果,是能够完成一次查询的关键,因此系统对用户关键字的理解是用户和搜索引擎建立联系的必要环节。而搜索引擎做的这部分工作,被成为意图识别。主要包括关键词的分词、类目预测、改写、实体识别、分词权重等部分(各模块前后顺序会因系统需要而做适当调整)。这部分的工作就主要是自然语言处理和机器学习的部分,还需要不断训练的语料库作为支撑,一般搞人工智能的开发,会负责这部分,当然数据标注,人工干预通常都是苦力活。一方面,搜索系统往往可以积累大量的用户行为数据,如点击、收藏、购买等。另一方面电商场景有比较健全的商品类目体系。
结果召回
结果召回,是更加专业点的叫法。本质就是搜索的过程。你的词想服务器发送搜索的命令,会拿到一批结果,而这个叫做搜索召回。除了搜索召回,还有文本召回,结构化召回,个性化召回。本质都是拿数据,拿到一批数据。
检索排序
搜索的结果有很多,但是哪一条数据最重要的呢?这里就需要排序,具体的算法就不说了,总体思路是对每条结果有其权重和指标,来计算对应的分数。再通过分数进行排序,当然可不是一次就完成的,这个过程选哟重排序、粗排序、精排序等等。
结果展现
排序的数据,就等于有了结果,然后搜索引擎的用户来说,搜索结果页是离其最近的部分。搜索结果页的主体包含与查询的相关网页链接(URL)和与查询相关的自动摘要(Automatic Summary),这两个部分的合成还需要一些额外的计算。做分页下一步就需要通过网络响应给前端去展示了,但是如果这样搞,拿百度估计要崩了,考虑一下,全国几亿人有多少人会搜索相同的结果,好不容易拿到的结果接下来又一个人再走一下流程,那服务器的炸。所以一般而言,垂直内搜索都会建立缓存。将结果一方面响应给前端进行展示,尤其视频、音频都是多节点存储。另一方面会做分布式缓存,满足下一次有命中缓存的结果进行直接返回,加快响应速度。
总结
本文以概述的方式大概介绍了互联网搜索背后的故事,让普通没有涉及到开发的用户能够概览,也期望能够解开互联网那层最神秘的面纱。这里没有深入讲解专业知识和模型算法,因为涉及的链路非常长,某一个环境进去,都是知识的海洋和无底洞,我也仅仅只知其一。
下一节,会重点讲当你打开抖音时候,手动划一划,就能为你推荐出你喜欢的小视频,其背后的逻辑。