Koncepty sady dovedností ve službě Azure AI Search

Tento článek je určený pro vývojáře, kteří potřebují hlubší porozumění konceptům a složení sady dovedností a předpokládá znalost základních konceptů rozšiřování AI.

Sada dovedností je opakovaně použitelný prostředek ve službě Azure AI Search, který je připojený k indexeru. Obsahuje jednu nebo více dovedností, které volají integrovanou AI nebo externí vlastní zpracování dokumentů načtených z externího zdroje dat.

Následující diagram znázorňuje základní tok dat při provádění sady dovedností.

Diagram showing skillset data flows, with focus on inputs, outputs, and mappings.

Od nástupu zpracování sady dovedností až po jeho závěr, dovednosti číst z a zapisovat do rozšířeného dokumentu. Na začátku je obohacený dokument pouze nezpracovaný obsah extrahovaný ze zdroje dat (vyjádřený jako "/document" kořenový uzel). Při každém provádění dovedností získá obohacený dokument strukturu a látku, protože dovednost zapisuje svůj výstup jako uzly v grafu.

Po dokončení provádění sady dovedností výstup rozšířeného dokumentu najde cestu k indexu prostřednictvím mapování výstupních polí. Veškerý nezpracovaný obsah, který chcete přenést beze změny ze zdroje do indexu, je definován prostřednictvím mapování polí.

Pokud chcete nakonfigurovat rozšiřování, zadáte nastavení v sadě dovedností a indexeru.

Definice sady dovedností

Sada dovedností je pole jednoho nebo více dovedností , které provádějí rozšiřování, například překlad textu nebo OCR v souboru obrázku. Dovednosti můžou být integrované dovednosti od Microsoftu nebo vlastní dovednosti pro logiku zpracování, kterou hostujete externě. Sada dovedností vytváří rozšířené dokumenty, které se buď spotřebovávají během indexování, nebo se promítají do úložiště znalostí.

Dovednosti mají kontext, vstupy a výstupy:

Diagram showing which properties of skillsets establish the data path.

  • Kontext odkazuje na rozsah operace, který může být jednou pro každý dokument nebo jednou pro každou položku v kolekci.

  • Vstupy pocházejí z uzlů v rozšířeném dokumentu, kde "zdroj" a "název" identifikují daný uzel.

  • Výstup se odešle zpět do rozšířeného dokumentu jako nový uzel. Hodnoty jsou název uzlu a obsah uzlu. Pokud je název uzlu duplicitní, můžete nastavit cílový název pro nejednoznačnost.

Kontext dovedností

