カスタム質問応答アプリを計画するには、カスタム質問応答のしくみと他の Azure サービスとの対話方法を理解する必要があります。 また、プロジェクトの概念をしっかりと理解しておく必要もあります。
Azure リソース
カスタム質問応答を使用して作成された各 Azure リソースには、特定の目的があります。 各リソースには、独自の目的、制限、および価格レベルがあります。 これらのリソースの機能を理解し、その知識を計画プロセスに使用できるようにすることが重要です。
リソース | 目的 |
---|---|
言語リソース リソース | 作成、クエリ予測エンドポイントおよびテレメトリ |
Azure AI Search リソース | データ ストレージと検索 |
リソースの計画
カスタム質問応答のスループットは、現在、管理 API と予測 API ともに、1秒間に 10 件のテキスト レコードが上限となっています。 お客様のサービスで 10 件/秒のテキスト レコードを目標とする場合、Azure AI Search の S1 (1インスタンス) SKU をお勧めします。
言語リソース
カスタム質問応答機能が有効になっている単一の言語リソースでは、複数のプロジェクトをホストできます。 プロジェクトの数は、Azure AI Search の価格レベルでサポートされているインデックスの数によって決まります。 詳しくは、インデックスとプロジェクトの関係に関する記事をご覧ください。
プロジェクトのサイズとスループット
実際のアプリを作るときは、プロジェクトのサイズと予想されるクエリ予測要求に十分なリソースを計画します。
プロジェクトのサイズは、次のものによって制御されます。
- Azure AI Search リソースの価格レベルの制限
- カスタムの質問応答の制限
プロジェクトのクエリ予測要求は、Web アプリ プランと Web アプリによって制御されます。 価格レベルを計画する場合は、「推奨設定」を参照してください。
リソース選択の影響の概要
リソースを適切に選択すると、プロジェクトがクエリ予測に正しく回答するようになります。
プロジェクトが正しく機能していない場合の問題は、通常、不適切なリソース管理です。
リソースの選択が不適切な場合は、変更する必要があるリソースを特定するために調査が必要です。
Project
プロジェクトは、その言語リソースに直接関連付けられます。 これには、クエリ予測要求に回答するために使用される質問と回答 (QnA) のペアが保持されます。
言語に関する注意点
カスタム質問応答機能が有効になっている同じ言語リソース内に、異なる言語のプロジェクトを設けられるようになりました。 最初のプロジェクトを作成するときに、後続のすべてのプロジェクトに適用される 1 つの言語でプロジェクトのリソースを使用するか、プロジェクトが作成されるごとに言語を選択するか選択できます。
データ ソースを取り込む
カスタム質問の回答では、非構造化コンテンツもサポートされています。 非構造化コンテンツを含むファイルをアップロードできます。
現時点では、非構造化コンテンツの URL はサポートされていません。
インジェスト プロセスでは、サポートされているコンテンツの種類がマークダウンに変換されます。 回答のそれ以上の編集はすべて、マークダウンを使用して行われます。 プロジェクトを作成した後は、リッチ テキスト作成を使用して、Language Studio で QnA ペアを編集できます。
データ形式に関する考慮事項
QnA ペアの最終的な形式はマークダウンであるため、マークダウンのサポートを理解することが重要です。
ボットのパーソナリティ
おしゃべりを使用して、プロジェクトにボットのパーソナリティを追加します。 このパーソナリティは、Professional や Friendly などの特定の口調で提供される回答を返します。 このおしゃべりは会話のセットとして提供され、追加、編集、および削除を完全に制御できます。
ボットがプロジェクトに接続している場合は、ボットのパーソナリティが推奨されます。 他のサービスにも接続している場合でも、プロジェクトでおしゃべりを使用することを選択できますが、ボット サービスがどのように相互作用するかを確認して、それが使用に適したアーキテクチャ設計であるかどうかを確認する必要があります。
プロジェクトを使用した会話フロー
会話フローは、通常は Hi
や Hello
などのユーザーからのあいさつで始まります。 プロジェクトは、Hi, how can I help you
などの一般的な回答で答えることができ、会話を続けるためのフォローアップ プロンプトを選択することもできます。
会話フローは、ユーザーがボットの使用方法を認識し、会話中にボットによって中断されないように、ループを念頭に置いて設計する必要があります。 フォローアップ プロンプトは、会話フローを可能にする QnA ペア間のリンクを提供します。
コラボレーターとの作成
コラボレーターは、プロジェクト アプリケーションの完全な開発スタックを共有する他の開発者であることも、プロジェクトの作成のみに制限されていることもあります。
プロジェクトの作成では、コラボレーターの機能の範囲を制限するために、Azure portal で適用するいくつかのロールベースのアクセス許可がサポートされています。
クライアント アプリケーションとの統合
クライアント アプリケーションとの統合は、予測ランタイム エンドポイントにクエリを送信することで実現します。 クエリは、カスタム質問応答の Web アプリ エンドポイントへの SDK または REST ベースの要求と共に、特定のプロジェクトに送信されます。
クライアント要求を正しく認証するためには、クライアント アプリケーションが正しい資格情報とプロジェクト ID を送信する必要があります。 Azure AI Bot Service を使用する場合は、Azure portal でボット構成の一部としてこれらの設定を構成します。
クライアント アプリケーションでの会話フロー
Azure ボットなどのクライアント アプリケーションでの会話フローでは、プロジェクトとの対話の前後に機能が必要になる場合があります。
お使いのクライアント アプリケーションは、フォローアップ プロンプトを処理する別の手段を提供するか、おしゃべりを含めることで、会話フローをサポートしていますか。 その場合は、これらを早期に設計し、別のサービスによって、またはプロジェクトに送信されたときに、クライアント アプリケーション クエリが正しく処理されるようにします。
クライアント アプリケーションからのアクティブ ラーニング
カスタム質問応答では、"アクティブ ラーニング" を使って、回答に関する代わりの質問を提案することで、プロジェクトを向上させます。 このアクティブ ラーニングの一部は、クライアント アプリケーションで行う必要があります。 クライアント アプリケーションでは、会話型のプロンプトを通じて、プロジェクトからユーザーにとって役に立たない回答が返されたことを判断し、より適切な回答を判断することができます。 クライアント アプリケーションは、予測品質を向上させるために、プロジェクトにその情報を返信する必要があります。
既定の回答の提供
プロジェクトは、回答が見つからない場合は "既定の回答" を返します。 この回答は、[設定] ページで構成できます。
この既定の回答は、Azure ボットの既定の回答とは異なります。 構成設定の一環として、Azure portal で Azure ボットの既定の回答を構成します。 これは、スコアのしきい値が満たされない場合に返されます。
予測
予測は、プロジェクトからの応答であり、回答だけでなく、さらに多くの情報が含まれています。 クエリ予測応答を取得するには、カスタム質問応答 API を使用します。
予測スコアの変動
スコアは、次のいくつかの要因に基づいて変化することがあります。
top
プロパティを使用した応答で要求された回答の数- 利用できるさまざまな代わりの質問
- メタデータのフィルター処理
test
またはproduction
のプロジェクトに送信されるクエリ。
Analytics と Azure Monitor
カスタム質問応答では、テレメトリは Azure Monitor サービスを通じて提供されます。 上位のクエリを使用して、メトリックを理解します。
開発ライフサイクル
プロジェクトの開発ライフサイクルは、プロジェクトの編集、テスト、発行です。
質問回答ペアのプロジェクト開発
QnA ペアは、クライアント アプリケーションの使用状況に基づいて設計および開発する必要があります。
各ペアには次のものを含めることができます。
- メタデータ - クエリ時に絞り込んで、データのソース、コンテンツ、形式、および目的に関する追加情報を使用して QnA ペアにタグを付けることができます。
- フォローアップ プロンプト - ユーザーが正しい回答を受け取るように、プロジェクトからのパスを決定するために役立ちます。
- 代替の質問 - さまざまな形式の質問からの回答と検索を一致させるために重要です。 アクティブ ラーニングの提案は代わりの質問に変わります。
DevOps 開発
DevOps パイプラインに挿入するプロジェクトを開発するには、バッチ テスト中にプロジェクトを分離する必要があります。
プロジェクトは、言語リソースの他のすべてのプロジェクトと Azure AI Search インデックスを共有します。 プロジェクトはパーティションによって分離されますが、インデックスを共有すると、発行されたプロジェクトと比較したときにスコアの差が生じる可能性があります。
test
と production
のプロジェクトを "同じスコア" にするためには、言語リソースを 1 つのプロジェクトに分離します。 このアーキテクチャでは、リソースは分離されたバッチ テストの長さまで有効である必要があります。