自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计

news2024/9/25 17:21:34

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

文章目录

  • 自然语言处理系列六十八
    • 搜索引擎项目实战》搜索引擎系统架构设计
      • 搜索引擎项目代码实战
  • 总结

自然语言处理系列六十八

搜索引擎项目实战》搜索引擎系统架构设计

公司做项目的一般流程是需求分析、产品设计、系统架构设计、各个模块详细设计、编码开发、测试、上线。需求分析和产品设计不用多说,这个阶段还没有技术开发人员实质性介入,但会参与讨论需求分析和产品设计的合理性评估讨论。产品设计出来后,产品经理一般会和技术开发人员开会讨论,产品开发能否实现,工作量评估,产品细节是否合理等,一般在产品大方向不变的情况下会有适当调整,之后可能会再次开会讨论,几轮后会确定产品设计原型,大概的开发工作量及工期。再接下来该系统架构师来登场了,架构师会根据需求和产品设计文档做技术架构及选型、模块拆解及各个模块的详细设计。架构设计好之后会把相关模块分配给相应的开发工程师及算法工程师,之后编码开发、测试、上线。这是软件开发的一般流程。
这节我们讲的是搜索引擎系统架构,那么做系统架构的都需要考虑哪些因素呢?首先的理解产品需求,知道实现产品需要哪些数据、技术框架、模块拆解以及各个模块的相互依赖的关系及整个流程。对于电商平台的商品搜索功能,那么数据就需要商品数据,商品数据从哪里获取呢?比如业务数据库Mysql是有的,但对于商品搜索的索引数据需要初始化和增量更新量部分,初始化直接用Mysql不太容易多台机器分布式创建索引,再就是大规模创建索引,Mysql数据库压力也会很大或者崩溃。所以可以考虑把Mysql的数据同步到Hadoop平台后再用Spark分布式的创建索引就能很好的实现需求。从这方面来讲,系统架构不仅要实现功能,还得考虑怎么设计更合理。了解了数据的来龙去脉,还得知道设计几个模块子系统,每个系统用哪些技术框架更好等。下面通过架构图如给大家详细的看一下,架构如图19.3所示。
在这里插入图片描述

图19.3 搜索引擎架构图
搜索和下面讲到的推荐算法系统是比较类似的,这个架构图包含了各个子系统或模块的协调配合、相互调用关系,从部门的组织架构上来看,目前搜索一般独立成组,有的是在搜索推荐部门里面,实际上比较合理的应该是分配在大数据部门更好一些,因为依托于大数据部门的大数据平台和人工智能优势可以使搜索效果再上一个新的台阶。下面我们从架构图从上到下的来详细的讲一下整个架构流程的细节。
1)搜索数据仓库搭建、数据抽取部分
(1)和搜索相关的Mysql业务数据库每天增量抽取到Hadoop平台,当然第一次的时候需要全量的来做初始化,数据转化工具可以用Sqoop,它可以分布式的批量导入数据到Hadoop的Hive;
(2)和搜索相关的Flume分布式日志收集可以从各个Web服务器实时收集比如搜索用户行为、埋点数据等,可以指定source和sink直接把数据传输到Hadoop平台。
2)大数据平台、搜索数据集市分层设计、处理
在大数据平台建设搜索相关的数据集市,分层设计,和推荐大致相同。
3)离线算法部分
(1)基于Spark平台分布式来创建搜索的索引数据库,后续的增量索引一般靠消息队列的方式异步准实时更新。
(2)Spark从Hadoop加载用户画像以及商品画像的特征数据训练基于分类模型的Rerank二次重排序算法模型,来预测对搜索的候选商品被点击的概率,因为特征工程里加入了和用户个性化的特征工程,所以搜索整体排序呈现个性化的特点。如果想增加个性化的程度,可以适当把搜索的候选集合适当扩大一些。
(3)离线计算的部分结果可以更新到线上Redis缓存里,在线Web服务可以实时从Redis获取推荐结果数据,进行实时推荐。
4)在线Web搜索接口服务
(1)在线Web搜索接口服务,先从Solr/ES搜索集群里面获取和关键词相关的搜索结果作为候选集合,然后从Web项目初始化加载好的Rerank二次重排序模型进行实时点击率预测,对搜索结果进行重排序,截取指定的前面的搜索结果进行展示。这个过程会读取一部分Redis缓存数据。
(2)App客户端、网站可以直接调用在线Web搜索接口服务进行实时展示搜索结果。由于个性化搜索比普通搜索处理更复杂,所以在性能上会有所下载,但整体在可接受的范围内,一般可以单独开个搜索区域进行展示,不替换之前的传统搜索。
从架构中看,一个完整的搜索引擎项目涉及的技术框架也是非常多,其中个性化的因素也涉及了用户画像系统,用户画像系统不仅仅可以用在推荐、搜索中,它是一个公司级别的通用系统,运营推广决策都会用到它。和其它部门的系统如何对接,同时适应多种应用场景就需要我们架构设计一个合理的系统。在搜索引擎最关键的核心技术之一垂直搜索引擎部分,即通过输入关键词进行检索的相关度搜索框架,下面结合业务需求对比几个搜索框架,以便确定用哪个框架更合适。

