Cognitieve vaardigheid van shaper

De Shaper-vaardigheid wordt gebruikt om de structuur van de in-memory verrijkingsstructuur die is gemaakt door een vaardighedenset, opnieuw vorm te geven of te wijzigen. Als uitvoer van vaardigheden niet rechtstreeks aan zoekvelden kan worden toegewezen, kunt u een Shaper-vaardigheid toevoegen om de gegevensshape te maken die u nodig hebt voor uw zoekindex of kennisarchief.

Primaire use cases voor deze vaardigheid zijn onder andere:

  • U gaat een kennisarchief vullen. De fysieke structuur van de tabellen en objecten van een kennisarchief wordt gedefinieerd via projecties. Een Shaper-vaardigheid voegt granulariteit toe door gegevensshapes te maken die naar de projecties kunnen worden gepusht.

  • U wilt meerdere vaardigheiduitvoerbewerkingen toewijzen aan één structuur in uw zoekindex, meestal een complex type, zoals beschreven in scenario 1.

  • Vaardigheden produceren meerdere uitvoer, maar u wilt combineren in één veld (dit hoeft geen complex type te zijn), zoals beschreven in scenario 2. U kunt bijvoorbeeld titels en auteurs combineren in één veld.

  • Vaardigheden produceren meerdere uitvoer met onderliggende elementen en u wilt ze combineren. Deze use-case wordt geïllustreerd in scenario 3.

De uitvoernaam van een Shaper-vaardigheid is altijd 'uitvoer'. Intern kan de pijplijn een andere naam toewijzen, zoals 'analyzedText' zoals wordt weergegeven in de onderstaande voorbeelden, maar de Shaper-vaardigheid zelf retourneert 'uitvoer' in het antwoord. Dit kan belangrijk zijn als u verrijkte documenten foutopsporing gebruikt en de naamverschillen ziet, of als u een aangepaste vaardigheid bouwt en het antwoord zelf structureren.

Notitie

Deze vaardigheid is niet gebonden aan Azure AI-services. Het is niet factureerbaar en heeft geen sleutelvereiste voor Azure AI-services.

@odata.type

Microsoft.Skills.Util.ShaperSkill

Scenario 1: complexe typen

Overweeg een scenario waarin u een structuur wilt maken met de naam analyzedText met respectievelijk twee leden: tekst en sentiment. In een index wordt een doorzoekbaar veld met meerdere onderdelen een complex type genoemd en wordt vaak gemaakt wanneer brongegevens een bijbehorende complexe structuur hebben die eraan wordt toegewezen.

Een andere benadering voor het maken van complexe typen is echter via de shaper-vaardigheid . Door deze vaardigheid in een vaardighedenset op te slaan, kunnen de in-memory bewerkingen tijdens het verwerken van vaardighedenset gegevensshapes uitvoeren met geneste structuren, die vervolgens kunnen worden toegewezen aan een complex type in uw index.

De volgende voorbeelddefinitie van de vaardigheid bevat de ledennamen als invoer.

{
  "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
  "context": "/document/content/phrases/*",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content/phrases/*"
    },
    {
      "name": "sentiment",
      "source": "/document/content/phrases/*/sentiment"
    }
  ],
  "outputs": [
    {
      "name": "output",
      "targetName": "analyzedText"
    }
  ]
}

Voorbeeldindex

Een vaardighedenset wordt aangeroepen door een indexeerfunctie en een indexeerfunctie vereist een index. Een complexe veldweergave in uw index kan eruitzien als in het volgende voorbeeld.

"name":"my-index",
"fields":[
   { "name":"myId", "type":"Edm.String", "key":true, "filterable":true  },
   { "name":"analyzedText", "type":"Edm.ComplexType",
      "fields":[
         {
            "name":"text",
            "type":"Edm.String",
            "facetable":false,
            "filterable":false,
            "searchable":true,
            "sortable":false  },
         {
            "name":"sentiment",
            "type":"Edm.Double",
            "facetable":true,
            "filterable":true,
            "searchable":true,
            "sortable":true }
      }

Vaardigheidsinvoer

Een binnenkomend JSON-document dat bruikbare invoer biedt voor deze Shaper-vaardigheid kan het volgende zijn:

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "text": "this movie is awesome",
                "sentiment": 0.9
            }
        }
    ]
}

