利用 Milvus 构建人力资源管理系统

✏️  作者介绍:

梁天新博士,Milvus 用户

  1. 应用背景

大中型企业通常会聘用上万名具备不同技能的员工,将他们分配在不同工作岗位上。人力资源部门在人员配置时需要先遍历公司内部职员的简历。当没有员工满足岗位需求时,则需要再遍历已收藏的上万份求职简历。先不论如何收藏管理海量简历,人工筛选简历非常耗时耗力,且容易出错。如何低投入地搭建一套易用、易维护的人力资源管理系统是长期困扰管理人员的难题。
搭建一套人力资源系统并非难事,但为每一份简历找到匹配的岗位并不容易。此过程主要面临以下几个难点:
  • 个人简历写作格式不统一。为了使自己的简历更美观、更具吸引力,候选人会在简历中使用多种模版或添加图片。
  • 个人简历文件格式不统一。Word 文档和 PDF 格式较为常见。还有大量以图片形式保存的简历。
首先,Word 文档和 PDF 格式文件无法直接存入数据库,即便经过人工录入也需要重新组织格式以满足现有系统的要求。其次,依赖 SQL 正则表达式检索语义相近的简历时不够准确。最后,传统数据库需要长期维护,包括人工整理、统一格式、规范化入库等步骤。
因此,我们尝试利用深度学习方法和 Milvus 向量搜索引擎搭建一套简便易行的人力资源查询管理系统。

  2. 技术流程

图:技术流程图
2.1 提取 PDF 格式简历信息
本项目使用 pdfplumber 处理 PDF 文件。pdfplumber 可以:
  • 获取 pdf 文件中的文字
  • 提取表格内容:使用 pdfplumber 轻松提取简历中的教育背景等表格中的信息。
  • 进行图形调整:PDF 页面截图中的文字或表格会被框起,因此我们能够判断 PDF 文件识别情况,以便及时调整配置。
2.2 简历中信息类型的划分
虽然简历格式不同,但所含信息大体类似。本项目将数万份简历中的信息进行如下划分:
  1. 基础信息:姓名、出生年月、学历、性别、电话、籍贯
  2. 教育经历:学位、毕业时间、毕业院校
  3. 工作经历:工作单位、工作时间、职务职位
  4. 项目经历:项目名称、项目时间、项目责任
  5. 个人技能:证书情况、个人荣誉、兴趣爱好
整理信息时需要合并相似类型的信息,例如:
  • “工作经历”、“工作经验”均属于“工作经历”
  • “教育经历”、“教育背景”均属于“教育背景”
  • “自我评价”、“个人信息'”、“证书情况”、“个人技能”、“个人荣誉”、“兴趣爱好”等均属于“个人技能”
2.3 构建信息抽取模型
在构建信息抽取模型前,我们需要将此前使用 pdfplumber 提取整理的信息制作成训练信息抽取模型的数据集。样例如下:
本项目使用 BERT-PointerNet 阅读理解式文档抽取模型。我们需要先确定抽取信息的类型,如“项目责任”,然后将信息类型同 BERT 模型进行二次合并,再用 PointerNet 抽取具体信息,如”主要负责为客户提供一手或二手房咨询、租赁买卖等相关业务的全程代理服务'。

图:BERT-PointerNet 模型[1]

我们使用训练过的 BERT-PointerNet[1]模型将非结构化的简历数据转换为向量,以便储存在 Milvus 向量搜索引擎中。
图:BERT-PointerNet 的测试效果

2.4 将数据存储在 Milvus 向量搜索引擎中
本项目中只有文本类型的数据才能被输入进数据库中。我们先搭建了 bert-serving-server 作为数据入库的 encoder 服务端,在 T4 下服务稳定,QPS 至少可以达到 16 条/秒。我们使用 Simbert 作为入库的 encoder 预训练词向量,准确率在本项目中比 bert-base 的高 10%。我们也尽量将年龄、工龄等信息转换成向量存储在数据库中。对难以转换成向量的内容信息,我们则选择进行数字化映射。
如学历的数字化映射: ['博后','博士','硕士','学士','大专','高中','其他']映射为 ['1','2','3','4','5','6','7']
每份简历具有唯一的 human_id。任意一条描述语句都作为一条 embedding 进入 Milvus 数据库,并且对应一个唯一的 unique_id。因此,每份简历都有数十个 unique_id 和一个唯一的 human_id。unique_id 对应的 embedding 代表了候选人的相关信息。这种数据入库方式有利于后续的数据查找和结果返回。
本项目中我们构建了两个collection,分别是项目经历 collection(Collection_Project)和工作经历 collection(Collection_Work)。每个候选人的两个 collection 中除了转换后的项目经历和工作经历 embedding 以外其余的都相同,特别是 human_id 完全一致。由于工作经历和项目经历在描述候选人历史的时候数据维度不同,因此需要分开存储,更利于精确寻找候选人。如下图:
2.5 查询方式 
我们利用 Milvus 向量搜索引擎查询数据库中的简历信息。任意信息组合的查询均可在 20 毫秒内完成。例如:查找年龄在 20 至 40 岁之间、本科以上学历、精通策划项目、擅长编写 Java 和 Python 代码的候选人。
我们将“精通策划项目”和“擅长编写 Java 和 Python 代码“分别映射为两条向量输入到数据库中进行检索。样例如下:
通常我们选择前 topk=10 名,然后通过 human_id 进行去重,最后留下合适的候选简历。我们采用全量更新的策略:每次出现新简历入库或者无效简历删除,我们都会对库里的所有向量重新分配 ID。

  3. 项目总结

