人工智能AI系列 - 问答系统_ai人工智能问答-程序员宅基地

技术标签: AIAS  人工智能  

目录:

http://aias.top/

问答系统

问答系统(Question Answering System, QA)是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。其研究兴起的主要原因是人们对快速、准确地获取信息的需求。问答系统是人工智能和自然语言处理领域中一个倍受关注并具有广泛发展前景的研究方向。

文本搜索引擎

本例子基于文本搜索引擎,支持上传csv文件,使用句向量模型提取特征,并基于milvus向量引擎进行后续检索。

主要特性

  • 底层使用特征向量相似度搜索
  • 单台服务器十亿级数据的毫秒级搜索
  • 近实时搜索,支持分布式部署
  • 随时对数据进行插入、删除、搜索、更新等操作

句向量模型【支持15种语言】

句向量是指将语句映射至固定维度的实数向量。将不定长的句子用定长的向量表示,为NLP下游任务提供服务。 支持 15 种语言: Arabic, Chinese, Dutch, English, French, German, Italian, Korean, Polish, Portuguese, Russian, Spanish, Turkish.

  • 句向量

句向量应用:

  • 语义搜索/问答系统,通过句向量相似性,检索语料库中与query最匹配的文本
  • 文本聚类,文本转为定长向量,通过聚类模型可无监督聚集相似文本
  • 文本分类,表示成句向量,直接用简单分类器即训练文本分类器

1. 前端部署

1.1 安装运行:

# 安装依赖包
npm install
# 运行
npm run dev

1.2 构建dist安装包:

npm run build:prod

1.3 nginx部署运行(mac环境为例):

cd /usr/local/etc/nginx/
vi /usr/local/etc/nginx/nginx.conf
# 编辑nginx.conf

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root   /Users/calvin/Documents/qa_system/dist/;
            index  index.html index.htm;
        }
     ......
     
# 重新加载配置:
sudo nginx -s reload 

# 部署应用后,重启:
cd /usr/local/Cellar/nginx/1.19.6/bin

# 快速停止
sudo nginx -s stop

# 启动
sudo nginx     

2. 后端jar部署

2.1 环境要求:

  • 系统JDK 1.8+
  • application.yml
# 文件存储路径
file:
  mac:
    path: ~/file/
  linux:
    path: /home/aias/file/
  windows:
    path: D:/aias/file/
  # 文件大小 /M
  maxSize: 3000
    ...

2.2 运行程序:

# 运行程序

java -jar qa-system-0.1.0.jar

3. 后端向量引擎部署(docker)

3.1 环境要求:

  • 需要安装docker运行环境,Mac环境可以使用Docker Desktop

3.2 拉取Milvus向量引擎镜像(用于计算特征值向量相似度)

安装文档

最新版本请参考官网

sudo docker pull milvusdb/milvus:0.10.0-cpu-d061620-5f3c00

3.3 下载配置文件

vector_engine.zip

3.4 启动 Docker 容器

/Users/calvin/vector_engine为主机路径,根据需要修改。conf下为引擎所需的配置文件。

docker run -d --name milvus_cpu_0.10.0 \
-p 19530:19530 \
-p 19121:19121 \
-p 9091:9091 \
-v /Users/calvin/vector_engine/db:/var/lib/milvus/db \
-v /Users/calvin/vector_engine/conf:/var/lib/milvus/conf \
-v /Users/calvin/vector_engine/logs:/var/lib/milvus/logs \
-v /Users/calvin/vector_engine/wal:/var/lib/milvus/wal \
milvusdb/milvus:0.10.0-cpu-d061620-5f3c00

3.5 编辑向量引擎连接配置信息

  • application.yml
  • 根据需要编辑向量引擎连接ip地址127.0.0.1为容器所在的主机ip
