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

项目背景

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

思路历程

历程一

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

历程二

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

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

历程三

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

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

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

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

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

总结

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

相关推荐
LTPP9 分钟前
自动化 Rust 开发的革命性工具:lombok-macros
前端·后端·github
一个热爱生活的普通人9 分钟前
Go语言中 Mutex 的实现原理
后端·go
Victor3569 分钟前
Dubbo(31)如何优化Dubbo的启动速度?
后端
qianmoq10 分钟前
轻松掌握Java多线程 - 第二章:线程的生命周期
java·后端
Postkarte不想说话11 分钟前
FreeSWITCH与FreeSWITCH对接
后端
小戴同学11 分钟前
实时系统降低延时的利器
后端·性能优化·go
风象南12 分钟前
Spring Boot 实现文件断点续传
java·spring boot·后端
Cache技术分享12 分钟前
36. Java 控制流语句 Break 语句
前端·后端
极特架构笔记13 分钟前
百万QPS秒杀如何解决超卖少卖问题?(图解+秒懂)
后端
创新技术阁15 分钟前
FastAPI 的两大核心组件:Starlette 和 Pydantic 详解
后端·python