赞
踩
本文主要介绍如何实现一个简单的智能问答系统,首先看一下最终实现的演示视频:
演示视频
本系统为多领域智能问答系统。该系统与普通的问答系统不同,本系统根据用户所选择的语料库的不用切换应用领域,极大的方便了用户的使用。
本系统所使用的数据为问答对,即一个问题对应一个回答,如下表所示:
question | answer |
---|---|
问题1 | 回答1 |
问题2 | 回答2 |
… | … |
本系统主要实现流程为:
MySQL
数据库中Sentence-Bert
模型将所有问题进行文本向量化Milvus
存放在向量数据库中Sentence-Bert
模型进行向量化,然后使用Milvus
在其向量数据库中寻找与之相似的问题及索引,然后利用索引到MySQL
数据库中寻找对应的答案。本系统分为前端后端两部分,下面分别介绍一下前端和后端所使用的技术以及是如何使用这些技术实现本系统的,系统源码放在github
上,链接如下:
https://github.com/TiancNing/question-answering-system
文件夹包含内容说明:
前端就比较简单,主要使用Vue2
实现。使用了一个专门为聊天而设计的组件JwChat
,感兴趣的可以通过以下链接玩一下:
https://codegi.gitee.io/jwchatdoc/
后端部分主要使用Flask
框架实现,然后使用axios
与前端进行交互。所使用的包如下所示:
包 | 版本 |
---|---|
pymilvus | 2.0.0rc5 |
sentence_transformer | 2.2.0 |
pymysql | 1.0.2 |
pandas | 1.2.4 |
numpy | 1.21.6 |
sklearn | 1.0.2 |
flask | 2.1.2 |
flask_cors | 3.0.10 |
Sentence-Bert
模型使用了预训练好的模型,运行代码会下载已经与训练好的模型,因此在第一次运行时会花费较长时间来下载模型。
数据库使用MySQL数据库和Milvus向量数据库。在本项目中,这两个数据库均使用docker安装并运行,具体安装步骤如下:
docker run -d -p 3306:3306 --privileged=true -v /tiancn /mysql/log:/var/log/mysql -v /tiancn/mysql/data:/var/lib/mysql -v /tiancn/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
wget https://github.com/milvus-io/milvus/releases/download/v2.0.2/milvus-standalone-docker-compose.yml -O docker-compose.yml
docker-compose up -d
如使用自己的环境,需要更改QaSys
文件夹中app.py
文件中第15、18行的IP地址。
语料库可以自己制作也可以使用提供的关于保险和法律相关的两个语料库,这两个语料库在文件\QASys\corpus
中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。