##################### 向量引擎 ###############################
search:
  host: 127.0.0.1
  port: 19530
  indexFileSize: 1024 # maximum size (in MB) of each index file
  nprobe: 256
  nlist: 16384
  faceDimension: 512 #dimension of each vector
  faceCollectionName: questions #collection name
  commDimension: 512 #dimension of each vector
  commCollectionName: comm #collection name

4. 打开浏览器

  • 输入地址: http://localhost:8090
  • 上传CSV数据文件
    1). 点击上传按钮上传CSV文件.
    测试数据

2). 点击特征提取按钮. 等待CSV文件解析,特征提取,特征存入向量引擎。通过console可以看到进度信息。

  • 文本搜索 输入文字,点击查询,可以看到返回的清单,根据相似度排序。

5. 帮助信息

  • swagger接口文档:
    http://localhost:8089/swagger-ui.html

  • 初始化向量引擎(清空数据): me.aias.tools.MilvusInit.java
        String host = "127.0.0.1";
        int port = 19530;
        final String collectionName = "questions"; // collection name

        MilvusClient client = new MilvusGrpcClient();
        // Connect to Milvus server
        ConnectParam connectParam = new ConnectParam.Builder().withHost(host).withPort(port).build();
        try {
            Response connectResponse = client.connect(connectParam);
        } catch (ConnectFailedException e) {
            e.printStackTrace();
        }

        // 检查 collection 是否存在
        HasCollectionResponse hasCollection = hasCollection(client, collectionName);
        if (hasCollection.hasCollection()) {
            dropIndex(client, collectionName);
            dropCollection(client, collectionName);
        }
       ...

官网:

官网链接

Git地址:
Github链接
Gitee链接

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39355136/article/details/122068824

智能推荐

YDOOK:ANSYS 进行电磁场仿真的第二步:建模、制定特性和分网_ansys的电磁场建模-程序员宅基地

文章浏览阅读620次。1. 先建立模型;2. 再在建立好的模型的各个区域中内制定特性;一般需要指定的特性有:1. 单元类型;2. 选项;3. 单元坐标系;4. 实常数;5. 材料性质。3. 通过 GUI 为模型中的各个区域赋予特性。4. 可以通过以下命令为模型的各个区域赋予特性:ASEL >> 选择..._ansys的电磁场建模

小知识 (2)_int b = max_element(a, a+4) - a;-程序员宅基地

文章浏览阅读125次。1.max_element()函数和min_element()函数,就是找最大值最小值,数组:int position=max_element(a,a+n)-a;//返回在数组中的下标int data=*max_element(a,a+n);//返回值容器: int position=max_element(v.begin(), v.end())-v.begin(); int it..._int b = max_element(a, a+4) - a;

unity2018.3版本win10 SDK和JDK 安装_unity 2018.3.1 用哪个版本的jdk-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏13次。SDK和JDK获取:链接:https://pan.baidu.com/s/1PI54NAVJCNFpV7cPfBkg5w提取码:k4bd1、下载JDK,安装jdk8.152版本配置环境变量:在系统变量中添加:1、变量名:Java_home; 变量值:C:\Program Files\Java\jre1.8.0_152(jdk安装路径)2、变量名:ClassPath; 变量值:.;..._unity 2018.3.1 用哪个版本的jdk

Map简介_介绍一下map-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏19次。Map简介HashMapTreeMapMap 的遍历小结Map 是一组成对的“键值对”对象,允许使用键 (key) 来查找值 (value)。它提供了一个映射表,可以通过某个对象来查找另一个对象。它也被称作关联数组,因为它将某些对象与另外一些对象关联在一起;或者称作字典,通过键对象来查找值对象,就像在字典中使用单词来定义一样。Map 基本特性:以 key-value 键值对的形式存储数据,..._介绍一下map

兄弟mfc9140cdn无法识别_兄弟Brother MFC-9140CDN打印机驱动下载-程序员宅基地