Uitvoer van vaardigheden

De shaper-vaardigheid genereert een nieuw element met de naam analyzedText met de gecombineerde elementen van tekst en sentiment. Deze uitvoer voldoet aan het indexschema. Deze wordt geïmporteerd en geïndexeerd in een Azure AI Search-index.

{
    "values": [
      {
        "recordId": "1",
        "data":
           {
            "analyzedText": 
              {
                "text": "this movie is awesome" ,
                "sentiment": 0.9
              }
           }
      }
    ]
}

Scenario 2: invoerconsolidatie

Stel in een ander voorbeeld dat u in verschillende fasen van pijplijnverwerking de titel van een boek en hoofdstuktitels op verschillende pagina's van het boek hebt geëxtraheerd. U kunt nu één structuur maken die bestaat uit deze verschillende uitvoer.

De definitie van de Shaper-vaardigheid voor dit scenario kan eruitzien als in het volgende voorbeeld:

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "context": "/document",
    "inputs": [
        {
            "name": "title",
            "source": "/document/content/title"
        },
        {
            "name": "chapterTitles",
            "source": "/document/content/pages/*/chapterTitles/*/title"
        }
    ],
    "outputs": [
        {
            "name": "output",
            "targetName": "titlesAndChapters"
        }
    ]
}

Uitvoer van vaardigheden

In dit geval platt Shaper alle hoofdstuktitels af om één matrix te maken.

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "titlesAndChapters": {
                    "title": "How to be happy",
                    "chapterTitles": [
                        "Start young",
                        "Laugh often",
                        "Eat, sleep and exercise"
                    ]
                }
            }
        }
    ]
}

Scenario 3: invoerconsolidatie vanuit geneste contexten

Stel dat u hoofdstuktitels en hoofdstuknummers van een boek hebt en entiteitsherkenning en sleuteltermen op de inhoud hebt uitgevoerd en nu resultaten van de verschillende vaardigheden moet aggregeren in één vorm met de hoofdstuknaam, entiteiten en sleuteltermen.

In dit voorbeeld wordt een optionele sourceContext eigenschap toegevoegd aan de invoer 'chapterTitles'. De source en sourceContext eigenschappen sluiten elkaar wederzijds uit. Als de invoer zich in de context van de vaardigheid bevindt, kunt u gebruiken source. Als de invoer zich in een andere context bevindt dan de vaardigheidscontext, gebruikt u sourceContext. Hiervoor sourceContext moet u een geneste invoer definiëren, waarbij elke invoer een source element bevat dat het specifieke element identificeert dat wordt gebruikt om het benoemde knooppunt te vullen.

De definitie van de Shaper-vaardigheid voor dit scenario kan eruitzien als in het volgende voorbeeld:

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "context": "/document",
    "inputs": [
        {
            "name": "title",
            "source": "/document/content/title"
        },
        {
            "name": "chapterTitles",
            "sourceContext": "/document/content/pages/*/chapterTitles/*",
            "inputs": [
              {
                  "name": "title",
                  "source": "/document/content/pages/*/chapterTitles/*/title"
              },
              {
                  "name": "number",
                  "source": "/document/content/pages/*/chapterTitles/*/number"
              }
            ]
        }

    ],
    "outputs": [
        {
            "name": "output",
            "targetName": "titlesAndChapters"
        }
    ]
}

Uitvoer van vaardigheden

In dit geval maakt shaper een complex type. Deze structuur bestaat in het geheugen. Als u het wilt opslaan in een kennisarchief, moet u een projectie maken in uw vaardighedenset waarmee opslagkenmerken worden gedefinieerd.

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "titlesAndChapters": {
                    "title": "How to be happy",
                    "chapterTitles": [
                      { "title": "Start young", "number": 1},
                      { "title": "Laugh often", "number": 2},
                      { "title": "Eat, sleep and exercise", "number: 3}
                    ]
                }
            }
        }
    ]
}

Zie ook