Фильтрация ответов с помощью метаданных
QnA Maker позволяет добавлять метаданные в виде пар "ключ/значение" в наборы пар вопросов и ответов. Затем эти сведения можно использовать, чтобы отфильтровать результаты запросов пользователей и сохранить дополнительную информацию, которая может использоваться в дальнейших диалогах.
Примечание.
Поддержка службы QnA Maker будет прекращена 31 марта 2025 г. Новая версия вопроса и возможности ответа теперь доступна как часть языка искусственного интеллекта Azure. Сведения о возможностях ответов на вопросы в службе Языка см. в статье с ответами на вопросы. С 1 октября 2022 г. вы не сможете создавать ресурсы QnA Maker. Сведения о переносе существующих баз знаний QnA Maker в функцию вопросов и ответов см. в руководстве по миграции.
Хранение вопросов и ответов с помощью сущности QnA
Важно понимать, как QnA Maker хранит данные вопросов и ответов. На рисунке ниже показана сущность QnA.
У каждой сущности QnA имеется уникальный постоянный идентификатор. Этот идентификатор можно использовать для внесения изменений в определенную сущность QnA.
Использование метаданных для фильтрации ответов по настраиваемым тегам метаданных
Добавление метаданных позволяет фильтровать ответы по этим тегам метаданных. Добавьте столбец метаданных из меню Параметры представления. Добавьте метаданные в базу знаний, щелкнув значок метаданных +, чтобы добавить пару метаданных. Эта пара состоит из одного ключа и одного значения.
Фильтрация результатов с помощью strictFilters по тегам метаданных
Рассмотрим вопрос пользователя "Когда закрывается это отель?", где предполагается намерение для ресторана Paradise.
Поскольку требуются результаты только для ресторана Paradise, в вызове GenerateAnswer можно установить фильтр для метаданных Restaurant Name. Это иллюстрируется в примере ниже.
{
"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"
}
]
Логический "И" по умолчанию
Чтобы объединить несколько фильтров метаданных в запросе, добавьте дополнительные фильтры метаданных в массив свойства strictFilters
. По умолчанию значения логически объединены ("И"). Логическое сочетание требует, чтобы все фильтры совпадали с парами "вопрос/ответ", чтобы пара возвращалась в ответе.
Это эквивалентно использованию свойства strictFiltersCompoundOperationType
со значением AND
.
Логический ИЛИ при использовании свойства strictFiltersCompoundOperationType
При объединении нескольких фильтров метаданных, если важен только один или несколько соответствующих фильтров, используйте свойство strictFiltersCompoundOperationType
со значением OR
.
Это позволяет базе знаний возвращать ответы при совпадении фильтра, но не возвращать ответы, не имеющие метаданных.
{
"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"
}
]
}
]
}