Freigeben über


Der Skill „Shaper“

Die Shaper-Fähigkeit wird verwendet, um die Struktur der In-Memory-Anreicherungsstruktur zu ändern, die von einem Skillset erstellt wird. Wenn Qualifikationsausgaben nicht direkt suchfeldern zugeordnet werden können, können Sie eine Shaper-Fähigkeit hinzufügen, um das Daten-Shape zu erstellen, das Sie für Ihren Suchindex oder Wissensspeicher benötigen.

Primäre Anwendungsfälle für diese Fähigkeit sind:

  • Sie füllen einen Wissensspeicher auf. Die physische Struktur der Tabellen und Objekte eines Wissensspeichers wird durch Projektionen definiert. Eine Shaper-Fähigkeit fügt Granularität hinzu, indem Daten-Shapes erstellt werden, die an die Projektionen übertragen werden können.

  • Sie möchten mehrere Qualifikationsausgaben einer einzelnen Struktur in Ihrem Suchindex zuordnen, in der Regel einen komplexen Typ, wie in Szenario 1 beschrieben.

  • Fähigkeiten erzeugen mehrere Ausgaben, aber Sie möchten in einem einzigen Feld (es muss kein komplexer Typ sein), wie in Szenario 2 beschrieben. Beispielsweise werden Titel und Autoren in ein einzelnes Feld kombiniert.

  • Fähigkeiten erzeugen mehrere Ausgaben mit untergeordneten Elementen, und Sie möchten sie kombinieren. Dieser Anwendungsfall wird in Szenario 3 veranschaulicht.

Der Ausgabename einer Shaper-Fähigkeit ist immer "Ausgabe". Intern kann die Pipeline einen anderen Namen zuordnen (z. B. „analyzedText“ wie in den folgenden Beispielen), die Qualifikation Shaper selbst gibt in der Antwort jedoch „output“ zurück. Dies kann wichtig sein, wenn Sie angereicherte Dokumente debuggen und die Namensdiskrepanz bemerken, oder wenn Sie einen benutzerdefinierten Skill erstellen und die Antwort selbst strukturieren.

Hinweis

Dieser Skill ist nicht an Azure KI Services gebunden. Er ist nicht gebührenpflichtig und weist keine Azure KI Services-Schlüsselanforderungen auf.

@odata.type

Microsoft.Skills.Util.ShaperSkill

Szenario 1: komplexe Typen

Stellen Sie sich ein Szenario vor, in dem Sie eine Struktur namens analyzedText erstellen möchten, die zwei Elemente hat: text und sentiment. In einem Index wird ein mehrteiliges, durchsuchbares Feld als komplexer Typ bezeichnet und oft erstellt, wenn die Quelldaten über eine entsprechende komplexe Struktur verfügen, die dem Typ entspricht.

Einen anderen Ansatz für das Erstellen komplexer Typen stellt die Qualifikation Shaper dar. Durch das Einschließen dieser Qualifikation in eine Qualifikationsgruppe können die speicherinternen Vorgänge während der Verarbeitung von Qualifikationsgruppen Datenformen mit geschachtelten Strukturen ausgeben, die dann einem komplexen Typ in Ihrem Index zugeordnet werden können.

Die folgende Beispieldefinition für eine Qualifikation stellt die Elementnamen als Eingabe bereit.

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

Beispielindex

Eine Qualifikationsgruppe wird von einem Indexer aufgerufen, der wiederum einen Index erfordert. Die Darstellung eines komplexen Felds in Ihrem Index kann wie im folgenden Beispiel aussehen.

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

Qualifikationseingaben

So könnte ein eingehendes JSON-Dokument aussehen, das hilfreiche Eingabewerte für diese Qualifikation Shaper enthält:

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

Qualifikationsausgaben

Der Skill Shaper generiert ein neues Element namens analyzedText mit den kombinierten Elementen von text und sentiment. Diese Ausgabe entspricht dem Indexschema. Er wird importiert und in einem Azure KI Search-Index indiziert.

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

Szenario 2: Eingabekonsolidierung

In einem anderen Beispiel stellen Sie sich vor, dass Sie in verschiedenen Phasen der Pipelineverarbeitung den Titel eines Buchs und die Kapitelüberschriften auf verschiedenen Seiten des Buchs extrahiert haben. Sie können nun eine einzelne Struktur erstellen, die aus diesen verschiedenen Ausgaben besteht.

Die Definition der Qualifikation Shaper für dieses Szenario könnte wie im folgenden Beispiel aussehen:

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

Qualifikationsausgaben

In diesem Fall vereinfacht Shaper alle Kapiteltitel, um ein einzelnes Array zu erstellen.

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

Szenario 3: Eingabekonsolidierung aus geschachtelten Kontexten

Stellen Sie sich vor, Sie verfügen über Kapiteltitel und Kapitelnummern eines Buchs und führen Entitätserkennung und wichtige Ausdrücke für den Inhalt aus und müssen jetzt Ergebnisse aus den verschiedenen Fähigkeiten in einer einzigen Form mit dem Kapitelnamen, Entitäten und Schlüsselausdrücken aggregieren.

In diesem Beispiel wird der Eingabe "chapterTitles" eine optionale sourceContext Eigenschaft hinzugefügt. Die Eigenschaften source und sourceContext schließen sich gegenseitig aus. Wenn sich die Eingabe im Kontext der Fähigkeiten befindet, können Sie verwenden source. Wenn sich die Eingabe in einem anderen Kontext befindet als der Qualifikationskontext, verwenden Sie sourceContext. Dies sourceContext erfordert, dass Sie eine geschachtelte Eingabe definieren, wobei jede Eingabe über eine source Eingabe verfügt, die das spezifische Element identifiziert, das zum Auffüllen des benannten Knotens verwendet wird.

Die Definition der Qualifikation Shaper für dieses Szenario könnte wie im folgenden Beispiel aussehen:

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

Qualifikationsausgaben

In diesem Fall erstellt Shaper einen komplexen Typ. Diese Struktur ist im Arbeitsspeicher enthalten. Wenn Sie sie in einem Wissensspeicher speichern möchten, sollten Sie eine Projektion in Ihrer Qualifikationsgruppe erstellen, die Speichereigenschaften definiert.

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

Siehe auch