🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI

整体架构

  • Scenarios
May 12, 2020
milvus

Milvus 项目:github.com/milvus-io/milvus

问题解答系统通常用于自然语言处理领域。它用于回答自然语言形式的问题,应用范围十分广泛。典型的应用包括:智能语音交互、在线客户服务、知识获取、个性化情感聊天等。大多数问题解答系统可分为:生成式问题解答系统和检索式问题解答系统、单轮问题解答系统和多轮问题解答系统、开放式问题解答系统和特定问题解答系统。

本文主要讨论针对特定领域设计的问答系统,也就是通常所说的智能客服机器人。过去,构建客服机器人通常需要将领域知识转化为一系列规则和知识图谱。构建过程在很大程度上依赖于 "人 "的智慧。随着深度学习在自然语言处理(NLP)中的应用,机器阅读可以直接从文档中自动找到匹配问题的答案。深度学习语言模型将问题和文档转换为语义向量,从而找到匹配的答案。

本文利用谷歌开源的 BERT 模型和开源向量搜索引擎 Milvus,快速构建了一个基于语义理解的问答机器人。

整体架构

本文通过语义相似性匹配实现了一个问题解答系统。一般构建过程如下:

  1. 获取大量带有特定领域答案的问题(标准问题集)。
  2. 使用 BERT 模型将这些问题转换成特征向量并存储到 Milvus 中。而 Milvus 会同时为每个特征向量分配一个向量 ID。
  3. 将这些具有代表性的问题 ID 及其对应的答案存储在 PostgreSQL 中。

当用户提问时:

  1. BERT 模型会将其转换为特征向量。
  2. Milvus 执行相似性搜索,检索与问题最相似的 ID。
  3. PostgreSQL 返回相应的答案。

系统架构图如下(蓝线代表导入过程,黄线代表查询过程):

1-system-architecture-milvus-bert-postgresql.png 1-system-architecture-milvus-bert-postgresql.png

接下来,我们将逐步向您介绍如何构建在线问答系统。

构建问答系统的步骤

在开始之前,你需要安装 Milvus 和 PostgreSQL。具体安装步骤请参见 Milvus 官方网站。

1.数据准备

本文中的实验数据来自: https://github.com/chatopera/insuranceqa-corpus-zh

该数据集包含与保险业相关的问答数据对。本文从中提取了 20,000 对问答数据。通过这组问答数据集,您可以快速构建一个保险业客户服务机器人。

2.生成特征向量

本系统使用的是 BERT 预先训练好的模型。在开始服务之前,请从以下链接下载:https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip。

使用该模型将问题数据库转换为特征向量,以便日后进行相似性搜索。有关 BERT 服务的更多信息,请参阅 https://github.com/hanxiao/bert-as-service。

2-code-block.png 2-code-block.png

3.导入 Milvus 和 PostgreSQL

将生成的特征向量规范化并导入到 Milvus,然后将 Milvus 返回的 ID 和相应的答案导入到 PostgreSQL。下图显示了 PostgreSQL 中的表结构:

3-import-milvus-postgresql.png 3-import-milvus-postgresql.png

4-import-milvus-postgresql.png 4-import-milvus-postgresql.png

4.获取答案

用户输入一个问题,通过 BERT 生成特征向量后,就可以在 Milvus 库中找到最相似的问题。本文使用余弦距离来表示两个句子之间的相似度。因为所有向量都是归一化的,所以两个特征向量的余弦距离越接近 1,相似度就越高。

实际上,您的系统库中可能没有完全匹配的问题。那么,您可以将阈值设为 0.9。如果检索到的最大相似度距离小于该阈值,系统将提示不包含相关问题。

4-retrieve-answers.png 4-retrieve-answers.png

系统演示

下图显示了系统的示例界面:

5-milvus-QA-system-application.png 5-milvus-QA-system-application.png

在对话框中输入问题,您将收到相应的答案:

5-milvus-QA-system-application-2.png 5-milvus-QA-system-application-2.png

摘要

阅读本文后,我们希望您能轻松建立自己的问答系统。

有了 BERT 模型,您不再需要事先对文本语料进行分类和整理。同时,得益于开源向量搜索引擎 Milvus 的高性能和高扩展性,您的问答系统可以支持多达数亿文本的语料库。

Milvus 已正式加入 Linux AI(LF AI)基金会进行孵化。欢迎您加入 Milvus 社区,与我们一起加速人工智能技术的应用!

=> 点击此处试用我们的在线演示:https://www.milvus.io/scenarios

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

扩展阅读