Получение ответа из базы знаний QNA Maker

Примечание.

Azure Open AI On Your Data использует большие языковые модели (LLM) для получения аналогичных результатов qnA Maker. Если вы хотите перенести проект QnA Maker в Azure Open AI On Your Data, проверка из нашего руководства.

Примечание.

Поддержка службы QnA Maker будет прекращена 31 марта 2025 г. Новая версия вопроса и возможности ответа теперь доступна как часть языка искусственного интеллекта Azure. Сведения о возможностях ответов на вопросы в службе Языка см. в статье с ответами на вопросы. С 1 октября 2022 г. вы не сможете создавать ресурсы QnA Maker. Сведения о переносе существующих баз знаний QnA Maker в функцию вопросов и ответов см. в руководстве по миграции.

Примечание.

Эта документация не относится к последнему выпуску. Чтобы узнать об использовании новейших API функции ответов на вопросы, ознакомьтесь с руководством по созданию ответа на вопрос.

В этом кратком руководстве описывается, как получить ответ из базы знаний с помощью cURL.

Необходимые компоненты

  • Ресурс QnA Maker, созданный на портале Azure Помните идентификатор Microsoft Entra, подписку, имя ресурса QnA, выбранное при создании ресурса.
  • Обученная и опубликованная база знаний с вопросами и ответами, на основе предыдущего краткого руководства, с настроенными метаданными и беседой.

Примечание.

Когда вы будете готовы создать ответ на вопрос из базы знаний, вам будет нужно обучить и опубликовать эту базу знаний. После публикации базы знаний на странице публикации отображаются параметры запроса HTTP для создания ответа. Вкладка cURL отображает параметры, необходимые для создания ответа из командной строки.

Применение метаданных для фильтрации ответов

Используйте базу знаний из предыдущего краткого руководства, чтобы запросить ответ на основе метаданных.

  1. На странице Параметры базы знаний выберите вкладку CURL, чтобы увидеть пример команды cURL, используемой для создания ответа из базы знаний.

  2. Скопируйте эту команду в редактируемую среду (например, текстовый файл), чтобы изменить ее. Измените значение вопроса следующим образом, чтобы метаданные service:qna_maker использовались в качестве фильтра для пар вопросов и ответов.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'top':30, 'question':'size','strictFilters': [{'name':'service','value':'qna_maker'}]}"
    

    Этот вопрос состоит всего из одного слова (size), по которому может возвращаться любая из двух пар вопросов и ответов. Массив strictFilters указывает, что ответ нужно сократить до qna_maker ответов.

  3. Ответ включает только тот ответ, который соответствует критериям фильтра. Следующий ответ cURL был отформатирован для удобства чтения:

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 68.76,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "service",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null
    }
    

    Если существует пара вопроса и ответа, которая не соответствует поисковому запросу, но соответствует фильтру, она не будет возвращена. Вместо этого возвращается общий ответ No good match found in KB..

Использование свойства debug в запросе

Примечание.

Мы не рекомендуем использовать свойство debug для всех зависимостей. Это свойство было добавлено только для того, чтобы помочь разработчикам в устранении неполадок.

Отладочная информация поможет понять, как был определен возвращаемый ответ. Это иногда полезно, но необязательно. Чтобы создать ответ с отладочной информацией, добавьте свойство debug:

Debug: {Enable:true}
  1. Отредактируйте команду cURL, чтобы включить свойство отладки для получения дополнительной информации.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'Debug':{'Enable':true}}"
    
  2. Ответ включает необходимые сведения об ответе. В следующих выходных данных JSON, некоторые отладочные сведения заменены многоточием для краткости.

    {
        "answers": [
            {
                "questions": [
                    "How do I share a knowledge base with others?"
                ],
                "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.",
                "score": 56.07,
                "id": 5,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": {
            "userQuery": {
                "question": "How do I programmatically update my Knowledge Base?",
                "top": 1,
                "userId": null,
                "strictFilters": [],
                "isTest": false,
                "debug": {
                    "enable": true,
                    "recordL1SearchLatency": false,
                    "mockQnaL1Content": null
                },
                "rankerType": 0,
                "context": null,
                "qnaId": 0,
                "scoreThreshold": 0.0
            },
            "rankerInfo": {
                "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base",
                "synonyms": "what s...",
                "rankerLanguage": "English",
                "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini",
                "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers",
                "allQnAsfeatureValues": {
                    "WordnetSimilarity": {
                        "5": 0.54706300120043716,...
                    },
                    ...
                },
                "rankerVersion": "V2",
                "rankerModelType": "TreeEnsemble",
                "rankerType": 0,
                "indexResultsCount": 25,
                "reRankerResultsCount": 1
            },
            "runtimeVersion": "5.24.0",
            "indexDebugInfo": {
                "indexDefinition": {
                    "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e",
                    "fields": [...
                    ],
                    "scoringProfiles": [],
                    "defaultScoringProfile": null,
                    "corsOptions": null,
                    "suggesters": [],
                    "analyzers": [],
                    "tokenizers": [],
                    "tokenFilters": [],
                    "charFilters": [],
                    "@odata.etag": "\"0x8D7A920EA5EE6FE\""
                },
                "qnaCount": 117,
                "parameters": {},
                "azureSearchResult": {
                    "continuationToken": null,
                    "@odata.count": null,
                    "@search.coverage": null,
                    "@search.facets": null,
                    "@search.nextPageParameters": null,
                    "value": [...],
                    "@odata.nextLink": null
                }
            },
            "l1SearchLatencyInMs": 0,
            "qnaL1Results": {...}
        },
        "activeLearningEnabled": true
    }
    

Использование тестовой базы знаний

Если вы хотите получить ответ от тестовой базы знаний, используйте в тексте свойство isTest.

Свойство является логическим значением.

isTest:true

Команда cURL выглядит следующим образом:

curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'IsTest':true}"

В ответе в формате JSON используется та же схема, что и в запросе к опубликованной базе знаний.

Примечание.

Если тестовая и опубликованная базы знаний полностью совпадают, то незначительные вариации могут возникать из-за того, что тестовый индекс является общим для всех баз знаний в ресурсе.

Использование cURL для запроса ответа в беседе

  1. В окне терминала с поддержкой cURL используйте оператор завершения общения с ботом со стороны пользователя, например ответом Thank you, в качестве вопроса. Других свойств устанавливать не нужно.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'thank you'}"
    
  2. Выполните команду cURL и получите ответ JSON, включающий оценку и ответ.

    {
      "answers": [
          {
              "questions": [
                  "I thank you",
                  "Oh, thank you",
                  "My sincere thanks",
                  "My humblest thanks to you",
                  "Marvelous, thanks",
                  "Marvelous, thank you kindly",
                  "Marvelous, thank you",
                  "Many thanks to you",
                  "Many thanks",
                  "Kthx",
                  "I'm grateful, thanks",
                  "Ahh, thanks",
                  "I'm grateful for that, thank you",
                  "Perfecto, thanks",
                  "I appreciate you",
                  "I appreciate that",
                  "I appreciate it",
                  "I am very thankful for that",
                  "How kind, thank you",
                  "Great, thanks",
                  "Great, thank you",
                  "Gracias",
                  "Gotcha, thanks",
                  "Gotcha, thank you",
                  "Awesome thanks!",
                  "I'm grateful for that, thank you kindly",
                  "thank you pal",
                  "Wonderful, thank you!",
                  "Wonderful, thank you very much",
                  "Why thank you",
                  "Thx",
                  "Thnx",
                  "That's very kind",
                  "That's great, thanks",
                  "That is lovely, thanks",
                  "That is awesome, thanks!",
                  "Thanks bot",
                  "Thanks a lot",
                  "Okay, thanks!",
                  "Thank you so much",
                  "Perfect, thanks",
                  "Thank you my friend",
                  "Thank you kindly",
                  "Thank you for that",
                  "Thank you bot",
                  "Thank you",
                  "Right on, thanks very much",
                  "Right on, thanks a lot",
                  "Radical, thanks",
                  "Rad, thanks",
                  "Rad thank you",
                  "Wonderful, thanks!",
                  "Thanks"
              ],
              "answer": "You're welcome.",
              "score": 100.0,
              "id": 75,
              "source": "qna_chitchat_Professional.tsv",
              "metadata": [
                  {
                      "name": "editorial",
                      "value": "chitchat"
                  }
              ],
              "context": {
                  "isContextOnly": false,
                  "prompts": []
              }
          }
      ],
      "debugInfo": null,
      "activeLearningEnabled": true
    }
    

    Так как вопрос Thank you точно соответствует вопросу в беседе, достоверность QnA Maker составляет 100 %. QnA Maker также возвращал все связанные вопросы и свойство метаданных, содержащее сведения о теге метаданных беседы.

