はじめに
この記事は、過去にご紹介した Power Virtual Agents と Cognitive Services によるボット開発に引き続き、Azure Cognitive Services for Language のカスタム質問応答機能について、調査、動作検証した内容を記載しています。
今回はナレッジベースのソースの指定方法に関する内容となっています。
ナレッジベースのソース
既存の FAQ 文書や、マニュアルをソースとしてナレッジベースを構築することができます。
ソースには下記 3 種類のデータを利用可能です。
- URL: インターネットに公開されている FAQ、マニュアルの Web ページと連携できます。
- ファイル: PDF、テキスト、Excel 文書などをアップロードできます。
- Chitchat(おしゃべり、雑談): 定義済みのデータセットに複数のペルソナ(プロフェッショナル、親しみやすいなど)が含まれており、これらを取り込むことができます。
Web ページ URL からのナレッジベース更新
質問応答では、下記のような形式の Web ページがサポートされています。
- 基本的な FAQ ページ: 質問と回答が同じページにあり、質問の下に回答がある形式。
- リンク付き FAQ ページ: 質問が 1 か所に集約され、同じページ上の別のセクションまたは別のページのどちらかにある回答にリンクされている形式。
- トピック ホームページがある FAQ ページ: 各トピックが別ページの対応する質問と回答のセットにリンクされている形式。
- サポートページ: 特定のタスクを実行する方法、特定の問題を診断および解決する方法、特定のプロセスに対するベストプラクティスについて説明する Web の記事など。新機能で初期段階にあるとのことです。
具体的なイメージなどはMS Learn のドキュメントに記載されています。
私が試したところ、下記のような基本的な FAQ ページでの構成では回答が取り込まれていることが確認できましたが、複数ページからなる構成では取り込まれない場合がありました。
スマート URL 更新
ナレッジベースのソースとした Web ページが更新された場合、ナレッジベースの画面で対象のソースを選択し、「URL の更新」ボタンを押せば、最新の Web ページの内容が反映されます。新旧で回答が同じで質問が異なるといった場合は、ペアが複数できるのではなく、複数の質問に対応した一つの回答となるように統合されます。
ファイルからのナレッジベース更新
質問列と回答列があるような、構造化された TSV、Excel スプレッドシートの他、質問と回答が交互に並ぶような Word 文書、製品マニュアルのような階層化された見出しのある PDF ファイルからもナレッジベースを更新することができます。
TSV(タブ区切りのテキスト)はサポートされていますが、CSV(「,」区切りのテキスト)はサポートされていないようです。
こちらも具体的なイメージなどはMS Learn のドキュメントに記載されています。
私が先程の基本的な FAQ ページから作成した PDF、Word 文書、質問と回答列から構成した Excel スプレッドシート、TSV ファイルで試したところ、全 6 項目のうち、取り込まれた項目は下記となりました。
- PDF: 4、先頭と末尾の項目が読み込まれず。
- Word 文書(.docx): 6
- Excel スプレッドシート(.xlsx): 6
- TSV: 6
Chitchat(おしゃべり、雑談)の追加
ボットのパーソナリティを決めておしゃべりを追加できます。
試しに各パーソナリティのおしゃべりを追加し、それぞれに対して「すばらしい」と発言したときの回答は下記のようになりました。
- プロフェッショナル: お役に立てて光栄です。
- 親しみやすい: わあ、照れます!
- 機知に富んでいる: お世辞がお上手ですね。そういうの、好きです。
- 温かい: ありがとうございます。とても嬉しいです!
- 熱心: やったね!
追加したおしゃべりに対しても、新たに質問ペアを追加することが可能となっています。
REST API による質問と回答の更新
REST API でソースや質問と回答のペアを追加、更新、削除することも可能です。
ソースが外部のシステムにあり、REST API が使える場合は、この形式で連携するとよいのではないかと思います。
まとめ
カスタム質問応答機能ではナレッジベースのソースの指定方法が複数あり、既存の FAQ、マニュアルや標準で用意されたデータセットを利用できるようになっているように思います。
質問と回答がペアになっていないような文書や Web ページでも取り込んでくれる場合があるようですので、既存のデータがある場合はソースとしてナレッジベースに取り込まれるかを検証してみるとよいと思います。