回答を求めてナレッジ ベースに対してクエリを実行する
ナレッジ ベースは公開する必要があります。 公開されると、ナレッジ ベースに対するクエリは、generateAnswer API を使用してランタイム予測エンドポイントで実行されます。 このクエリには、QnA Maker で回答に最適な一致候補を選択できるように、質問のテキストとその他の設定が含まれています。
Note
QnA Maker サービスは、2025 年 3 月 31 日に廃止される予定です。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。 言語サービス内の質問応答機能については、質問応答に関する記事を参照してください。 QnA Maker の新しいリソースは、2022 年 10 月 1 日以降作成できません。 既存の QnA Maker のナレッジ ベースを質問応答に移行する方法については、移行ガイドを参照してください。
QnA Maker がユーザー クエリを処理して最適な回答を選択する方法
トレーニングされ、公開された QnA Maker ナレッジ ベースは、GenerateAnswer API で、ボットまたはその他のクライアント アプリケーションからユーザー クエリを受け取ります。 次の図は、ユーザー クエリを受け取ったときのプロセスを示しています。
ランカー プロセス
このプロセスについて次の表で説明します。
手順 | 目的 |
---|---|
1 | クライアント アプリケーションがユーザー クエリを GenerateAnswer API に送信します。 |
2 | QnA Maker が、言語検出、スペル チェック プログラム、およびワード ブレーカーを使用してユーザー クエリを前処理します。 |
3 | この前処理は、最適な検索結果が得られるようユーザー クエリを変更するために行われます。 |
4 | この変更されたクエリが Azure AI Search インデックスに送信され、top の数の結果を受け取ります。 正しい回答がこれらの結果にない場合、top の値をわずかに増やします。 一般的に、top の値が 10 の場合は、90% のクエリで役立ちます。 Azure Search は、この手順でストップ ワードをフィルター処理します。 |
5 | QnA Maker が、構文とセマンティック ベースの特性付けを使用して、ユーザー クエリとフェッチされた QnA の結果の間の類似性を判断します。 |
6 | 機械学習されたランカー モデルによって、手順 5 のさまざまな機能が使用され、信頼スコアと新しいランク付け順序が決定されます。 |
7 | 新しい結果が、ランク順にクライアント アプリケーションに返されます。 |
使用される特徴は、単語レベルのセマンティクス、コーパスの用語レベルの重要性、2 つのテキスト文字列間の類似性と関連性を判別するディープ ラーニング済みのセマンティック モデルなどですが、これらに限定されません。
エンドポイントの HTTP 要求/応答
ナレッジ ベースを公開すると、アプリケーション (通常はチャット ボット) に統合できる REST ベースの HTTP エンドポイントがサービスによって作成されます。
回答を生成するユーザー クエリ要求
ユーザー クエリは、How do I add a collaborator to my app?
など、エンド ユーザーがナレッジ ベースにたずねる質問です。 クエリは多くの場合、自然言語形式か、質問を表すいくつかのキーワードで行われます。たとえば、help with collaborators
のようになります。 クエリはクライアント アプリケーションの HTTP 要求からナレッジ ベースに送信されます。
{
"question": "How do I add a collaborator to my app?",
"top": 6,
"isTest": true,
"scoreThreshold": 20,
"strictFilters": [
{
"name": "QuestionType",
"value": "Support"
}],
"userId": "sd53lsY="
}
scoreThreshold、top、strictFilters などのプロパティを設定することで応答を制御します。
会話コンテキストをマルチターン機能と共に使用し、正しい最終的な回答が見つかるよう、会話を続けて質問と回答を練り上げます。
回答を生成する呼び出しからの応答
HTTP 応答は、特定のユーザー クエリの最適な一致に基づいて、ナレッジ ベースから取得された回答です。 応答には回答と予測スコアが含まれます。 top
プロパティを使用して複数の上位回答を求めた場合、複数の上位回答が得られ、それぞれにスコアが付きます。
{
"answers": [
{
"questions": [
"How do I add a collaborator to my app?",
"What access control is provided for the app?",
"How do I find user management and security?"
],
"answer": "Use the Azure portal to add a collaborator using Access Control (IAM)",
"score": 100,
"id": 1,
"source": "Editorial",
"metadata": [
{
"name": "QuestionType",
"value": "Support"
},
{
"name": "ToolDependency",
"value": "Azure Portal"
}
]
}
]
}