Umiejętności poznawcze z zakresu kształtowania

Umiejętności kształtowania służą do zmieniania lub modyfikowania struktury drzewa wzbogacania w pamięci utworzonego przez zestaw umiejętności. Jeśli dane wyjściowe umiejętności nie mogą być mapowane bezpośrednio na pola wyszukiwania, możesz dodać umiejętność kształtowania , aby utworzyć kształt danych potrzebny dla indeksu wyszukiwania lub magazynu wiedzy.

Podstawowe przypadki użycia tej umiejętności obejmują:

  • Wypełniasz magazyn wiedzy. Fizyczna struktura tabel i obiektów magazynu wiedzy jest definiowana za pośrednictwem projekcji. Umiejętność kształtowania zwiększa stopień szczegółowości, tworząc kształty danych, które można wypchnąć do projekcji.

  • Chcesz zamapować wiele danych wyjściowych umiejętności na jedną strukturę w indeksie wyszukiwania, zazwyczaj typu złożonego, zgodnie z opisem w scenariuszu 1.

  • Umiejętności generują wiele danych wyjściowych, ale chcesz połączyć je w jedno pole (nie musi być typem złożonym), zgodnie z opisem w scenariuszu 2. Na przykład łączenie tytułów i autorów w jedno pole.

  • Umiejętności generują wiele danych wyjściowych z elementami podrzędnymi i chcesz je połączyć. Ten przypadek użycia jest przedstawiony w scenariuszu 3.

Nazwa danych wyjściowych umiejętności kształtowania to zawsze "dane wyjściowe". Wewnętrznie potok może mapować inną nazwę, taką jak "analyzedText", jak pokazano w poniższych przykładach, ale sama umiejętność kształtowania zwraca wartość "output" w odpowiedzi. Może to być ważne, jeśli debugujesz wzbogacone dokumenty i zauważysz rozbieżność nazewnictwa lub jeśli tworzysz niestandardową umiejętność i samodzielnie tworzysz strukturę odpowiedzi.

Uwaga

Ta umiejętność nie jest powiązana z usługami azure AI. Nie jest rozliczana i nie ma kluczowego wymagania dotyczącego usług azure AI.

@odata.type

Microsoft.Skills.Util.ShaperSkill

Scenariusz 1: typy złożone

Rozważmy scenariusz, w którym chcesz utworzyć strukturę o nazwie analyzedText , która ma odpowiednio dwa elementy członkowskie: tekst i tonację. W indeksie pole z możliwością wyszukiwania wieloczęściowego jest nazywane typem złożonym i często jest tworzone, gdy dane źródłowe mają odpowiednią złożoną strukturę, która ją mapuje.

Jednak innym podejściem do tworzenia złożonych typów jest umiejętność kształtowania. Dzięki włączeniu tej umiejętności w zestawie umiejętności operacje w pamięci podczas przetwarzania zestawu umiejętności mogą wyprowadzać kształty danych z zagnieżdżonych struktur, które następnie mogą być mapowane na złożony typ w indeksie.

Poniższa przykładowa definicja umiejętności zawiera nazwy elementów członkowskich jako dane wejściowe.

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

Przykładowy indeks

Zestaw umiejętności jest wywoływany przez indeksator, a indeksator wymaga indeksu. Złożona reprezentacja pola w indeksie może wyglądać podobnie do poniższego przykładu.

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

Dane wejściowe umiejętności

Przychodzący dokument JSON zapewniający użyteczne dane wejściowe dla tej umiejętności kształtowania może być następujący:

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

Dane wyjściowe umiejętności

Umiejętność kształtowania generuje nowy element o nazwie analyzedText z połączonymi elementami tekstu i tonacji. Te dane wyjściowe są zgodne ze schematem indeksu. Zostanie zaimportowany i zaindeksowany w indeksie usługi Azure AI Search.

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

Scenariusz 2. Konsolidacja danych wejściowych

W innym przykładzie załóżmy, że na różnych etapach przetwarzania potoku wyodrębniono tytuł książki i tytuły rozdziałów na różnych stronach książki. Teraz można utworzyć jedną strukturę składającą się z tych różnych danych wyjściowych.

Definicja umiejętności kształtowania dla tego scenariusza może wyglądać podobnie do następującego przykładu:

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

Dane wyjściowe umiejętności

W tym przypadku kształtator spłaszcza wszystkie tytuły rozdziałów, aby utworzyć jedną tablicę.

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

Scenariusz 3: konsolidacja danych wejściowych z kontekstów zagnieżdżonych

Wyobraź sobie, że masz tytuły rozdziałów i numery rozdziałów książki oraz uruchamiasz rozpoznawanie jednostek i kluczowe frazy w treści, a teraz musisz agregować wyniki z różnych umiejętności w jeden kształt z nazwą rozdziału, jednostkami i kluczowymi frazami.

W tym przykładzie dodano opcjonalną sourceContext właściwość do danych wejściowych "chapterTitles". Właściwości source i sourceContext wzajemnie się wykluczają. Jeśli dane wejściowe są w kontekście umiejętności, możesz użyć polecenia source. Jeśli dane wejściowe są w innym kontekście niż kontekst umiejętności, użyj polecenia sourceContext. Wymaga sourceContext to zdefiniowania zagnieżdżonych danych wejściowych, gdzie każde dane wejściowe ma element source identyfikujący określony element używany do wypełnienia nazwanego węzła.

Definicja umiejętności kształtowania dla tego scenariusza może wyglądać podobnie do następującego przykładu:

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

Dane wyjściowe umiejętności

W tym przypadku narzędzie Shaper tworzy typ złożony. Ta struktura istnieje w pamięci. Jeśli chcesz zapisać go w magazynie wiedzy, należy utworzyć projekcję w zestawie umiejętności, który definiuje charakterystykę magazynu.

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

Zobacz też