Delen via


Meerdere categorieën toevoegen aan uw FAQ-bot

In deze zelfstudie leert u het volgende:

  • Een project maken en vraagantwoordparen taggen in verschillende categorieën met metagegevens
  • Een afzonderlijk project maken voor elk domein
  • Een afzonderlijke taalresource maken voor elk domein

Wanneer u een bot met veelgestelde vragen bouwt, kunt u gebruiksvoorbeelden tegenkomen waarvoor u query's in meerdere domeinen moet aanpakken. Stel dat het marketingteam van Microsoft een klantondersteuningsbot wil bouwen die antwoorden biedt op algemene gebruikersquery's op meerdere Surface-producten. Om het eenvoudig te houden, gebruiken we twee VEELGESTELDE URL's, Surface-pen en Surface Earbuds om het project te maken.

Een project maken met domeinspecifieke metagegevens

Auteurs van inhoud kunnen documenten gebruiken om vraagantwoordparen te extraheren of aangepaste vraag-antwoordparen toe te voegen aan het project. Als u deze vraag en antwoorden wilt groeperen in specifieke domeinen of categorieën, kunt u metagegevens toevoegen.

Voor de bot op Surface-producten kunt u de volgende stappen uitvoeren om een bot te maken die query's beantwoordt voor beide producttypen:

  1. Voeg de volgende URL's voor veelgestelde vragen toe als bronnen door bron-URL's>> toevoegen te selecteren en voeg alles toe nadat u elk van de onderstaande URL's hebt toegevoegd:

    Veelgestelde vragen over Surface-pen
    Veelgestelde vragen over Surface Earbuds

    Screenshot of add URL UI.

  2. In dit project hebben we vraag-antwoordparen op twee producten en willen we er onderscheid tussen maken, zodat we kunnen zoeken naar antwoorden tussen vragen en antwoorden voor een bepaald product. Hiervoor kunnen we het metagegevensveld voor de vraagantwoordparen bijwerken.

    Zoals u in het onderstaande voorbeeld kunt zien, hebben we een metagegevens toegevoegd met product als sleutel en surface_pen of surface_earbuds als waarden waar van toepassing. U kunt dit voorbeeld uitbreiden om gegevens over meerdere producten te extraheren en een andere waarde toe te voegen voor elk product.

    Screenshot of metadata example.

  3. Als u het systeem nu wilt beperken om te zoeken naar het antwoord voor een bepaald product, moet u dat product doorgeven als filter in de aangepaste vraag die REST API beantwoordt.

    De REST API-voorspellings-URL kan worden opgehaald uit het deelvenster Project implementeren:

    Screenshot of the Deploy project page with the prediction URL displayed.

    In de JSON-hoofdtekst voor de API-aanroep hebben we surface_pen doorgegeven als waarde voor het metagegevensproduct. Het systeem zoekt dus alleen naar het antwoord tussen de QnA-paren met dezelfde metagegevens.

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    U kunt op de volgende manieren metagegevenswaarde verkrijgen op basis van gebruikersinvoer:

    • Neem het domein expliciet als invoer van de gebruiker via de botclient. Zoals hieronder wordt weergegeven, kunt u bijvoorbeeld productcategorie gebruiken als invoer van de gebruiker wanneer het gesprek wordt gestart.

      Take metadata input

    • Domein impliciet identificeren op basis van botcontext. Als de vorige vraag zich bijvoorbeeld op een bepaald Surface-product bevond, kan deze worden opgeslagen als context door de client. Als de gebruiker het product niet opgeeft in de volgende query, kunt u de botcontext doorgeven als metagegevens aan de Generate Answer-API.

      Pass context

    • Extraheer de entiteit uit de gebruikersquery om het domein te identificeren dat moet worden gebruikt voor het metagegevensfilter. U kunt andere Azure AI-services zoals Named Entity Recognition (NER) en conversationele taalkennis gebruiken voor entiteitextractie.

      Extract metadata from query

Hoe groot kunnen onze projecten zijn?

U kunt maximaal 50000 vraagantwoordparen toevoegen aan één project. Als uw gegevens groter zijn dan 50.000 vraagantwoordparen, kunt u overwegen het project te splitsen.

Een afzonderlijk project maken voor elk domein

U kunt ook voor elk domein een afzonderlijk project maken en de projecten afzonderlijk onderhouden. Voor alle API's moet de gebruiker de projectnaam doorgeven om een update van het project uit te voeren of een antwoord op de vraag van de gebruiker op te halen.

Wanneer de gebruikersvraag door de service wordt ontvangen, moet u het in het projectName REST API-eindpunt doorgeven dat wordt weergegeven om een antwoord op te halen uit het relevante project. U kunt de URL vinden op de pagina Project implementeren onder Voorspellings-URL ophalen:

https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

Een afzonderlijke taalresource maken voor elk domein

Stel dat het marketingteam van Microsoft een klantondersteuningsbot wil bouwen die gebruikersquery's beantwoordt op Surface- en Xbox-producten. Ze zijn van plan om afzonderlijke teams toe te wijzen voor toegang tot projecten op Surface en Xbox. In dit geval is het raadzaam om twee aangepaste vragen te maken voor het beantwoorden van resources: een voor Surface en een voor Xbox. U kunt echter afzonderlijke rollen definiëren voor gebruikers die toegang hebben tot dezelfde resource.