Compartir vía


Obtención de una respuesta de una knowledge base de QNA Maker

Nota

El servicio QnA Maker se retirará del mercado el 31 de marzo de 2025. Ya hay disponible una versión más reciente de la funcionalidad de preguntas y respuestas como parte de Lenguaje de Azure AI. Para más información sobre las funcionalidades de respuesta a preguntas en el servicio de lenguaje, consulte Respuesta a preguntas. A partir del 1 de octubre de 2022 no podrá crear nuevos recursos de QnA Maker. Para obtener información sobre la migración de bases de conocimiento de QnA Maker existentes para responder preguntas, consulte la guía de migración.

Nota

Esta documentación no se aplica a la versión más reciente. Para obtener información sobre el uso de las API más recientes de respuestas a preguntas, consulte la guía de creación de respuestas a preguntas.

En este artículo de inicio rápido basado en cURL se ofrece orientación sobre cómo obtener una respuesta de la base de conocimiento.

Requisitos previos

  • Debe disponer de lo siguiente:
    • Versión más reciente de cURL.
    • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
  • Un recurso de QnA Maker creado en Azure Portal. Recuerde su Microsoft Entra ID, la suscripción y el nombre de recurso de QnA que seleccionó al crear el recurso.
  • Una base de conocimiento entrenada y publicada con preguntas y respuestas creada en el inicio rápido anterior y configurada con metadatos y charla.

Nota

Cuando esté listo para generar una respuesta a una pregunta de la base de conocimiento, debe entrenar y publicar la base de conocimiento. Cuando se publica la base de conocimiento, en la página Publicar se muestra la configuración de la solicitud HTTP para generar una respuesta. La pestaña cURL muestra la configuración necesaria para generar una respuesta de la herramienta de línea de comandos.

Uso de metadatos para filtrar las respuestas

Use la base de conocimiento del anterior inicio rápido para consultar una respuesta basada en metadatos.

  1. En la página Configuración de la base de conocimiento, seleccione la pestaña cURL para ver un ejemplo de comando de cURL usado para generar una respuesta desde la base de conocimiento.

  2. Copie el comando en un entorno editable (como un archivo de texto) para poder editarlo. Edite el valor de la pregunta como se indica a continuación para que los metadatos de service:qna_maker se usen como filtro para los pares de QnA.

    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'}]}"
    

    La pregunta es solo una palabra, size, que puede devolver cualquiera de los dos pares de QnA. La matriz strictFilters indica a la respuesta que se reduzca a solo las contestaciones de qna_maker.

  3. La respuesta incluye solo la contestación que cumple los criterios de filtro. A la siguiente respuesta de cURL se le ha cambiado el formato para mayor legibilidad:

    {
        "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
    }
    

    Si hay un par de preguntas y respuestas que no cumple el término de búsqueda, pero sí el filtro, no se devolverá. En su lugar, se devuelve la respuesta general No good match found in KB..

Uso de la propiedad de consulta debug

Nota

No se recomienda usar la propiedad Debug con ninguna dependencia. Esta propiedad se ha agregado para ayudar al equipo del producto a solucionar problemas.

La información de depuración le ayuda a comprender cómo se determinó la respuesta devuelta. Aunque es útil, no es necesaria. Para generar una respuesta con la información de depuración, agregue la propiedad debug:

Debug: {Enable:true}
  1. Edite el comando de cURL para que incluya la propiedad debug para ver más información.

    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. La respuesta incluye la información pertinente acerca de la respuesta. En la siguiente salida JSON, algunos detalles de la depuración se han reemplazado por puntos suspensivos por cuestiones de brevedad.

    {
        "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
    }
    

Uso de la base de conocimiento de prueba

Si quiere obtener una respuesta de la base de conocimiento de prueba, use la propiedad de cuerpo isTest.

La propiedad es un valor booleano.

isTest:true

El comando de cURL tiene el siguiente aspecto:

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}"

La respuesta JSON usa el mismo esquema que la consulta de la base de conocimiento publicada.

Nota

Aunque la prueba y las bases de conocimiento publicadas sean exactamente iguales, puede haber algunas pequeñas diferencias ya que el índice de pruebas se comparte entre todas las bases de conocimiento del recurso.

Uso de cURL para consultar una respuesta de charla

  1. En el terminal con cURL habilitado, use una instrucción de fin de conversación de bot desde el usuario como, por ejemplo Thank you, como pregunta. No hay ninguna otra propiedad para establecer.

    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. Ejecute el comando cURL y reciba la respuesta JSON, que incluye la puntuación y la respuesta.

    {
      "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
    }
    

    Dado que la pregunta de Thank you coincidía exactamente con una pregunta de charla, QnA Maker está completamente seguro con la puntuación de 100. QnA Maker también ha devuelto todas las preguntas relacionadas y la propiedad metadata que contiene la información de la etiqueta de metadatos de charla.

Uso de un umbral y una respuesta predeterminada

Puede solicitar un umbral mínimo para la respuesta. Si no se cumple el umbral, se devuelve la respuesta predeterminada.

  1. Agregue la propiedad threshold para solicitar una respuesta a size con un umbral del 80 % o superior. La base de conocimiento no encuentra esa respuesta ya que la puntuación de la pregunta es del 71 %. El resultado devuelve la respuesta predeterminada que proporcionó al crear la base de conocimiento.

    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. Ejecute el comando cURL y reciba la respuesta JSON.

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

    QnA Maker ha devuelto una puntuación de 0, lo que significa ninguna confianza. También ha devuelto la respuesta predeterminada.

  3. Cambie el valor de umbral a 60 % y vuelva a realizar la consulta:

    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}"
    

    El código JSON devuelto encontró la respuesta.

    {
        "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
    }
    

Utilizar orígenes de datos no estructurados

Ahora se admiten la capacidad para agregar documentos no estructurados que no se pueden usar para extraer preguntas y respuestas. El usuario puede elegir incluir o excluir conjuntos de datos no estructurados en GenerateAnswer API al capturar una respuesta a la consulta. No se admiten conjuntos de datos no estructurados en el servicio de disponibilidad general, solo se incluyen en la respuesta a preguntas personalizadas.

Este inicio rápido basado en la extensión de cliente REST de Visual Studio Code le guía a través de la obtención de una respuesta de la base de conocimiento.

Requisitos previos

  • Un recurso de QnA Maker creado en Azure Portal. Recuerde su Microsoft Entra ID, la suscripción y el nombre de recurso de QnA que seleccionó al crear el recurso.
  • Una base de conocimiento entrenada y publicada con preguntas y respuestas creada en el inicio rápido anterior y configurada con metadatos y charla.

Nota

Cuando esté listo para generar una respuesta a una pregunta de la base de conocimiento, debe entrenar y publicar la base de conocimiento. Cuando se publica la base de conocimiento, en la página Publicar se muestra la configuración de la solicitud HTTP para generar una respuesta. La pestaña Postman muestra la configuración necesaria para generar una respuesta.

Configuración de la extensión de cliente REST de Visual Studio Code para solicitudes

En este inicio rápido, se usan las mismas opciones para la solicitud de POST de la extensión de cliente REST de Visual Studio Code y, a continuación, se configura en el archivo JSON del cuerpo del POST enviado al servicio en función de lo que intenta consultar.

Use este procedimiento para configurar la extensión de cliente REST de Visual Studio Code y, después, lea cada sección posterior para configurar el JSON del cuerpo de la solicitud de POST.

  1. En la página Configuración de la base de conocimiento, seleccione la pestaña Postman para ver la configuración que se usa para generar una respuesta de la base de conocimiento. Copie la siguiente información para usarla en la extensión de cliente REST de Visual Studio Code.

    Nombre Configuración Propósito y valor
    POST /knowledgebases/replace-with-your-knowledge-base-id/generateAnswer Este es el método HTTP y la ruta de la dirección URL.
    Host https://YOUR-RESOURCE_NAME.azurewebsites.net/qnamaker Este es el host de la dirección URL. Concatene los valores de Host y Post para obtener la dirección URL completa de generateAnswer.
    Authorization EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx El valor del encabezado para autorizar la solicitud en Azure.
    Content-type application/json El valor del encabezado para el contenido.
    {"question":"<Your question>"} El cuerpo de la solicitud POST como un objeto JSON. Este valor cambiará en cada sección posterior, en función de aquello para lo que esté pensada la consulta.

    Importante

    Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo Seguridad de servicios de Azure AI para más información.

  2. Use la extensión de cliente REST de Visual Studio Code para crear una nueva solicitud de POST básica con la configuración de la base de conocimiento publicada. En las secciones siguientes, modifique el código JSON de la sección body de la solicitud POST para cambiar la consulta a la base de conocimiento.

Uso de metadatos para filtrar las respuestas

