メタデータを使用して応答をフィルター処理する

QnA Maker では、キーと値のペアの形式で、メタデータを質問と回答のペアに追加することができます。 この情報を使用して、ユーザー クエリの結果をフィルター処理し、フォローアップ会話で使用できる追加情報を格納できます。

Note

QnA Maker サービスは、2025 年 3 月 31 日に廃止される予定です。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。 言語サービス内の質問応答機能については、質問応答に関する記事を参照してください。 QnA Maker の新しいリソースは、2022 年 10 月 1 日以降作成できません。 既存の QnA Maker のナレッジ ベースを質問応答に移行する方法については、移行ガイドを参照してください。

QnA エンティティを使用して質問と回答を保存する

まず、QnA Maker での質問と回答のデータの格納方法を理解することが重要です。 QnA エンティティを次の図に示します。

QnA エンティティのイラスト

QnA エンティティにはそれぞれ一意の永続 ID があります。 ID を使用して、特定の QnA エンティティを更新することができます。

メタデータを使用してカスタム メタデータ タグによる回答のフィルター処理を行う

メタデータを追加すると、これらのメタデータ タグによって回答をフィルター処理できます。 [表示のオプション] メニューからメタデータ列を追加します。 メタデータ + アイコンを選択してメタデータ ペアを追加して、メタデータをナレッジ ベースに追加します。 このペアは、1 つのキーと 1 つの値で構成されます。

メタデータの追加のスクリーンショット

メタデータ タグの strictFilters を使用して結果をフィルター処理する

ユーザーの質問が "When does this hotel close?" (このホテルはいつ閉まりますか?) であるとします。これには、"Paradise" というレストランがいつ閉まるかという意味が含まれます。

"Paradise" レストランに関する結果のみが必要であるため、メタデータ "Restaurant Name" に対する GenerateAnswer 呼び出しでフィルターを設定することができます。 次の例はこのことを示します。

{
    "question": "When does this hotel close?",
    "top": 1,
    "strictFilters": [ { "name": "restaurant", "value": "paradise"}]
}

ソースによるフィルター

ナレッジ ベースに複数のコンテンツ ソースがあって、一部の特定のソースに結果を限定したい場合、下に示す方法で予約キーワード source_name_metadata を使用してこれを実行できます。

"strictFilters": [
    {
        "name": "category",
        "value": "api"
    },
   {
        "name": "source_name_metadata",
        "value": "boby_brown_docx"
    },
   {
        "name": "source_name_metadata",
        "value": "chitchat.tsv"
   }
]

既定での論理 AND

クエリで複数のメタデータ フィルターを組み合わせるには、strictFilters プロパティの配列に追加のメタデータ フィルターを付け加えます。 既定で、値が論理的に組み合わせられます (AND)。 論理的に組み合わせられる場合に、回答内で該当のペアが返されるためには、すべてのフィルターが QnA のペアと一致する必要があります。

これは、AND の値を指定して strictFiltersCompoundOperationType プロパティを使用することと同じです。

strictFiltersCompoundOperationType プロパティを使用する論理 OR

複数のメタデータ フィルターを組み合わせるときに、1 つまたは一部のフィルター一致のみに関心がある場合は、OR の値を指定して strictFiltersCompoundOperationType プロパティを使用します。

これにより、いずれかのフィルターが一致した場合にナレッジ ベースによって回答が返されるようになりますが、メタデータが含まれていない回答は返されません。

{
    "question": "When do facilities in this hotel close?",
    "top": 1,
    "strictFilters": [
      { "name": "type","value": "restaurant"},
      { "name": "type", "value": "bar"},
      { "name": "type", "value": "poolbar"}
    ],
    "strictFiltersCompoundOperationType": "OR"
}

クイックスタートのメタデータの例

メタデータに関する以下の QnA Maker ポータルのクイックスタートで、メタデータの詳細について確認します。

質問と回答の結果を使用して会話のコンテキストを維持する

GenerateAnswer への応答には、一致した質問と回答のペアの対応するメタデータ情報が含まれます。 クライアント アプリケーション内でこの情報を使って、以降の会話で使用するために以前の会話のコンテキストを格納することができます。

{
    "answers": [
        {
            "questions": [
                "What is the closing time?"
            ],
            "answer": "10.30 PM",
            "score": 100,
            "id": 1,
            "source": "Editorial",
            "metadata": [
                {
                    "name": "restaurant",
                    "value": "paradise"
                },
                {
                    "name": "location",
                    "value": "secunderabad"
                }
            ]
        }
    ]
}

次のステップ