Использование порога и ответа по умолчанию

Вы можете запросить минимальный порог для возвращаемого ответа. Если указанное пороговое значение не достигается, возвращается ответ по умолчанию.

  1. Добавьте свойство threshold, чтобы запросить ответ на size с пороговым значением 80 % или выше. База знаний не должна найти этот ответ, так как показатель вопроса равен 71 %. Результат возвращает ответ по умолчанию, указанный при создании базы знаний.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':80.00}"
    
  2. Выполните команду cURL и получите ответ JSON.

    {
        "answers": [
            {
                "questions": [],
                "answer": "No good match found in KB.",
                "score": 0.0,
                "id": -1,
                "source": null,
                "metadata": []
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

    QnA Maker возвращает оценку 0. Это означает, что достоверного ответа нет, но также возвращается ответ по умолчанию.

  3. Измените пороговое значение на 60 % и повторите запрос.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':60.00}"
    

    Теперь JSON возвращает найденный ответ.

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 71.1,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "server",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

Использование источников неструктурированных данных

Теперь поддерживается возможность добавления неструктурированных документов, которые нельзя использовать для извлечения QnA. Пользователь может выбрать включение или исключение неструктурированных наборов данных в API GenerateAnswer при получении ответа на запрос. В общедоступной службе не поддерживаются неструктурированные наборы данных, они включаются только в пользовательские ответы на вопросы.

В этом кратком руководстве описывается, как получить ответ из базы знаний с помощью Postman.

Необходимые компоненты

  • Ресурс QnA Maker, созданный на портале Azure Помните идентификатор Microsoft Entra, подписку, имя ресурса QnA, выбранное при создании ресурса.
  • Обученная и опубликованная база знаний с вопросами и ответами, на основе предыдущего краткого руководства, с настроенными метаданными и беседой.

Примечание.

Когда вы будете готовы создать ответ на вопрос из базы знаний, вам будет нужно обучить и опубликовать эту базу знаний. После публикации базы знаний на странице публикации отображаются параметры запроса HTTP для создания ответа. На вкладке Postman отображаются параметры, необходимые для создания ответа.

Настройка получения запросов в Postman

В этом кратком руководстве применяются те же параметры для запроса POST через Postman, а затем настраивается отправка JSON в теле запроса POST, где служба-получатель выбирается в зависимости от нужного результата запроса.

Используйте эту процедуру, чтобы настроить Postman, а из следующих разделов вы узнаете, как настроить JSON в теле запроса POST.

  1. На странице Параметры для базы знаний щелкните вкладку Postman, чтобы увидеть конфигурацию, используемую для создания ответа из базы знаний. Скопируйте следующие данные для использования в Postman.

    Имя Параметр Цель и значение
    POST /knowledgebases/replace-with-your-knowledge-base-id/generateAnswer Это метод HTTP и маршрут для URL-адреса.
    Host https://YOUR-RESOURCE_NAME.azurewebsites.net/qnamaker Это узел URL-адреса. Объедините значения Host и Post, чтобы получить полный URL-адрес generateAnswer.
    Authorization EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Значение заголовка для авторизации запроса в Azure.
    Content-type application/json Значение заголовка для содержимого.
    {"question":"<Your question>"} Текст запроса POST в формате объекта JSON. Это значение будет изменяться в каждом из следующих разделов в зависимости от того, для чего предназначен очередной запрос.

    Внимание

    Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье по безопасности служб ИИ Azure.

  2. Откройте Postman и создайте простой запрос POST с параметрами опубликованной ранее базы знаний. В следующих разделах JSON в теле POST будет изменяться в соответствии с новыми запросами к базе знаний.

Применение метаданных для фильтрации ответов

При работе с предыдущим кратким руководством мы добавили метаданные в две пары "вопрос — ответ", чтобы различать два разных вопроса. Добавьте метаданные в запрос, чтобы отфильтровать только одну нужную нам пару "вопрос — ответ".

  1. В Postman измените только объект JSON в запросе, добавив свойство strictFilters с парой "имя — значение" следующего вида: service:qna_maker. Теперь текст JSON будет выглядеть так:

    {
        'question':'size',
        'strictFilters': [
            {
                'name':'service','value':'qna_maker'
            }
        ]
    }
    

    Этот вопрос состоит всего из одного слова (size), по которому может возвращаться любая пара из вопроса и ответа. Массив strictFilters указывает, что ответ нужно сократить до qna_maker ответов.

  2. Ответ включает только тот ответ, который соответствует критериям фильтра.

    Следующий ответ был отформатирован для удобства чтения:

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 68.76,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "service",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null
    }
    

    Если существует пара вопроса и ответа, которая не соответствует поисковому запросу, но соответствует фильтру, она не будет возвращена. Вместо этого возвращается общий ответ No good match found in KB..

Использование свойства debug в запросе

Примечание.

Мы не рекомендуем использовать свойство debug для всех зависимостей. Это свойство было добавлено только для того, чтобы помочь разработчикам в устранении неполадок.

Отладочная информация поможет понять, как был определен возвращаемый ответ. Это иногда полезно, но необязательно. Чтобы создать ответ с отладочной информацией, добавьте свойство debug:

  1. В Postman измените только объект JSON, добавив свойство debug. Теперь JSON будет выглядеть так:

    {
        'question':'size',
        'Debug': {
            'Enable':true
        }
    
    }
    
  2. Ответ включает необходимые сведения об ответе. В следующих выходных данных JSON некоторые отладочные сведения заменены многоточиями.

    {
        "answers": [
            {
                "questions": [
                    "How do I share a knowledge base with others?"
                ],
                "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.",
                "score": 56.07,
                "id": 5,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": {
            "userQuery": {
                "question": "How do I programmatically update my Knowledge Base?",
                "top": 1,
                "userId": null,
                "strictFilters": [],
                "isTest": false,
                "debug": {
                    "enable": true,
                    "recordL1SearchLatency": false,
                    "mockQnaL1Content": null
                },
                "rankerType": 0,
                "context": null,
                "qnaId": 0,
                "scoreThreshold": 0.0
            },
            "rankerInfo": {
                "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base",
                "synonyms": "what s...",
                "rankerLanguage": "English",
                "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini",
                "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers",
                "allQnAsfeatureValues": {
                    "WordnetSimilarity": {
                        "5": 0.54706300120043716,...
                    },
                    ...
                },
                "rankerVersion": "V2",
                "rankerModelType": "TreeEnsemble",
                "rankerType": 0,
                "indexResultsCount": 25,
                "reRankerResultsCount": 1
            },
            "runtimeVersion": "5.24.0",
            "indexDebugInfo": {
                "indexDefinition": {
                    "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e",
                    "fields": [...
                    ],
                    "scoringProfiles": [],
                    "defaultScoringProfile": null,
                    "corsOptions": null,
                    "suggesters": [],
                    "analyzers": [],
                    "tokenizers": [],
                    "tokenFilters": [],
                    "charFilters": [],
                    "@odata.etag": "\"0x8D7A920EA5EE6FE\""
                },
                "qnaCount": 117,
                "parameters": {},
                "azureSearchResult": {
                    "continuationToken": null,
                    "@odata.count": null,
                    "@search.coverage": null,
                    "@search.facets": null,
                    "@search.nextPageParameters": null,
                    "value": [...],
                    "@odata.nextLink": null
                }
            },
            "l1SearchLatencyInMs": 0,
            "qnaL1Results": {...}
        },
        "activeLearningEnabled": true
    }
    

Использование тестовой базы знаний

Если вы хотите получить ответ от тестовой базы знаний, используйте в тексте свойство isTest.

В Postman измените только объект JSON, добавив свойство isTest. Теперь JSON будет выглядеть так:

{
    'question':'size',
    'isTest': true
}

В ответе в формате JSON используется та же схема, что и в запросе к опубликованной базе знаний.

Примечание.

Если тестовая и опубликованная базы знаний полностью совпадают, то незначительные вариации могут возникать из-за того, что тестовый индекс является общим для всех баз знаний в ресурсе.

Запрос ответа в беседе

  1. В Postman измените только объект JSON, включив инструкцию завершения диалога от пользователя. Теперь JSON будет выглядеть так:

    {
        'question':'thank you'
    }
    
  2. Результат содержит оценку и ответ.

    {
      "answers": [
          {
              "questions": [
                  "I thank you",
                  "Oh, thank you",
                  "My sincere thanks",
                  "My humblest thanks to you",
                  "Marvelous, thanks",
                  "Marvelous, thank you kindly",
                  "Marvelous, thank you",
                  "Many thanks to you",
                  "Many thanks",
                  "Kthx",
                  "I'm grateful, thanks",
                  "Ahh, thanks",
                  "I'm grateful for that, thank you",
                  "Perfecto, thanks",
                  "I appreciate you",
                  "I appreciate that",
                  "I appreciate it",
                  "I am very thankful for that",
                  "How kind, thank you",
                  "Great, thanks",
                  "Great, thank you",
                  "Gracias",
                  "Gotcha, thanks",
                  "Gotcha, thank you",
                  "Awesome thanks!",
                  "I'm grateful for that, thank you kindly",
                  "thank you pal",
                  "Wonderful, thank you!",
                  "Wonderful, thank you very much",
                  "Why thank you",
                  "Thx",
                  "Thnx",
                  "That's very kind",
                  "That's great, thanks",
                  "That is lovely, thanks",
                  "That is awesome, thanks!",
                  "Thanks bot",
                  "Thanks a lot",
                  "Okay, thanks!",
                  "Thank you so much",
                  "Perfect, thanks",
                  "Thank you my friend",
                  "Thank you kindly",
                  "Thank you for that",
                  "Thank you bot",
                  "Thank you",
                  "Right on, thanks very much",
                  "Right on, thanks a lot",
                  "Radical, thanks",
                  "Rad, thanks",
                  "Rad thank you",
                  "Wonderful, thanks!",
                  "Thanks"
              ],
              "answer": "You're welcome.",
              "score": 100.0,
              "id": 75,
              "source": "qna_chitchat_Professional.tsv",
              "metadata": [
                  {
                      "name": "editorial",
                      "value": "chitchat"
                  }
              ],
              "context": {
                  "isContextOnly": false,
                  "prompts": []
              }
          }
      ],
      "debugInfo": null,
      "activeLearningEnabled": true
    }
    

    Так как вопрос Thank you точно соответствует вопросу в беседе, достоверность QnA Maker составляет 100 %. QnA Maker также возвращал все связанные вопросы и свойство метаданных, содержащее сведения о теге метаданных беседы.

Использование порога и ответа по умолчанию

Вы можете запросить минимальный порог для возвращаемого ответа. Если указанное пороговое значение не достигается, возвращается ответ по умолчанию.

  1. В Postman измените только объект JSON, включив инструкцию завершения диалога от пользователя. Теперь JSON будет выглядеть так:

    {
        'question':'size',
        'scoreThreshold':80.00
    }
    

    База знаний не должна найти этот ответ, так как оценка вопроса составляет всего 71 %, поэтому вместо него возвращается ответ по умолчанию, указанный при создании базы знаний.

    Ответ JSON, содержащий оценку и ответ, будет выглядеть так:

    {
        "answers": [
            {
                "questions": [],
                "answer": "No good match found in KB.",
                "score": 0.0,
                "id": -1,
                "source": null,
                "metadata": []
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

    QnA Maker возвращает оценку 0. Это означает, что достоверного ответа нет, но также возвращается ответ по умолчанию.

  2. Измените пороговое значение на 60 % и повторите запрос.

    {
        'question':'size',
        'scoreThreshold':60.00
    }
    

    Теперь JSON возвращает найденный ответ.

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 71.1,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "server",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

Использование источников неструктурированных данных.

Теперь поддерживается возможность добавления неструктурированных документов, которые нельзя использовать для извлечения QnA. Пользователь может выбрать включение или исключение неструктурированных наборов данных в API GenerateAnswer при получении ответа на запрос. В службе GA неструктурированные наборы данных не поддерживаются. Они поддерживаются только в пользовательских ответах на вопросы.

Следующие шаги

Узнайте больше о метаданных: