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

项目背景

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

思路历程

历程一

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

历程二

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

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

历程三

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

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

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

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

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

总结

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

相关推荐
卷无止境1 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
在所不辞兄3 小时前
为什么神经网络对对抗扰动和分布偏移往往比较脆弱,而人类感知相对更鲁棒?
人工智能·深度学习·神经网络·机器学习
拖孩3 小时前
AI 帮我写的小程序「厨菜记」上线满月了,挣了两百块!!!
前端·后端·微信小程序
流烟默3 小时前
SSE 实战:在 SpringBoot + Vue 项目中零依赖实现轻量级实时消息推送
vue.js·spring boot·后端·sse
upala3 小时前
【仓颉语言入门 · 第二篇 第 9 课】
后端
Rain的Java大神之路4 小时前
别再死磕 MySQL 了:向量数据库与 RAG 生产落地实录(Java 工程师专场)
java·后端·面试
szxinmai主板定制专家4 小时前
储能 EMS、微网控制器选型:RK3588、RK3576、RK3568+FPGA 怎么选?多网、多 CAN、EMC 设计权衡
人工智能·深度学习·机器学习·fpga开发·工业网关·rk3576·电力网关
雨中飘荡的记忆4 小时前
SDD × Claude Code:先写清楚,再让 AI 写代码
后端
Thneonl4 小时前
主从延迟 0 秒的谎言:SBM 的三个盲区
后端·架构
孙浩君4 小时前
0行手写代码,我用AI做了一个打工人模拟器(含3D霓虹城市漫游)
前端·后端