🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI
  • Home
  • Blog
  • 全体的なアーキテクチャ

全体的なアーキテクチャ

  • Scenarios
May 12, 2020
milvus

Milvusプロジェクト:github.com/milvus-io/milvus

質問応答システムは自然言語処理の分野でよく使われる。自然言語の形式で質問に答えるために使用され、幅広い用途がある。代表的なアプリケーションには、インテリジェントな音声対話、オンラインカスタマーサービス、知識獲得、パーソナライズされた感情的なチャットなどがあります。ほとんどの質問応答システムは、生成質問応答システムと検索質問応答システム、シングルラウンド質問応答システムとマルチラウンド質問応答システム、オープン質問応答システム、特定質問応答システムに分類することができます。

本稿では、主に特定の分野向けに設計されたQAシステムを扱う。これは通常、知的接客ロボットと呼ばれるものである。これまで、接客ロボットの構築には、通常、ドメイン知識を一連のルールや知識グラフに変換する必要があった。この構築プロセスは「人間」の知性に大きく依存している。自然言語処理(NLP)にディープラーニングを応用することで、マッチングした質問に対する答えを、文書から直接機械が自動的に見つけ出すことができる。ディープラーニングの言語モデルは、質問と文書を意味ベクトルに変換し、一致する答えを見つける。

この記事では、GoogleのオープンソースのBERTモデルとオープンソースのベクトル検索エンジンであるMilvusを使用して、意味理解に基づくQ&Aボットを迅速に構築する。

全体的なアーキテクチャ

この記事では、意味的類似性マッチングによる質問応答システムを実装する。一般的な構築プロセスは以下の通りである:

  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

次に、オンラインQ&Aシステムを構築する方法を順を追って説明します。

Q&Aシステム構築のステップ

始める前に、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-コードブロック.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ライブラリから最も類似した質問を見つけることができる。この記事では、2つの文章間の類似性を表すために余弦距離を使用しています。すべてのベクトルは正規化されているため、2つの特徴ベクトルの余弦距離が1に近いほど、類似度が高くなります。

実際には、システムにはライブラリに完全に一致した質問がない場合があります。その場合、0.9のしきい値を設定することができます。検索された最大の類似性距離がこのしきい値より小さい場合、システムは関連する質問を含まないことをプロンプトします。

4-retrieve-answers.png 4-答えを検索.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

まとめ

この記事をお読みになり、ご自身のQ&Aシステムを簡単に構築できることがお分かりいただけたと思います。

BERT モデルを使用すると、テキスト・コーパスを事前に分類および整理する必要がなくなります。同時に、オープンソースのベクトル検索エンジンMilvusの高性能と高いスケーラビリティのおかげで、QAシステムは最大数億のテキストコーパスをサポートすることができます。

MilvusはLinux AI (LF AI) Foundationに正式に参加し、インキュベーションを行っています。Milvusコミュニティに参加し、AI技術の応用を加速させるために私たちと一緒に働くことを歓迎します!

=> オンラインデモはこちら: 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

続けて読む