QnA Makerとは、AzureのCognitive Serviceを使い、FAQ用の質問+回答のナレッジベースを作成できるもの。
QnA Maker 全般にわたって解説した記事
QnA Maker Deep Dive (といいつつ実際は公式ドキュメントのサマリ) - Qiita
初期構築時の注意
利用者のログを残したければ、App Insightsを有効にして作成する。
FAQチャットボットを運用する場合、ログが無いと何も改善できないので、有効にするのが良いと思われる。
ナレッジベース初回登録時の注意
ナレッジベースに初めて登録する質問+回答で、Search Serviceの言語が決まる。後からの変更はできないので、QnA Makerを作り直さなければいけない。
参考:下記記事のQ1
QnA Maker API V4 (一般公開版) のよくあるご質問 – Japan Cognitive Services Support Blog
質問と全く同じ文を入力しても答えが返ってこない場合、この状態に陥っている可能性がある。
QnA Maker構築時に作られるApp Serviceについて
QnA Makerを作成して出来るApp Serviceは、ナレッジベースのメンテ等APIの提供に使われているっぽいので、いじってしまうとAPIが動作しなくなったりしてしまう。
Q&Aのログを参照する
QnA Maker作成時にApp Insightsを有効にしていれば、App Insightsにログがたまる。
https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/how-to/get-analytics-knowledge-base
同義語を登録する
「パソコン」であれば、「PC」や「コンピュータ」など、同義語を登録してQ&Aのヒット率を向上させることができる。同義語についてはAPIしか用意されていないため、PowerShellなどを使って登録&更新する必要がある。
Alterations (Azure Cognitive Services) | Microsoft Docs
APIの実行に必要な Endpoint と Key は、Azureポータルの Cognitive Service のページから取得できる。
同義語の登録は置換式なので、一度登録済みの内容を取得してから同義語を追加し、登録するのが良い。
以下、同義語の取得&登録ができるPowerShellのサンプル。
Param($func)
$endpoint = "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0"
$key = "Azureポータルで取得したキー"
$headers = @{"Ocp-Apim-Subscription-Key" = $key}
$filename = "alterations.json"
<#
同義語を取得する
#>
function GetAlterations() {
$url = "${endpoint}/alterations"
$rc = Invoke-WebRequest -Uri $url -Headers $headers -OutFile $filename -PassThru
}
<#
同義語を登録する
#>
function PutAlterations() {
$url = "${endpoint}/alterations"
$rc = Invoke-WebRequest -Uri $url -Headers $headers -Method Put -InFile $filename
}
if ($func -eq "get") {
GetAlterations
} elseif ($func -eq "put") {
PutAlterations
}
コンソールから.\alterations.ps1 "get"
と実行すると登録済みの同義語の取得、.\alterations.ps1 "put"
と実行すると同義語の登録ができる。同義語のファイルは、スクリプトと同じフォルダにalterations.json
というファイル名で保存される。