文章浏览阅读357次。兄弟Brother MFC-9140CDN打印机驱动官方版是一款专业实用的驱动程序,兄弟Brother MFC-9140CDN打印机驱动官方版可以适用于型号为MFC-9140CDN的打印机,兄弟BrotherMFC-9140CDN打印机驱动最新版主要用于解决打印机无法被电脑识别的问题,增加打印机使用的稳定性。基本参数产品定位多功能商用一体机产品类型彩色激光多功能一体机涵盖功能打印/复印..._兄弟mfc9140cdn链接打印机

Debian上安装rz/sz包_debian rz-程序员宅基地

文章浏览阅读3.9k次。在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件.对于Debian, rz/sz默认没有安装所以需要手工安装. sz: 将选定的文件发送(send)到本地机器; rz:运行该命令会弹出一个文件选择窗口, 从本地选择文件上传到服务器(receive). 1. 软件安装 把安装文件上传到/tmp目录下. # cd /tm_debian rz

随便推点

win10 wifi连接不上服务器未响应,Win10无线网连不上怎么办|Win10 WIFI无法连接5招解决...-程序员宅基地

文章浏览阅读1.2k次。现在大部分用户都会使用无线连接来上网,使用电脑的朋友可能会遇上无线无法连接,Wifi连接不上的一些问题,这时相信很多朋友都会无从下手,不知道如何解决,其实通过以下5招就可以完美解决了,遇上无线连接不上的朋友赶紧来学习一下吧。第一招、无线网卡驱动问题无线网卡驱动出现问题肯定会导致上不了网,解决起来也不难。1、右键单击“开始”按钮并从菜单中选择“设备管理器”,启动到设备管理器窗口后,展开“网络适配器”..._win10无线网卡连不上wifi

php ffplay.exe输出,四、FFmpeg使用---FFmpeg程序的使用(ffmpeg.exe, ffplay.exe, ffprobe.exe)-程序员宅基地

文章浏览阅读122次。欢迎加入技术交流群群号: 552340860一、FFmpeg程序的使用(ffmpeg.exe, ffplay.exe, ffprobe.exe)本章主要介绍一下ffmpeg工程包含的三个exe的使用方法。ffmpeg的官方网站是:http://ffmpeg.org/编译好的可用版本的下载地址: http://ffmpeg.zeranoe.com/builds/根据平台自行下载对应的版本,如图所示..._php ffplay

python数字转百分比%,保留小数点后两位_python百分数保留两位小数-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏7次。python数字转百分比%,保留小数点后两位zrs = 215nan = 100nan_zb = "%.2f"%(float(nan/zrs)*100)+"%"print(type(nan_zb))print("男生占总人数的: ",nan_zb)#结果:# <class 'str'># 男生占总人数的: 46.51%_python百分数保留两位小数

tensorflow_2.2_Resnet50实现花的识别_resnet50花卉图像识别-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏6次。Resnet50介绍Resnet50与之前在Resnet34中介绍的几乎一样,唯一有区别的就是:残差块由两层卷积变成了三层卷积,网络更深,如下:# 结构快def block(x, filters, strides=1, conv_short=True): if conv_short: short_cut = Conv2D(filters=filters*4, kernel_size=1, strides=strides, padding='valid')(x) _resnet50花卉图像识别

android多线程多文件下载,android 多线程并发下载文件-程序员宅基地

文章浏览阅读332次。Download.javapackage com.wansha;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android..._安卓 多文件下载

失真系数 matlab,加载相机矩阵和失真系数-程序员宅基地

文章浏览阅读267次。我正在尝试校准相机,使用AruCo标记进行头部姿势估计 . 我尝试在C中通过OpenCV库进行校准但没有成功,所以我使用MATLAB相机校准工具箱校准了我的相机,我的AruCo标记检测代码在C中,需要相机矩阵和失真系数作为参数 . 我的问题是如何在标记检测功能中加载这些参数 . 我尝试将相机矩阵和失真系数存储在数组中,它显示错误“ argument of type int is incompati..._argument of type "int **" is incompatible with parameter of type "int *

推荐文章

热门文章

相关标签