Každá dovednost má kontext, který může být celý dokument (/document) nebo uzel nižší ve stromu (/document/countries/*). Kontext určuje:

  • Počet, kolikrát se dovednost provede, přes jednu hodnotu (jednou za pole, na dokument) nebo pro kontextové hodnoty kolekce typů, kde se přičtou /* výsledky vyvolání dovedností, jednou pro každou instanci v kolekci.

  • Výstupní deklarace nebo kde ve stromu rozšiřování se přidají výstupy dovedností. Výstupy se vždy přidají do stromu jako podřízené položky kontextového uzlu.

  • Tvar vstupů U víceúrovňových kolekcí ovlivní nastavení kontextu nadřazené kolekce tvar vstupu pro dovednost. Pokud máte například strom rozšiřování se seznamem zemí nebo oblastí, každý z nich je obohacen seznamem států obsahujících seznam PSČ, jak nastavíte kontext, určí způsob interpretace vstupu.

    Kontext Vstup Tvar vstupu Vyvolání dovedností
    /document/countries/* /document/countries/*/states/*/zipcodes/* Seznam všech PSČ v zemi/oblasti Jednou za zemi nebo oblast
    /document/countries/*/states/* /document/countries/*/states/*/zipcodes/* Seznam PSČ ve stavu Jednou za kombinaci země/oblasti a státu

Závislosti dovedností

Dovednosti se můžou spouštět nezávisle a paralelně, nebo postupně, pokud podáváte výstup jedné dovednosti do jiné dovednosti. Následující příklad ukazuje dvě předdefinované dovednosti , které se spouštějí postupně:

  • Dovednost č. 1 je dovednost rozdělení textu, která přijímá obsah zdrojového pole "reviews_text" jako vstup a rozděluje tento obsah na "stránky" o 5 000 znacích jako výstup. Rozdělení velkého textu na menší bloky může generovat lepší výsledky pro dovednosti, jako je detekce mínění.

  • Dovednost č. 2 je dovednost detekce mínění přijímá jako vstup "stránky" a jako výstup vytvoří nové pole s názvem Mínění, které obsahuje výsledky analýzy mínění.

Všimněte si, jak se při analýze mínění používá výstup první dovednosti ("stránky"), kde "/document/reviews_text/pages/*" je kontext i vstup. Další informace o formulaci cesty naleznete v tématu Jak odkazovat na rozšiřování.

{
    "skills": [
        {
            "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
            "name": "#1",
            "description": null,
            "context": "/document/reviews_text",
            "defaultLanguageCode": "en",
            "textSplitMode": "pages",
            "maximumPageLength": 5000,
            "inputs": [
                {
                    "name": "text",
                    "source": "/document/reviews_text"
                }
            ],
            "outputs": [
                {
                    "name": "textItems",
                    "targetName": "pages"
                }
            ]
        },
        {
            "@odata.type": "#Microsoft.Skills.Text.SentimentSkill",
            "name": "#2",
            "description": null,
            "context": "/document/reviews_text/pages/*",
            "defaultLanguageCode": "en",
            "inputs": [
                {
                    "name": "text",
                    "source": "/document/reviews_text/pages/*",
                }
            ],
            "outputs": [
                {
                    "name": "sentiment",
                    "targetName": "sentiment"
                },
                {
                    "name": "confidenceScores",
                    "targetName": "confidenceScores"
                },
                {
                    "name": "sentences",
                    "targetName": "sentences"
                }
            ]
        }
      . . .
  ]
}

Strom rozšiřování

Obohacený dokument je dočasná datová struktura podobná stromu vytvořená během provádění sady dovedností, která shromažďuje všechny změny zavedené prostřednictvím dovedností. Společně jsou rozšiřování reprezentována jako hierarchie adresovatelných uzlů. Uzly také obsahují všechna neschybná pole, která se předávají doslovně z externího zdroje dat.

Obohacený dokument existuje po dobu trvání provádění sady dovedností, ale může být uložen do mezipaměti nebo odeslán do úložiště znalostí.

Na začátku je obohacený dokument jednoduše obsah extrahovaný ze zdroje dat během prolomení dokumentu, kde se text a obrázky extrahují ze zdroje a zpřístupní se pro jazyk nebo analýzu obrázků.

Počáteční obsah je metadata a kořenový uzel (document/content). Kořenový uzel je obvykle celý dokument nebo normalizovaný obrázek, který se extrahuje ze zdroje dat během prolomení dokumentu. Způsob znázornění ve stromu rozšiřování se liší pro každý typ zdroje dat. Následující tabulka ukazuje stav dokumentu, který zadává do kanálu rozšiřování pro několik podporovaných zdrojů dat:

Zdroj dat\Režim analýzy Výchozí JSON, řádky JSON a CSV
Blob Storage /document/content
/document/normalized_images/*
...
/document/{key1}
/document/{key2}
...
Azure SQL /document/{column1}
/document/{column2}
...
Azure Cosmos DB /document/{key1}
/document/{key2}
...

Při provádění dovedností se výstup přidá do stromu rozšiřování jako nové uzly. Pokud je provádění dovedností přes celý dokument, uzly se přidají na první úrovni pod kořenem.

Uzly lze použít jako vstupy pro podřízené dovednosti. Například dovednosti, které vytvářejí obsah, jako jsou přeložené řetězce, se mohou stát vstupem pro dovednosti, které rozpoznávají entity nebo extrahují klíčové fráze.

Skills read and write from enrichment tree

I když můžete vizualizovat strom rozšiřování a pracovat s ním prostřednictvím vizuálního editoru Ladicí relace, je to většinou interní struktura.

Rozšiřování je neměnné: po vytvoření není možné uzly upravovat. S tím, jak se vaše sady dovedností zkompletují, takže strom rozšiřování bude potřeba, ale ne všechny uzly ve stromu rozšiřování, aby se dostaly do indexu nebo úložiště znalostí.

Můžete selektivně zachovat jenom podmnožinu výstupů rozšiřování, abyste zachovali jenom to, co chcete použít. Mapování výstupních polí v definici indexeru určí, jaký obsah se ve vyhledávacím indexu skutečně ingestuje. Podobně pokud vytváříte úložiště znalostí, můžete výstupy mapovat na obrazce , které jsou přiřazené k projekcím.

Poznámka:

Formát stromu rozšiřování umožňuje kanálu rozšiřování připojit metadata k i primitivním datovým typům. Metadata nebudou platným objektem JSON, ale dají se v definicích projekce v úložišti znalostí promítnou do platného formátu JSON. Další informace najdete v tématu Dovednost shaperu.

Definice indexeru

Indexer má vlastnosti a parametry používané ke konfiguraci provádění indexeru. Mezi tyto vlastnosti patří mapování, která nastaví cestu k datům na pole v indexu vyhledávání.

Diagram showing which properties of indexers establish the data path to fields in an index.

Existují dvě sady mapování:

Vlastnost sourceFieldName určuje pole ve zdroji dat nebo uzel ve stromu rozšiřování. Vlastnost targetFieldName určuje vyhledávací pole v indexu, který přijímá obsah.

Příklad rozšiřování

Tento příklad vysvětluje, jak se strom rozšiřování vyvíjí prostřednictvím provádění dovedností pomocí koncepčních diagramů, pomocí sady dovedností.

Tento příklad také ukazuje:

  • Jak funguje kontext a vstupy dovedností, abyste zjistili, kolikrát se dovednost provádí
  • Jaký je tvar vstupu založený na kontextu

V tomto příkladu zdrojová pole ze souboru CSV obsahují recenze zákazníků o hotelech ("reviews_text") a hodnoceních ("reviews_rating"). Indexer přidá pole metadat z úložiště objektů blob a dovednosti přidají přeložený text, skóre mínění a detekci klíčových frází.

V příkladu hodnocení hotelů představuje "dokument" v rámci procesu rozšiřování jednu recenzi hotelu.

Tip

Pro tato data můžete vytvořit index vyhledávání a úložiště znalostí na webu Azure Portal nebo rozhraní REST API. Ladicí relace můžete také použít k přehledu o složení sady dovedností, závislostech a efektech na strom rozšiřování. Obrázky v tomto článku se natahují z ladicích relací.

Koncepčně vypadá počáteční strom rozšiřování takto:

enrichment tree after document cracking

Kořenový uzel pro všechny rozšiřování je "/document". Při práci s indexery "/document" objektů blob bude mít uzel podřízené "/document/content" uzly a "/document/normalized_images". Pokud jsou data CSV, jak je uvedeno v tomto příkladu, názvy sloupců se mapují na uzly pod "/document".

Dovednost č. 1: Dělená dovednost

Pokud se zdrojový obsah skládá z velkých bloků textu, je užitečné ho rozdělit na menší komponenty, aby byla přesnější rozpoznávání jazyka, mínění a klíčových frází. K dispozici jsou dvě zrnka: stránky a věty. Stránka se skládá z přibližně 5 000 znaků.

Dovednost rozdělení textu je obvykle první v sadě dovedností.

"@odata.type": "#Microsoft.Skills.Text.SplitSkill",
"name": "#1",
"description": null,
"context": "/document/reviews_text",
"defaultLanguageCode": "en",
"textSplitMode": "pages",
"maximumPageLength": 5000,
"inputs": [
{
    "name": "text",
    "source": "/document/reviews_text"
}
],
"outputs": [
{
    "name": "textItems",
    "targetName": "pages"
}

S kontextem "/document/reviews_text"dovednosti , rozdělená dovednost provádí jednou pro .reviews_text Výstup dovednosti je seznam, ve reviews_text kterém je blokovaný do 5 000 segmentů znaků. Výstup rozdělené dovednosti se pojmenuje pages a přidá se do stromu rozšiřování. Tato targetName funkce umožňuje přejmenovat výstup dovednosti před tím, než se přidá do stromu rozšiřování.

Strom rozšiřování má nyní nový uzel umístěný v kontextu dovednosti. Tento uzel je k dispozici pro každou dovednost, projekci nebo mapování výstupního pole.

enrichment tree after skill #1

Pro přístup ke všem rozšiřováním přidaným do uzlu dovednostmi je nutná úplná cesta pro rozšiřování. Pokud například chcete použít text z pages uzlu jako vstup do jiné dovednosti, budete ho muset zadat jako "/document/reviews_text/pages/*". Další informace o cestách naleznete v tématu Referenční rozšiřování.

Dovednost č. 2 Rozpoznávání jazyka

Dokumenty pro kontrolu hotelu zahrnují zpětnou vazbu od zákazníků vyjádřenou ve více jazycích. Dovednost rozpoznávání jazyka určuje, který jazyk se používá. Výsledek se pak předá extrakci klíčových frází a detekci mínění (nezobrazuje se), přičemž při zjišťování mínění a frází bere v úvahu jazyk.

I když je dovednost rozpoznávání jazyka třetí (dovednost č. 3) definovaná v sadě dovedností, je to další dovednost, která se má provést. Nevyžaduje žádné vstupy, takže se provádí paralelně s předchozí dovedností. Stejně jako dělená dovednost, která jí předchází, se dovednost rozpoznávání jazyka vyvolá také jednou pro každý dokument. Strom rozšiřování teď obsahuje nový uzel pro jazyk.

enrichment tree after skill #2

Dovednosti č. 3 a #4 (analýza mínění a detekce klíčových frází)

Zpětná vazba od zákazníků odráží řadu pozitivních a negativních zkušeností. Dovednost analýzy mínění analyzuje zpětnou vazbu a přiřazuje skóre v kontinuu záporných kladných čísel nebo neutrální, pokud je mínění neurčené. Paralelně s analýzou mínění identifikuje detekce klíčových frází a extrahuje slova a krátké fráze, které se zobrazují v důsledku.

Vzhledem k kontextu /document/reviews_text/pages/*analýzy mínění i klíčových frází se pro každou z položek v pages kolekci vyvolá jednou. Výstupem dovednosti bude uzel pod přidruženým prvkem stránky.

Teď byste měli být schopni se podívat na zbývající dovednosti v sadě dovedností a vizualizovat, jak strom obohacení bude dále růst s prováděním jednotlivých dovedností. Některé dovednosti, jako je dovednost sloučení a dovednost tvarovače, také vytvářejí nové uzly, ale používají pouze data z existujících uzlů a nevytvují čisté nové rozšiřování.

enrichment tree after all skills

Barvy spojnic ve stromu výše značí, že rozšiřování byly vytvořeny různými dovednostmi a uzly se budou muset řešit jednotlivě a nebudou součástí vráceného objektu při výběru nadřazeného uzlu.

Dovednost č. 5 Shaper dovednost

Pokud výstup obsahuje úložiště znalostí, přidejte dovednost Shaper jako poslední krok. Dovednost Shaper vytváří datové obrazce mimo uzly ve stromu rozšiřování. Můžete například chtít sloučit více uzlů do jednoho obrazce. Tento obrazec pak můžete promítnout jako tabulku (uzly se stanou sloupci v tabulce), předat obrazec podle názvu do projekce tabulky.

Dovednost Shaper se snadno pracuje, protože se zaměřuje na tvarování v rámci jedné dovednosti. Alternativně můžete zvolit in-line formování v rámci jednotlivých projekcí. Dovednost Shaper nepřidává ani neodčítá od stromu rozšiřování, takže není vizualizována. Místo toho si můžete představit dovednost Shaper jako prostředky, kterými přeuspořádáte strom obohacení, který už máte. Koncepčně se to podobá vytváření zobrazení z tabulek v databázi.

{
  "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
  "name": "#5",
  "description": null,
  "context": "/document",
  "inputs": [
    {
      "name": "name",
      "source": "/document/name"
    },
    {
      "name": "reviews_date",
      "source": "/document/reviews_date"
    },
    {
      "name": "reviews_rating",
      "source": "/document/reviews_rating"
    },
    {
      "name": "reviews_text",
      "source": "/document/reviews_text"
    },
    {
      "name": "reviews_title",
      "source": "/document/reviews_title"
    },
    {
      "name": "AzureSearch_DocumentKey",
      "source": "/document/AzureSearch_DocumentKey"
    },
    {
      "name": "pages",
      "sourceContext": "/document/reviews_text/pages/*",
      "inputs": [
        {
          "name": "Sentiment",
          "source": "/document/reviews_text/pages/*/Sentiment"
        },
        {
          "name": "LanguageCode",
          "source": "/document/Language"
        },
        {
          "name": "Page",
          "source": "/document/reviews_text/pages/*"
        },
        {
          "name": "keyphrase",
          "sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
          "inputs": [
            {
              "name": "Keyphrases",
              "source": "/document/reviews_text/pages/*/Keyphrases/*"
            }
          ]
        }
      ]
    }
  ],
  "outputs": [
    {
      "name": "output",
      "targetName": "tableprojection"
    }
  ]
}

Další kroky

S úvodem a příkladem za vámi zkuste vytvořit první sadu dovedností pomocí předdefinovaných dovedností.