本文详细介绍了如何利用 Milvus 搭建人力资源查询管理系统。我们搭建的人力资源查询管理系统具有低运营成本、高并发、易维护等优点。无需掌握 SQL 语句也可以轻松查询符合岗位需求的候选人。使用这个系统能够显著节省 IT 和人力成本。在当前这个文本、图像、音频等非结构化数据爆炸式增长的时代,通过 embedding 技术将非结构化数据映射成多维向量后再进行检索已成为趋势。Milvus 作为分布式向量检索引擎,具有高性能、易部署的特性。Milvus 极大地节省了项目开发成本,显著提高了系统检索性能,并很好地满足了本项目的技术和业务需求。
参考文献
[1] 王炳乾,梁天新,宿邵勋.基于BERT的多层标签事件抽取模型[J].中文信息学报,2020.
(0)

相关推荐

  • 我入职阿里后,才知道原来简历这么写

    私下里,有不少读者问我:"二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了."说实话,我自己好多年没有写过简历了,但我认识的一个同行 ...

  • “用这份简历模板,我拿到了大厂offer,现在送给你!“

    梦想在大公司实现抱负,却无从下手? 其实,你与大厂之间只隔着一个HR!实际上,在HR眼里求职者没有高水平低水平,只有高质量.高匹配度. 简历作为你求职的敲门砖,你准备对了么? 阅读了成百上千份简历之后 ...

  • 周五投的简历是不是很容易被忽视?

    一个朋友最近打算换工作,于是每天下班回家就在网上投简历,其实朋友本人的各方面工作能力都还挺不错的,但却很少接到邀约面试电话.为此,他找到小编大诉苦水,为什么自己总是接不到面试电话,是不是投简历时间不对 ...

  • “零收入”依然淡定,一家基础软件公司的冒险与底气 | 甲子光年

    中国开源项目的雄起时刻到了吗? 作者 | 王学琛 编辑 | 火柴Q 这是第三次了,年初的董事会召开前,投资方的投后同事来问星爵业绩规划,他说:"不需要做报表,我们今年的目标收入多半还是0.& ...

  • 如何做出优秀简历.pdf

    如何做出优秀简历.pdf

  • 如何利用人力资源管理系统,解决99%的企业都存在的人事管理问题

    无论是刚出来工作的职场小白,还是久经沙场的职场老兵,或多或少都在职场上遇到不太人性化的制度问题.企业常见的人事管理问题有哪些?比如: "内容复杂,还得层层传达":传统的人事流程冗长 ...

  • 2021年企业选择人力资源管理系统的新方向?

    目前,国内HRSaaS市场发展的已经比较成熟了,特别是受到去年疫情的影响,许多企业考虑到人力成本.工作效率等方面,都会选择引入一套人力资源系统去系统化管理企业和员工.短期看,变化可能不会特比大,不同企 ...

  • 人力资源管理系统,人力资源管理的四大体系

    人力资源管理系统,人力资源管理的四大体系 目前,大多数国内外企业在人力资源管理上仍存在很大差异.主要区别如下:国外企业经过几十年的实践,人力资源管理模式已经成熟,人力资源管理的功能划分越来越完善:而国 ...

  • 企业更换人力资源管理系统时需要注意哪些方面?

    目前,很多企业面临一个的问题,就是随着企业的发展,期员工规模.组织架构.管理策略.薪酬结构等等都会发生很大的变化.一旦原有的人力资源管理系统无法满足企业现有和未来发展的需求,管理者就会选择更换一个更符 ...

  • ArcGIS中利用模型构建器将较多数据合并为一份数据

    昨天 今天开始我们来介绍一些非常独特的工具,他不存在于Arctoolbox中,仅在模型构建器中可以找到并使用. 我们新建模型后找到工具栏插入--仅模型工具,在里面可以发现一些平时不常使用的工具. 掌握 ...

  • 人力资源管理系统选择中容易忽略哪些问题

    人力资源管理系统对现代企业管理非常重要,但人力资源管理系统的选择不应盲目关注价格,而应在多方面充分考虑.调查和规划. ①功能可操作性 目前人力资源管理系统的功能非常齐全,为了引起企业的重视和认可,很多 ...

  • 人力资源管理系统—人力资源管理对企业的重要意义

    人力资源管理系统,人力资源管理对企业的重要意义 人力资源管理是指根据企业发展战略的要求合理配置人力资源.企业通过招聘,培训,使用考核,激励,调整等一系列程序,调动员工的积极性,充分发挥员工的潜力,为企 ...

  • 人力资源管理系统|人力资源系统中包含了哪些内容版块

    人力资源管理系统|人力资源系统中包含了哪些内容版块 人力资源是企业发展过程中的核心管理因素.建立信息管理系统是企业发展趋势.人力资源系统可以通过自动化解决企业的管理问题. ①基本交易功能模块:人员.考 ...

  • 人力资源管理系统的效率怎么得以提升呢

    人力资源管理系统的效率怎么得以提升: HR部门的工作比较复杂,涵盖了人力资源管理的六个模块,包括招聘管理.绩效工资.考勤调度.员工管理等.对于大中型企业来说,如何提高人力资源的工作效率已经成为每个企业 ...