AI-102 学習メモ (10) : カスタムの質問応答ソリューションを作成する

# はじめに
この投稿は AI-102: Microsoft Azure AI エンジニア の学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/5235dfe16ad1bed065ca

# 前の投稿

https://qiita.com/atsmin77/items/5ccf7ba6f07174eb6a1c

# カスタム質問応答

カスタム質問応答を利用すると、テキストや任意のドキュメントをインポートして、質問に答えるチャットボットを作成することができます。

https://learn.microsoft.com/ja-jp/azure/ai-services/language-service/question-answering/overview

[Azure Language Studio](https://language.cognitive.azure.com/) から実際にカスタム質問応答を作成してみます。

## Azure AI Language リソースを指定

[前回](https://qiita.com/atsmin77/items/018a7fe76c753f71455f#azure-ai-language-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9-%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90) と同様に、使用する Azure Language Service リソースを指定します。

## カスタムの質問応答プロジェクトを作成する

[Understand questions and conversational language] - [Custom question answering] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/61684b6f-3fa1-b92c-9538-e5ac7880ab02.png)

## Azure Search リソースの作成

カスタムの質問応答を利用するためには、Azure Search リソースの作成が必要です。以下の手順で作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/9d2b84c0-7522-4dbe-21d8-f5c9b980e55e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5217c31e-0502-ff18-fc35-c25129cd5240.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e5929bc6-eeb1-0e81-e8dc-630ad8e61086.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b0adb52f-d3d2-6426-9fd8-bf35d3aa175f.png)

## カスタムの質問応答プロジェクトの作成

[+ Create new project] からカスタムの質問応答プロジェクトを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/2094658e-96fe-fd09-5bd0-d483359ed91c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/c6ad0d70-6229-0175-4aa9-cb09cea68a6e.png)

::: note
チャットボットが質問への回答が分からなかったときに出力する既定のメッセージもここで指定します。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/60424bdc-b30c-74c5-1790-6e569d683e96.png)

## 質問と回答をインポートする

インポートする質問と回答は、手動で追加する方法と、ソースとなるドキュメントをインポートする方法があります。

### 質問と回答のペアを手動で追加する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/a4aacd9f-49ca-fbde-7c35-94a7c40bca10.png)

### ソースをインポートする

以下では質問と回答のペアを記載したテキストをインポートしてみます。
インポートできるファイルは以下の形式に対応しています。

* 対応ファイル形式
  * .txt, .tsv, .pdf, .doc, .docx, .xlsx 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3130c44f-a16b-f9ba-48df-835b2c9ffbcf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5e4aa76d-788b-976d-6e17-c503629dfa91.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/08266d42-c560-7590-cd23-5e515fb40d11.png)

::: note warn
※ 2025/01/09 時点
検証した際は質問リストのテキストファイルをアップロードしても反映されませんでした。特にエラーメッセージも表示されず、原因は分かりませんでした。
:::

https://learn.microsoft.com/en-us/azure/ai-services/qnamaker/concepts/data-sources-and-content

## ナレッジ ベースをトレーニングおよびテストする

質問と回答をインポートしたら、デプロイを行い、質問応答が利用できるようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e18f107d-f86b-46b8-e268-6644bf04b25e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/d1ffc4fc-41cb-250f-2d89-dd61d7928fa0.png)

### ナレッジ ベースの公開

[Deploy] ボタンから、トレーニングしたモデルをチャットボットとして Azure 上にデプロイすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3fed276c-56af-7ecd-f328-ae91c81111ea.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/a0c42a47-89b1-9663-e853-5bd4c26131ca.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/92357e2b-5666-812a-a0ff-885433dfd60d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/9e524e64-e157-8c12-9d09-7fe7c188d162.png)

## その他の機能

### マルチターン会話

特定の質問に対しては、チャットボットからユーザーにさらに質問を行うよう設定することができます。複数回のやり取りによって適切な回答を行うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/91d21bac-406e-2a48-30d0-523827dbfdbd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/792a58e3-d4b5-6d29-aa9c-0243d14a1764.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4228904d-a671-b6b5-f1d8-c65e32d21f4b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/89815d2d-b517-4d08-b032-1c1af62123ca.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f6affc5b-f3d8-3989-994c-be9fc1c94793.png)

### 代替候補フレージングを追加する

同じ意味の質問を [Alternate questions] として追加しておくと、より回答の精度を向上させることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/616d69fd-5649-a066-7b6f-6c5bfd722a08.png)

### ナレッジ ベースにおしゃべりを追加する

ソースとして [Chitchat] を追加すると、あらかじめ設定したトーンでチャットボットがユーザーとおしゃべりできるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/bbaff840-919f-1cbb-10f9-bfebf4d1b3c6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/d771e1a3-eaa1-7ec4-6496-84f85533ba93.png)

::: note warn
おしゃべり (Chitchat) を追加しようとすると、無料版の SKU ではエラーになりました。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/7a2935e0-3e37-cfc4-6dee-99004d833e4d.png)
:::

### ナレッジ ベースをエクスポートする

作成した質問応答は Excel または TSV 形式でエクスポートすることができます。質問応答を別のリージョンにコピーしたい場合などに利用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/84b3c533-e363-44ef-eb53-0d4bf18dece2.png)

## 多言語の質問応答ソリューションを作成する

質問応答を多言語対応させるには、以下の 2 つの方法があります。

1. [Azure AI Translator](https://qiita.com/atsmin77/items/47afd9e2893a6f59ec8f)を利用して、質問を特定の言語に翻訳する方法
1. 言語ごとに、質問応答プロジェクトを作成する方法

後者の方法のほうが各言語に柔軟に対応することが可能ですが、質問応答のメンテナンスコストが大きくなりまｓ

https://learn.microsoft.com/ja-jp/azure/ai-services/language-service/question-answering/language-support

# 次の投稿

https://qiita.com/atsmin77/items/e70a11afbd107d249193