搜索引擎项目代码实战

搜索引擎项目代码实战内容可参见
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】书籍。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。

总结

此文章有对应的配套新书教材和视频:

【配套新书教材】
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:本书从自然语言处理基础开始,逐步深入各种NLP热点前沿技术,使用了Java和Python两门语言精心编排了大量代码实例,契合公司实际工作场景技能,侧重实战。
全书共分为19章,详细讲解中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注、文本相似度算法、语义相似度计算、词频-逆文档频率(TF-IDF)、条件随机场、新词发现与短语提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec词向量模型、文本分类、文本聚类、关键词提取和文本摘要、自然语言模型(Language Model)、分布式深度学习实战等内容,同时配套完整实战项目,例如对话机器人实战、搜索引擎项目实战、推荐算法系统实战。
本书理论联系实践,深入浅出,知识点全面,通过阅读本书,读者不仅可以理解自然语言处理的知识,还能通过实战项目案例更好地将理论融入实际工作中。
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目。

【配套视频】

推荐系统/智能问答/人脸识别实战 视频教程【陈敬雷】
视频特色:把目前互联网热门、前沿的项目实战汇聚一堂,通过真实的项目实战课程,让你快速成为算法总监、架构师、技术负责人!包含了推荐系统、智能问答、人脸识别等前沿的精品课程,下面分别介绍各个实战项目:
1、推荐算法系统实战
听完此课,可以实现一个完整的推荐系统!下面我们就从推荐系统的整体架构以及各个子系统的实现给大家深度解密来自一线大型互联网公司重量级的实战产品项目!
2、智能问答/对话机器人实战
由浅入深的给大家详细讲解对话机器人项目的原理以及代码实现、并在公司服务器上演示如何实际操作和部署的全过程!
3、人脸识别实战
从人脸识别原理、人脸识别应用场景、人脸检测与对齐、人脸识别比对、人脸年龄识别、人脸性别识别几个方向,从理论到源码实战、再到服务器操作给大家深度讲解!

自然语言处理NLP原理与实战 视频教程【陈敬雷】
视频特色:《自然语言处理NLP原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!

人工智能《分布式机器学习实战》 视频教程【陈敬雷】
视频特色:视频核心内容有互联网公司大数据和人工智能、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)。

上一篇:自然语言处理系列六十七》搜索引擎项目实战》搜索引擎项目概述
下一篇:自然语言处理系列六十九》搜索引擎项目实战》搜索框架技术选型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

目录 一、引言 二、文本分类(text-classification) 2.1 概述 2.2 DistilBERT—BERT 的精简版:更小、更快、更便宜、更轻便 2.3 应用场景​​​​​​​ 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 …

布偶猫应该喂什么猫罐头:交响乐金罐、希喂、尾巴生活测评

布偶猫,萌宠界的甜心代表,爱撒娇又黏人。想让它健康成长?喂养是关键。选粮不当,健康受损。今日精选三款热门主食罐,依据布偶猫营养需求,直接评测,助你快速了解何为理想之选。无需繁琐&#xff0…

状态机按键消抖(学习笔记)

状态转移图: module key_filter(Clk,Reset_n,Key, // Key_P_Flag, // Key_R_Flag,Key_Flag,Key_state);input Clk;input Reset_n;input Key; // output reg Key_P_Flag; // output reg Key_R_Flag;output Key_Flag;output reg Key_state; reg Key_P_…

002 JavaClent操作RabbitMQ

Java Client操作RabbitMQ 文章目录 Java Client操作RabbitMQ1.pom依赖2.连接工具类3.简单模式4.工作队列模式(work)公平调度示例 5.发布/订阅模式(fanout)交换机绑定示例代码 6.路由模式(direct)7.Topic匹配…

RQ-RAG:提升检索增强生成模型的查询精炼能力

人工智能咨询培训老师叶梓 转载标明出处 大模型在面对未见场景时,往往会产生不准确或虚构的回答,这限制了它们的实用性。为了解决这一问题,香港科技大学、香港理工大学和麻省理工学院的研究团队提出了一种名为RQ-RAG(Retrieval-A…

国产芯片LT8711HE:TYPE-C/DP1.2转HDMI2.0转换器,4k60Hz高分辨率

以下为LT8711HE芯片的简单介绍,如有介绍不尽之处,请指出 LT8711HE是一个高性能的Type-C/DP1.2到HDMI2.0转换器,用于连接USB Type-C源或DP1.2源到HDMI2.0接收器。 LT8711HE集成了一个DP1.2兼容的接收器和一个HDMI2.0兼容的发射器。另外&…

出处不详 取数游戏

目录 取数游戏题目描述背景输入输出数据范围 题解解法优化 打赏 取数游戏 题目描述 背景 两人将 n n n个正整数围成一个圆环,规则如下: 第一名玩家随意选取数字;第二名玩家从与第一名玩家相邻的两个数字中选择一个;而后依次在…

MOM成功实施分享(五)刨花板制造数字化聚焦业务场景

刨花板是一种人造板材,由木材或其他植物纤维原料制成。 在制造生产过程中目前存在以下痛点: 原材料质量不稳定:刨花板的质量很大程度上取决于原材料的质量,如果原材料的来源不稳定、质量参差不齐,会影响刨花板的性能…

从线段中搜寻提取闭合轮廓(三)

1.前言 做底层和数据的调试问题也是个麻烦事,如果没有方便的可视化工具辅助,那将令人感到痛苦,借助可视化的工具可以让我们高效、省心,进而心情舒畅,重要的是可以提高调试效率。 当然可视化工具也分不同层次的…

我对 monorepo 的一些思考

我对 monorepo 的一些思考 我对 monorepo 的一些思考 前言它的由来技术选型 管理工具语言与打包调试工具测试框架代码规范与质量控制本地引用与发包替换发包流程Github 相关配置部署 使用手册 功能特性总结如何使用?清除默认的包(可选)模板包介绍 packagesapps 更新…

25虾皮笔试shopee笔试测评sea笔试测评题型

虾皮笔试shopee笔试测评用的自己的笔试系统,全英文笔试: 1.Numerical Reasoning Test:10题,言语推断和数学计算 2. Verbal Reasoning Test:10题,言语理解,每题一段英文材料,选对错…

医院管理|基于java的医院管理系统小程序(源码+数据库+文档)

医院管理系统小程序 目录 基于java的医院管理系统小程序 一、前言 二、系统设计 三、系统功能设计 医生信息管理 排班信息管理 科室信息管理 科室预约 病历信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取:…

浅谈模型在信贷营销中的应用

浅谈模型在信贷营销中的应用 当前在信贷营销场景中,用户流量竞争愈加激烈,获客成本持续攀高,客户消费观念和消费信心趋向保守,传统的信贷营销方式效果逐渐乏力,借助数据挖掘技术对用户进行多元优化及精细化管理已经成为企业在经营发展中的普遍趋势。在此背景下,本文将围…

如何设置新建每个Python文件开头带上作者名和时间?

1、在pycharm界面中点击"File->Settings" 2、点击"Editor->File and Code Templates->Python Script" 3、添加信息后,点击"ok" # encoding: utf-8 # File : ${NAME}.py # Author: jianlu # Date : ${YEAR}/${MONTH}/${DA…

LBS 开发微课堂|轨迹重合率分析API升级:距离无上限,操作更简便

为了让广大的开发者 更深入地了解 百度地图开放平台的 技术能力 轻松掌握满满的 技术干货 更加简单地接入 位置服务 我们特别推出了 “位置服务(LBS)开发微课堂” 系列技术案例 第二期的主题是 《轨迹重合率分析API升级》 百度地图的鹰眼轨迹…

算法设计(一)

1.汉诺塔 介绍 汉诺塔(Hanoi Tower):它描述了如何将一堆大小不同、穿在一根柱子上的盘子移动到另一根柱子上,同时满足以下规则: 每次只能移动一个盘子。 每个移动盘子时,大的盘子不能放在小的盘子上面。 可以使用一根…

若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)

文章目录 一、开发脚手架选择二、RuoYi框架1、介绍2、版本发展3、为什么选择若依4、优缺点5、项目内置功能 三、后端项目部署1、拉取源码2、环境要求3、Maven构建4、MySQL相关(1)导入SQL脚本(2)配置信息 5、Redis相关(…

crdownload格式后缀的文件是什么东西?crdownload格式是什么

crdownload格式就是浏览器没下载完成的文件,如果下载完成了,那么就显示正常的格式和文件名了。

ARM32开发——DMA

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 基础概念CPURAM外设 ARM32程序存储 执行过程取数据 执行操作流程总结 基础概念 CPU CPU(Central Processing Unit&am…

[点云处理] cloud compare二次插件功能开发(三)CC插件总结与加速开发

本文完成一个点云变换的插件,同时也是对CC接口的使用做进一步说明,进一步理解CC插件开发流程,利用CC平台和已有代码加快实现定制功能。 这个功能在 cc 已有的功能已经存在,位于 edit->apply_transformation 这里 文件逻辑组织还…