从困境到突破:政府项目机器人数据查询的探索之旅

项目背景

最近,老板让我做个机器人儿,让这个机器人可以根据用户问的问题回答相关业务领域的数据。业务数据现在都在不同的库不同的表里。

思路历程

历程一

把全部的业务数据弄到一张表里面,'%like%'不就完事了。如果用户问"差旅住宿费标准"这种关键字类型的like可以查到,但如果用户问的"工作人员差旅住宿费标准"这种一段话类型的,那like不就g了,啥都查不到。

历程二

后来想这个机器人不就那么像现在的GPT,那我把全部的业务数据都整理出来全部交给模型不就行了,但因为是政府项目数据都需要保密,不能使用远程三方算力,不然会有数据泄露的风险;不能用现成的,大不了我就自己本地搭一个呗,这两年ai爆炸,网上各种各样的大语言模型都有,一顿操作按了许多,最终找到一个很不错的一只羊驼Ollama,github上start量高达75.7k。

具体安装使用流程我后面文章再介绍,用这只小羊驼回答效果是挺好的,就是电脑配置不行的话回答速度实在太慢。而且政府给的服务器连显卡都没有,只有cpu运算,随便来几个人同时问那服务器不就g了。

历程三

ElasticSearch,ES本就是为搜索而生的,把业务数据都同步到ES,ES通过ik分词器把用户的问题分成多个词语找到匹配度最高的数据

这样在某些条件下是可以满足要求的,但如果某条数据中'工作人员'这个关键字出现了多次,那es给他的评分就会非常高,从而给我们这条毫不相关的数据,所以我们还需要提高我们查询的精确度。

业务数据是从不同系统中整合过来的,如果能首先确定用户需要的是哪个系统的数据,那精确度就会高很多了,比如用户问"工作人员差旅住宿费标准",肯定是需要去[差旅住宿费系统]里面查的,如果问"XXX的车牌号是多少",那就需要到[车辆管理系统]里面查;所以我们可以根据每个系统创建一个他们专属的字典,当用户的问题中出现字典中的词语,我们就去对应的系统里面查询,这样精确度就会高很多了。

但是ik分词器并没有提供词语是在哪个字典中搜索出来的,所以这里我们需要在程序中把问题分词,并知道每个词语在哪个字典中,添加搜索条件。这里我们可以使用大佬们开源的分词工具HanLP

把我们的相应业务字典加进去,分析出词语所在的字典,再去ES搜索就ok啦。

总结

大语言模型的回答极其智能,只是对配置的要求过高,对于预算有限的公司不太适用,而且目前的模型还需要更多的训练,也不太符合政府项目的要求。倘若有用户引导其回答了过激言论或不符合当前政治的话语,那后果将不堪设想。

相关推荐
橘猫云计算机设计3 小时前
基于Springboot的自习室预约系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·毕业设计
秋书一叶4 小时前
SpringBoot项目打包为window安装包
java·spring boot·后端
心想事“程”4 小时前
决策树详解+面试常见问题
算法·决策树·机器学习
pwzs4 小时前
Spring MVC 执行流程全解析:从请求到响应的七步走
java·后端·spring·spring mvc
小兵张健4 小时前
互联网必备职场知识(4)—— 共情沟通能力
后端·产品经理·运营
羊小猪~~4 小时前
深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
网络·人工智能·pytorch·python·深度学习·机器学习·cnn
AskHarries5 小时前
使用 acme.sh 自动更新 SSL 证书的指南
后端
Chandler246 小时前
Go:反射
开发语言·后端·golang
pwzs6 小时前
深入浅出 MVCC:MySQL 并发背后的多版本世界
数据库·后端·mysql
盒子69106 小时前
go for 闭环问题【踩坑记录】
开发语言·后端·golang