人工智能AI系列 - 问答系统

目录:

http://aias.top/

问答系统

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

文本搜索引擎

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

人工智能AI系列 - 问答系统_第1张图片

主要特性

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

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

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

  • 句向量

人工智能AI系列 - 问答系统_第2张图片

句向量应用:

  • 语义搜索/问答系统,通过句向量相似性,检索语料库中与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向量引擎镜像(用于计算特征值向量相似度)

安装文档

最新版本请参考官网

  • Milvus向量引擎参考链接
    Milvus向量引擎官网
    Milvus向量引擎Github
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文件.
    测试数据

人工智能AI系列 - 问答系统_第3张图片

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

人工智能AI系列 - 问答系统_第4张图片

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

人工智能AI系列 - 问答系统_第5张图片

5. 帮助信息

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

人工智能AI系列 - 问答系统_第6张图片

  • 初始化向量引擎(清空数据): 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链接

你可能感兴趣的:(AIAS,人工智能)