又是一年开学季,少量莘莘学子步入高校的同时又有一群学生行将毕业,每一个学生都逃不开论文的洗礼。在学术论文畛域,简直每一位大学生都要面临论文检索、查重环节。想写出一篇高质量论文,后期大量的信息储备必不可少,而文献检索成为咱们获取信息的重要途径。
万方数据常识服务平台以客户需要为导向,整合了数亿条寰球优质常识资源,依靠弱小的数据采集能力,利用先进的信息处理技术和检索技术,为决策主体、科研主体、翻新主体提供高质量的信息资源产品。明天就来聊聊,咱们如何应用百度飞桨 PaddleNLP 降级论文检索系统。
业务背景
万方论文检索系统的外围问题是文本匹配工作,这个零碎须要在数亿条常识资源中,基于检索匹配算法,依据用户的检索词疾速地在海量文献中查找类似文献。
在零碎工作执行过程中,检索词和文献的相关性会间接反映到后果页面的排序下面,而排序准确率间接影响着用户的搜寻决策效率和搜寻体验。因而,疾速且精确地刻画检索词和文档之间的深度语义相关性至关重要。
然而,面对海量数据和频繁的用户搜寻申请,同时解决高速和高效问题,给万方文献检索零碎带来了诸多挑战:
- 难点 1——标注数据少:
因为人力资源缓和无奈对系统中海量的数据资源进行标注,如何利用海量无监督数据,主动生成弱监督数据? - 难点 2——很难精准计算语义类似度:
如何精确计算用户检索词和文献之间的类似度? - 难点 3——检索时效性差:
面对海量资源和一直增长的用户需要,如何疾速、高效得找到相干文献也是一大挑战。
除了检索场景外,论文查重、类似论文举荐的外围办法也是文本类似度计算。在这些业务上,咱们经验了长期的摸索,最终应用飞桨。得益于 PaddleNLP 丰盛的中文预训练模型,面向工业级场景的模型选型与部署能力,使得咱们十分高效的搭建了端到端工业级的文本向量学习和计算环境,实现了学术检索系统的多方面降级。
技术选型和我的项目实际
飞桨在产业实际方面提供了强悍的产品性能和技术支持,咱们基于 PaddleNLP 中丰盛前沿的预训练模型、应用 Paddle Serving 实现了服务端的疾速部署,解决了理论业务落地中的痛点。
咱们通过 PaddleNLP 提供的高质量中文预训练 Word Embedding 结构训练数据标签,联合 SimCSE 以及飞桨深度优化过的文本匹配预训练模型 Sentence-BERT,大幅晋升了算法精度。
在模型性能方面,咱们采纳了多线程数据预处理、模型降层、TensorRT 部署。成熟开发工具的选用,极大地升高了利用深度学习技术进行产业落地的难度。
▲技术计划整体架构图
咱们的技术计划整体架构图如上所示。概括来说,次要包含三局部:结构数据、模型抉择和产业部署。
- 结构数据
万方业务积攒了海量的无监督数据,然而标注数据极少。咱们应用 PaddleNLP 开源的高质量中文预训练词向量,疾速构建了弱监督的类似文本匹配数据,节俭了大量的人力标注老本。
为了数据指标的进一步晋升,咱们还采纳了无监督语义匹配模型 SimCSE。
此外,万方搜寻零碎积攒了大量用户行为日志数据(如浏览、点击、浏览、下载等),咱们也从业务角度筛选出了大量监督数据。
SimCSE 参考:\
https://github.com/PaddlePadd…
- 模型抉择
对于文本类似度计算,咱们应用过字面匹配、word2vec、FastText 等办法,都无奈学到足够精度的文本语义示意。咱们晓得百度在搜寻场景有丰盛的技术积攒,也关注到 PaddleNLP 里集成了 ERNIE、BERT 等一系列预训练语义模型,并且针对检索场景给出了系统化计划。
近年来,以 BERT、ERNIE 为代表的预训练语言模型成为 NLP 工作的支流模型。
Sentence-BERT 应用孪生网络结构,在 BERT 模型的根底上进行 Fine-Tune,引入(DSSM)双塔模型,合乎咱们的业务场景,因而咱们抉择该模型作为咱们的基准模型。
较 FastText 模型,Sentence-BERT 的匹配成果晋升了 70%,用户的整体体验大幅度提高。
咱们将数据库中的文献事后通过 Sentence-BERT 计算失去文献向量后,通过开源向量数据库 Milvus 建设索引库,疾速召回类似向量,缩小了检索系统的响应工夫。
Sentence-BERT 参考:\
https://github.com/PaddlePadd…
语义索引策略参考:\
https://github.com/PaddlePadd…
- 产业部署
线上检索系统尤其须要思考疾速响应需要。Sentence-BERT 12 层 Transfomer 构造,具备宏大的参数量和计算量,在部署上线时面临响应实时性的微小挑战。
为了满足线上业务对于性能上的要求,咱们通过飞桨原生推理库 Paddle Inference 联合飞桨服务化部署框架 Paddle Serving 进行推理预测。
在不损失精度的前提下,咱们将 Sentence-BERT 从 12 层压缩至 6 层,并联合了 TensorRT 减速等优化伎俩,使得 QPS 达到 2600,超预期实现了指标。
延长 - 检索场景整体计划
以上咱们参考了 PaddleNLP 检索场景整体计划,其次要包含畛域预训练(Post-Training)、语义匹配和语义索引三大部分。
- 畛域预训练是在通用预训练模型根底上,在畛域数据上持续预训练,让预训练模型学习更多的畛域常识。
- 语义匹配模块针对存在高质量监督数据的场景,给出了检索系统中排序模型计划。此外,针对高质量标注数据获取老本高,数据量少的问题,语义匹配模块还内置了 R-Drop 数据加强策略,进一步晋升小数据量场景下排序模型成果,从而帮忙检索系统达到更优的成果。
- 语义索引模块针对无监督和有监督数据场景,别离给出了无监督语义索引(SimCSE)和监督语义索引的计划,即便没有监督数据,也能利用无监督语义索引计划晋升检索系统的召回成果。
针对工业利用落地部署的高性能需要,预测部署环节还提供了基于 FasterTransformer 的高性能预测能力以及简略易用的 Python API,便于咱们将模型疾速落地到理论业务中。
后续在万方业务中,咱们将应用 R-Drop 数据加强策略、FasterTransformer 进一步应答继续新增的用户需要。
如果您想理解具体计划,可关注 PaddleNLP,跟进其最新性能,也可在直播中与我交换哦:
GitHub Repo:\
https://github.com/PaddlePadd…