NLPとMilvusによるインテリジェントなQAシステムの構築
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](https://assets.zilliz.com/1_system_architecture_milvus_bert_postgresql_63de466754.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](https://assets.zilliz.com/2_code_block_e1b2021a91.png)
3.Milvus および PostgreSQL へのインポート
生成された特徴ベクトルを正規化して Milvus にインポートし、Milvus が返す ID と対応する回答を PostgreSQL にインポートする。PostgreSQL のテーブル構造を以下に示す:
図 3.](https://assets.zilliz.com/3_import_milvus_postgresql_bb2a258c61.png)
図4](https://assets.zilliz.com/4_import_milvus_postgresql_2abc29a4c4.png)
4.答えの検索
ユーザは質問を入力し、BERTにより特徴ベクトルを生成した後、Milvusライブラリから最も類似した質問を検索することができる。この記事では、2つの文章間の類似性を表すために余弦距離を使用する。すべてのベクトルは正規化されているため、2つの特徴ベクトルの余弦距離が1に近いほど類似度が高い。
実際には、システムにはライブラリに完全に一致した質問がない場合があります。その場合、0.9のしきい値を設定することができます。検索された最大の類似性距離がこのしきい値より小さい場合、システムは関連する質問が含まれていないことを表示します。
図5](https://assets.zilliz.com/4_retrieve_answers_6424db1032.png)
システムのデモンストレーション
以下にシステムのインターフェイス例を示す:
図6.](https://assets.zilliz.com/5_milvus_QA_system_application_e5860cee42.png)
ダイアログボックスに質問を入力すると、対応する回答が表示されます:
図7](https://assets.zilliz.com/5_milvus_QA_system_application_2_8064237e2a.png)
要約
この記事を読んで、あなた自身のQ&Aシステムを簡単に構築できることがお分かりいただけたと思います。
BERTモデルを使用すると、テキストコーパスを事前に分類・整理する必要がなくなります。同時に、オープンソースのベクトル検索エンジンMilvusの高性能と高いスケーラビリティのおかげで、QAシステムは最大数億のテキストのコーパスをサポートすることができます。
MilvusはLinux AI (LF AI) Foundationに正式にインキュベーションのために参加しました。Milvusのコミュニティに参加し、AI技術の応用を加速させるために私たちと一緒に働くことを歓迎します!
=> オンラインデモはこちら: https://www.milvus.io/scenarios
読み続けて

3 Easiest Ways to Use Claude Code on Your Mobile Phone
Run Claude Code from your phone with Remote Control, Happy Coder, or SSH + Tailscale. Comparison table, setup steps, and tools for typing, memory, and parallel tasks.

How to Build an Enterprise-Ready RAG Pipeline on AWS with Bedrock, Zilliz Cloud, and LangChain
Build production-ready enterprise RAG with AWS Bedrock, Nova models, Zilliz Cloud, and LangChain. Complete tutorial with deployable code.

Enhancing AI Reliability Through Fine-Grained Hallucination Detection and Correction with FAVA
In this blog, we will explore hallucinations, the taxonomy that provides a framework for categorizing them, and how FAVA detects and corrects errors