En un inicio rápido anterior, se agregaron los metadatos a dos pares de QnA para distinguir entre dos preguntas diferentes. Agregue los metadatos a la consulta para restringir el filtro solo al par de QnA pertinente.

  1. En la extensión de cliente REST de Visual Studio Code, cambie solo el JSON de la consulta mediante la adición de la propiedad strictFilters con el par nombre-valor de service:qna_maker. El código JSON del cuerpo debe ser:

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

    La pregunta es solo una palabra, size, que puede devolver cualquiera de los dos pares de preguntas y respuestas. La matriz strictFilters indica a la respuesta que se reduzca a solo las contestaciones de qna_maker.

  2. La respuesta incluye solo la contestación que cumple los criterios de filtro.

    A la siguiente respuesta se le ha cambiado el formato para mayor legibilidad:

    {
        "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
    }
    

    Si hay un par de preguntas y respuestas que no cumple el término de búsqueda, pero sí el filtro, no se devolverá. En su lugar, se devuelve la respuesta general No good match found in KB..

Uso de la propiedad de consulta debug

Nota

No se recomienda usar la propiedad Debug con ninguna dependencia. Esta propiedad se ha agregado para ayudar al equipo del producto a solucionar problemas.

La información de depuración le ayuda a comprender cómo se determinó la respuesta devuelta. Aunque es útil, no es necesaria. Para generar una respuesta con la información de depuración, agregue la propiedad debug:

  1. En la extensión de cliente REST de Visual Studio Code, cambie solo el JSON del cuerpo mediante la adición de la propiedad debug. El código JSON debe ser:

    {
        'question':'size',
        'Debug': {
            'Enable':true
        }
    
    }
    
  2. La respuesta incluye la información pertinente acerca de la respuesta. En la siguiente salida JSON, algunos detalles de la depuración se han reemplazado por puntos suspensivos.

    {
        "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
    }
    

Uso de la base de conocimiento de prueba

Si quiere obtener una respuesta de la base de conocimiento de prueba, use la propiedad de cuerpo isTest.

En la extensión de cliente REST de Visual Studio Code, cambie solo el JSON del cuerpo mediante la adición de la propiedad isTest. El código JSON debe ser:

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

La respuesta JSON usa el mismo esquema que la consulta de la base de conocimiento publicada.

Nota

Aunque la prueba y las bases de conocimiento publicadas sean exactamente iguales, puede haber algunas pequeñas diferencias ya que el índice de pruebas se comparte entre todas las bases de conocimiento del recurso.

Consulta de una respuesta de charla

  1. En la extensión de cliente REST de Visual Studio Code, cambie solo el JSON del cuerpo a una instrucción de finalización de conversación del usuario. El código JSON debe ser:

    {
        'question':'thank you'
    }
    
  2. La respuesta incluye la puntuación y la respuesta.

    {
      "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
    }
    

    Dado que la pregunta de Thank you coincidía exactamente con una pregunta de charla, QnA Maker está completamente seguro con la puntuación de 100. QnA Maker también ha devuelto todas las preguntas relacionadas y la propiedad metadata que contiene la información de la etiqueta de metadatos de charla.

Uso de un umbral y una respuesta predeterminada

Puede solicitar un umbral mínimo para la respuesta. Si no se cumple el umbral, se devuelve la respuesta predeterminada.

  1. En la extensión de cliente REST de Visual Studio Code, cambie solo el JSON del cuerpo a una instrucción de finalización de conversación del usuario. El código JSON debe ser:

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

    La base de conocimiento no encuentra esa respuesta ya que la puntuación de la pregunta es del 71 % y, en su lugar, devuelve la respuesta predeterminada que proporcionó al crear la base de conocimiento.

    La respuesta JSON devuelta, incluida la puntuación y la respuesta, es:

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

    QnA Maker ha devuelto una puntuación de 0, lo que significa ninguna confianza. También ha devuelto la respuesta predeterminada.

  2. Cambie el valor de umbral a 60 % y vuelva a realizar la consulta:

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

    El código JSON devuelto encontró la respuesta.

    {
        "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
    }
    

Utilice orígenes de datos no estructurados.

Ahora se admiten la capacidad para agregar documentos no estructurados que no se pueden usar para extraer preguntas y respuestas. El usuario puede elegir incluir o excluir conjuntos de datos no estructurados en GenerateAnswer API al capturar una respuesta a la consulta. No se admiten conjuntos de datos no estructurados en el servicio de disponibilidad general. Solo se admite en respuestas a preguntas personalizadas.

Pasos siguientes

Más información sobre metadatos: