質問応答とは

質問応答は、クラウドベースの自然言語処理 (NLP) であり、これを使用すると、データに自然な会話レイヤーを作成できます。 任意の入力に対して、カスタム ナレッジ ベース (KB) の情報から最も適切な回答を見つける目的で使用されます。

質問応答は、ソーシャル メディア アプリケーション、チャット ボット、音声対応デスクトップ アプリケーションなど、会話型クライアント アプリケーションの作成に使用されます。 ディープ ラーニング ランカーを使用した関連性の強化、正確な回答、エンドツーエンドのリージョン サポートなど、いくつかの新機能が追加されました。

質問応答は、次の 2 つの機能で構成されます。

  • カスタムの質問応答: この機能を使用すると、コンテンツ ソースから抽出された質問と回答のペアの編集、同意語とメタデータの定義、質問の提案の受け入れなど、さまざまな側面をカスタマイズできます。
  • 事前構築済みの質問応答: この機能を使用すると、ユーザーは、ナレッジ ベースを管理することなく、テキスト の一節に対してクエリを実行して応答を取得できます。

このドキュメントには、次の種類の記事が含まれています。

  • クイックスタートは、サービスの呼び出しと結果の取得を短時間で行えるようにする、ステップバイステップの手順です。
  • 攻略ガイドには、より具体的またはカスタマイズした方法でサービスを使用するための手順が記載されています。
  • 概念の記事では、サービスの機能と特長について詳しく説明します。
  • チュートリアルはより長文のガイドであり、より広範なビジネス ソリューションの 1 コンポーネントとしてこのサービスを使用する方法を示すものです。

どのような場合に質問応答を使用するのか

  • 静的な情報がある場合 - 回答のナレッジ ベースに静的な情報がある場合、質問応答を使用します。 このナレッジ ベースはニーズに合わせてカスタマイズされており、PDF や URL などのドキュメントで作成します。
  • 要求、質問、またはコマンドに同じ回答を提供する場合 - 異なるユーザーが同じ質問を送信すると、同じ回答が返されます。
  • メタ情報に基づいて静的情報をフィルター処理する場合 - メタデータ タグを追加して、クライアント アプリケーションのユーザーと情報に関連する追加のフィルター オプションを提供します。 一般的なメタデータ情報には、chit-chat、コンテンツの種類または形式、コンテンツの目的、コンテンツの鮮度が含まれます。
  • 静的な情報を含むボットの会話を管理する場合 - ご利用のナレッジ ベースは、ユーザーの会話テキストまたはコマンドを取得して、それに応答します。 回答が、ナレッジ ベースで複数ターンのコンテキストで表される、事前に決定された会話フローの一部である場合、ボットはこのフローを簡単に提供できます。

ナレッジ ベースとは

質問応答では、質問と回答がペアになったナレッジ ベースにコンテンツをインポートします。 インポート プロセスでは、質問と回答のペア間のリレーションシップを意味する、構造化コンテンツと半構造化コンテンツのパーツ間のリレーションシップに関する情報を抽出します。 これらの質問と回答のペアを編集したり、新しいペアを追加したりできます。

質問と回答のペアのコンテンツには、次のものが含まれます。

  • 質問のすべての代替形式
  • 検索時に回答の選択肢をフィルター処理するために使用されるメタデータ タグ
  • 検索の絞り込みを続行するためのフォローアップ プロンプト

ナレッジ ベースを公開すると、クライアント アプリケーションによってユーザーの質問がエンドポイントに送信されます。 質問応答サービスによって、質問が処理されて、最適な回答で応答されます。

チャット ボットをプログラムから作成する

質問応答のナレッジ ベースが公開されると、クライアント アプリケーションは、ナレッジ ベースのエンドポイントに質問を送信し、結果を JSON 応答として受信します。 質問応答のクライアント アプリケーションとして一般的なのは、チャットボットです。

ボットに質問をして、ナレッジ ベースのコンテンツから回答を得る

手順 アクション
1 クライアント アプリケーションは、ユーザーの質問 (自分の言葉で表現されたテキスト) "プログラムによってナレッジ ベースを更新するにはどうすればよいですか?" を、ご利用のナレッジ ベース エンドポイントに送信します。
2 質問応答は、トレーニング済みのナレッジ ベースを使用して、正しい回答と、最適な回答の検索を絞り込むために使用できる任意のフォローアップ プロンプトを提示します。 質問応答から、JSON 形式の応答が返されます。
3 クライアント アプリケーションは、JSON 応答を使用して、会話を継続する方法を判断します。 この判断には、上位の回答を表示することや、最適な回答を得るためにより多くの選択肢を提示することが挙げられます。

少量のコードでチャット ボットを作成する

Language Studio ポータルには、プロジェクト/ナレッジベースの作成エクスペリエンス一式が用意されています。 ドキュメントをそのままの形式でナレッジ ベースにインポートできます。 これらのドキュメント (FAQ、製品マニュアル、スプレッドシート、Web ページなど) は、質問と回答のペアに変換されます。 各ペアは、フォローアップ プロンプト用に分析され、他のペアに接続されます。 最終的な "マークダウン" 形式は、画像やリンクを含む豊富なプレゼンテーションをサポートします。

ナレッジ ベースを編集したら、作業中の Azure Web アプリ ボットにそのナレッジ ベースを公開します。コードを記述する必要はありません。 Azure portal でボットをテストするか、ダウンロードして開発を続行します。

階層化されたランク付けによる質の高い回答

質問応答システムでは、階層化されたランク付け方法が使われます。 データは Azure Search に格納されます。これは、第 1 のランク付けレイヤーとしても機能します。 次に、Azure Search からの上位の結果が質問応答の NLP 再ランク付けモデルを通じて渡され、最終的な結果と信頼度スコアが生成されます。

複数ターン会話

質問応答では、基本的な質問と回答のペアを改善するために、複数ターンのプロンプトとアクティブ ラーニングが提供されています。

複数ターンのプロンプトにより、質問と回答のペアを結び付ける機会が与えられます。 この結び付けにより、クライアント アプリケーションは上位の回答を提供し、最終的な回答の検索を絞り込むためにより多くの質問を提供することができます。

公開されたエンドポイントでナレッジ ベースにユーザーからの質問が届くと、この実際の質問にアクティブ ラーニングが適用されて、品質向上のためにナレッジ ベースへの変更が提案されます。

開発ライフサイクル

質問応答では、開発ライフサイクル全体に統合されるように、作成、トレーニング、発行、コラボレーションのアクセス許可が提供されます。

開発サイクルの概念図

クイックスタートに取り組む

ほとんどの一般的なプログラミング言語向けのクイックスタートが提供されています。それぞれ基本的な設計パターンを学び、いずれも 10 分もかからずにコードを実行できるように作られています。

次のステップ

質問応答には、カスタム ナレッジ ベースのビルド、管理、デプロイに必要なすべてのものが用意されています。