QnA Makerについて調べてみた! #Azure リレー
2021-02-11
azblob://2022/11/11/eyecatch/2021-02-11-qna-maker-research-000.jpg

MSの資格取得に奔走している堀でございます。

今回はQnA Makerについて少し調べたので記事にしてみようと思います。

【参考】以下のサイトの手順に沿っていくと簡単に作成できるかと思います。
https://www.qnamaker.ai/Create

そもそもQnA Makerとは

QnAMakerは簡単に言うとFAQを対話形式で返してくれるサービスです。

いろいろな企業や組織でFAQサイトを公開しているかと思います。ですが多くのFAQサイトで「自分が欲しい情報がどこに書いているのか見つからない!」ということがよくあるかと思います。

ユーザーは欲しい情報を見つけるために、電話やメールを使って質問しようとします。
それによってサポート担当者はさらに仕事が増えてしまいます。

こういった課題を解決するためにQnAMakerを使用するとユーザーは早く情報を見つけることが可能になり、サポート担当者の負担も減少させることができます。

QnA Makerを作成する

QnA Makerを作成します。

ここで作成されるリソースは5つです。

1.Cognitive Service

 QnA Maker リソースを使うと、オーサリングおよび公開 API だけでなく、実行時に QnA ペアの中で自然言語処理 (NLP) ベースの 2 番目の順位のレイヤー (ランカー #2) にアクセスできます。

検証用であればFreeを選択できます。(私のものは2つ目ですのでスタンダートになっています。)

2.検索サービス

 QnAペアの格納、実行時にQnAペアの初期順位を指定します。

 CognitiveServiceと同様、検証用であればFreeを選択できます。

3.App Service

4.App Service プラン

 App ServiceとApp Serviceプランは、クラインとアプリケーションからランタイムエンドポイントを介して公開されたナレッジベースにアクセスするときに使用されます。公開されたナレッジ ベースのクエリを実行する場合、公開されたナレッジ ベースにはすべて同じ URL エンドポイントが使用されますが、ルート内の ナレッジ ベース ID を指定します。

5.Application Insights

 チャット ログとテレメトリを収集したい方は作成してください。Application Insightsについては有効・無効を選択できます。

ナレッジベースを作成する

ナレッジベースはFAQのベースとなる情報のことで質問と回答がペアになって構成されます。

例えば以下のような構成をしているものです。

Q. FIXERで働いている従業員の平均年齢を教えてください。

A. FIXERの平均年齢は29歳です。

このように登録することでユーザーは「平均年齢」のような質問をすると「FIXERの平均年齢は29歳です。」といったような対話をすることができます。

作成したQnAサービスを選択して、データを登録していきます。(QnA Makerを先に作成しておく)

データソースは空の状態でも登録できますが、直接データソース(パブリックURL、SharePointのプライベートURL、ファイル)を使用して作成することも可能です。また空の状態で作成したとしてもあとから上記のようなデータソースを追加できます。注意点としては最終的な形式がマークダウン形式となっている必要があることに注意が必要です。

作成後はナレッジベースを公開することで、外部のアプリケーションと統合することができます。

クライアントアプリケーションと統合

ナレッジベースの公開後、クライアントアプリケーションはナレッジベースのエンドポイントに質問を送信し、結果をJSON形式で受信します。一般的に多く利用されているのはチャットボットを利用しています。

統合するには予測ランタイムエンドポイントにクエリを送信することで実現します。クエリはQnAMakerのWebアプリエンドポイントへのSDKまたはRESTベースの要求と共に、特定のナレッジベースに送信されます。

まとめ

今回は簡単にQnA Makerについてご紹介させていただきました。PowerAppsのようなクライアントアプリケーションと統合すればローコードでFAQを返してくれるサービスを作成できます。
次回は実際に作成してみたいと思います!!!