Vytvoření sady dovedností v Azure Cognitive Search

Sada dovedností definuje operace, které extrahují a rozšiřují data, aby bylo možné je prohledávat. Sada dovedností se spustí po prolomení dokumentu, extrahování obsahu textu a obrázku ze zdrojových dokumentů a po namapování všech polí ze zdrojového dokumentu na cílová pole v indexu nebo ve znalostním obchodě.
V tomto článku se seznámíte s postupem vytvoření sady dovedností. Pro referenci tento článek používá metodu Create Skillset (REST API).
Mezi pravidla využití pro sady dovedností patří:
- Sada dovedností je prostředek nejvyšší úrovně, což znamená, že ho může vytvořit jednou a odkazovat na něj mnoho indexerů.
- Sada dovedností musí obsahovat alespoň jednu dovednost.
- Sada dovedností může opakovat dovednosti stejného typu (například více dovedností Shaper).
Vzpomeňte si, že indexery řídí provádění sady dovedností, což znamená, že před otestování sady dovedností budete také muset vytvořit indexer ,zdroj dat a vyhledávací index.
Tip
Povolte ukládání do mezipaměti pro rozšiřování, aby bylo možné znovu použít obsah, který jste už zpracují, a snížit náklady na vývoj.
Definice sady dovedností
Začněte se základní strukturou. V REST APIse sada dovedností vytváří ve formátu JSON a obsahuje následující části:
{
"name":"skillset-template",
"description":"A description makes the skillset self-documenting (comments aren't allowed in JSON itself)",
"skills":[
],
"cognitiveServices":{
"@odata.type":"#Microsoft.Azure.Search.CognitiveServicesByKey",
"description":"A Cognitive Services resource in the same region as Azure Cognitive Search",
"key":"<Your-Cognitive-Services-Multiservice-Key>"
},
"knowledgeStore":{
"storageConnectionString":"<Your-Azure-Storage-Connection-String>",
"projections":[
{
"tables":[ ],
"objects":[ ],
"files":[ ]
}
]
},
"encryptionKey":{ }
}
Za názvem a popisem má sada dovedností čtyři hlavní vlastnosti:
skillsarray, neuspořádané kolekce dovedností,pro kterou vyhledávací služba určuje pořadí provádění na základě vstupů požadovaných pro jednotlivé dovednosti. Pokud jsou dovednosti nezávislé, budou se provádět paralelně. Dovednosti mohou být využité (například rozdělení textu), transformační (na základě AI z Cognitive Services) nebo vlastní dovednosti, které poskytnete. Příklad pole dovedností je k dispozici v následující části.cognitiveServicesse používá pro fakturovatelné dovednosti, které volají rozhraní API služeb Cognitive Services. Tuto část odeberte, pokud nevyu you't using billable skills or Custom Entity Lookup (Vyhledávání vlastních entit). Pokud jste, připojte prostředek.knowledgeStore, (volitelné) určuje účet Azure Storage a nastavení pro projektování výstupu sady dovedností do tabulek, objektů blob a souborů v Azure Storage. Pokud tuto část nepotřebujete, odeberte ji, jinak zadejte úložiště znalostí.encryptionKey, (nepovinné) určuje Azure Key Vault klíče spravované zákazníkem, které se používají k šifrování citlivého obsahu v definici sady dovedností. Pokud používáte šifrování spravované zákazníkem, odeberte tuto vlastnost.
Přidání pole dovedností
V definici sady dovedností pole dovedností určuje, které dovednosti se mají provést. Následující příklad vás seznámí s jeho složením tím, že vám ukáže dvě nesouvisející předdefinované dovednosti. Všimněte si, že každá dovednost má typ, kontext, vstupy a výstupy.
"skills":[
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"context": "/document",
"categories": [ "Organization" ],
"defaultLanguageCode": "en",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "organizations",
"targetName": "orgs"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.SentimentSkill",
"context": "/document",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "score",
"targetName": "mySentiment"
}
]
}
]
Poznámka
Pomocí podmíněné dovednosti můžete vytvářet výrazy a vytvářet komplexní dovednosti pomocí smyček a větvení. Syntaxe je založená na notaci cesty ukazatele JSON s několika úpravami pro identifikaci uzlů ve stromu pro rozšiřování. Třída prochádá úroveň nižší ve stromu a funguje v kontextu jako operátor "/" "*" for-each. Syntaxi ilustruje celá řada příkladů v tomto článku.
Strukturování předdefinovaných dovedností
Každá dovednost je jedinečná z hlediska vstupních hodnot a parametrů, které používá. Dokumentace ke každé dovednosti popisuje všechny parametry a vlastnosti dané dovednosti. I když existují rozdíly, většina dovedností sdílí společnou sadu a jsou podobně vzorované. Pro ilustraci několika bodů nabízí dovednost Rozpoznávání entit příklad:
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"context": "/document",
"categories": [ "Organization" ],
"defaultLanguageCode": "en",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "organizations",
"targetName": "orgs"
}
]
}
Mezi běžné parametry patří "odata.type", "inputs" a "outputs". Další parametry, konkrétně "categories" a "defaultLanguageCode", jsou příklady parametrů, které jsou specifické pro rozpoznávání entit.
"odata.type" jednoznačně identifikuje jednotlivé dovednosti. Typ najdete v referenční dokumentaci dovedností.
"context" je uzel ve stromu rozšiřování a představuje úroveň, na které procházení operací probíhá. Tuto vlastnost mají všechny dovednosti. Pokud pole context není explicitně nastavené, výchozí kontext je
"/document". V tomto příkladu je kontext celý dokument, což znamená, že dovednost rozpoznávání entit se volá jednou pro každý dokument.Kontext také určuje, kde se ve stromu rozšiřování vytvářejí také výstupy. V tomto příkladu dovednost vrátí vlastnost s názvem zachycenou jako , která se přidá
"organizations"orgsjako podřízený uzel"/document". V podřízených dovednostech je cesta k tomuto nově vytvořenému uzlu rozšiřování"/document/orgs". Pro konkrétní dokument je hodnotou pole organizací extrahovaných z"/document/orgs"textu (například["Microsoft", "LinkedIn"]). Další informace o syntaxi cesty najdete v tématu Odkazování na poznámky v uzlu skillset."vstupy" určují původ příchozích dat a způsob jejich použití. V případě rozpoznávání entit je jedním ze vstupů , což je obsah, který se má analyzovat
"text"pro entity. Obsah pochází z uzlu"/document/content"ve stromu rozšiřování. Ve stromu rozšiřování je"/document"kořenový uzel. U dokumentů načtených pomocí indexeru Azure Blob je pole každého dokumentu standardním polemcontentvytvořeným indexerem."výstupy" představují výstup dovednosti. Každá dovednost je navržená tak, aby vysílala konkrétní druhy výstupu, na které se odkazuje podle názvu v sady dovedností. V případě rozpoznávání entit je
"organizations"jedním z výstupů, které podporuje. Dokumentace ke každé dovednosti popisuje výstupy, které může vytvořit.
Výstupy existují pouze během zpracování. Pokud chcete tento výstup zřetězit se vstupem podřízené dovednosti, odkazovat na výstup jako "/document/orgs" na . Pokud chcete odeslat výstup do pole v indexu vyhledávání, vytvořte v indexeru mapování výstupního pole. Pokud chcete odeslat výstup do úložiště znalostí, vytvořte projekci.
Výstupy z jedné dovednosti mohou být v konfliktu s výstupy z jiné dovednosti. Pokud máte více dovedností vracející stejný výstup, použijte v cestách k uzlům pro rozšiřování mnohoznačnost "targetName" názvů.
Některé situace volají odkazování na každý prvek pole samostatně. Předpokládejme například, že chcete předat každý prvek samostatně do jiné "/document/orgs" dovednosti. Pokud to chcete udělat, přidejte do cesty hvězdičku: "/document/orgs/*"
Druhá dovednost pro analýzu mínění má stejný vzor jako první enricher. Přijímá jako "/document/content" vstup a vrací skóre mínění pro každou instanci obsahu. Vzhledem k tomu, že jste pole context nenastavíte explicitně, je výstup (mySentiment) podřízený objektu "/document" .
{
"@odata.type": "#Microsoft.Skills.Text.SentimentSkill",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "score",
"targetName": "mySentiment"
}
]
}
Přidání vlastní dovednosti
Níže je příklad vlastní dovednosti. Identifikátor URI odkazuje na funkci Azure, která pak vyvolá zadaný model nebo transformaci. Další informace najdete v tématu Definování vlastního rozhraní.
I když vlastní dovednost spouští kód, který je mimo kanál, v poli dovedností je to jen další dovednost. Stejně jako integrované dovednosti má i typ, kontext, vstupy a výstupy. Také čte a zapisuje do stromu rozšiřování, stejně jako integrované dovednosti. Všimněte si, že pole context je nastavené na s hvězdičkou, což znamená, že krok rozšiřování se volá pro každou organizaci v "/document/orgs/*" části "/document/orgs" .
Výstup, v tomto případě popis společnosti, se vygeneruje pro každou identifikované organizaci. Když odkazujete na popis v podřízeném kroku (například při extrakci klíčových frází), použijete k "/document/orgs/*/companyDescription" tomu cestu .
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"description": "This skill calls an Azure function, which in turn calls custom code",
"uri": "https://indexer-e2e-webskill.azurewebsites.net/api/InvokeCode?code=foo",
"httpHeaders": {
"Ocp-Apim-Subscription-Key": "foobar"
},
"context": "/document/orgs/*",
"inputs": [
{
"name": "query",
"source": "/document/orgs/*"
}
],
"outputs": [
{
"name": "description",
"targetName": "companyDescription"
}
]
}
Odeslání výstupu do indexu
Při provádění každé dovednosti se její výstup přidá jako uzly do stromu pro rozšiřování dokumentu. V kanálu existují obohacené dokumenty jako dočasné datové struktury. Pokud chcete vytvořit trvalou datovou strukturu a získat úplný přehled o tom, co dovednost skutečně vytváří, budete muset výstup odeslat do vyhledávacího indexu nebo do úložiště znalostí.
V počátečních fázích vyhodnocování sady dovedností budete chtít s minimálním úsilím zkontrolovat předběžné výsledky. Doporučujeme index vyhledávání, protože nastavení je jednodušší. Pro výstup každé dovednosti definujte mapování výstupního pole v indexeru a pole v indexu.
Po spuštění indexeru můžete pomocí Průzkumníka služby Search vrátit dokumenty z indexu a zkontrolovat obsah jednotlivých polí, abyste zjistili, co sada dovedností zjistila nebo vytvořila.
Následující příklad ukazuje výsledky dovednosti rozpoznávání entit, která v bloku textu detekuje osoby, místa, organizace a další entity. Zobrazení výsledků v Průzkumníku služby Search vám může pomoct určit, jestli dovednost přidává do vašeho řešení hodnotu.
Tipy první sady dovedností
Sestavte reprezentativní vzorek obsahu ve službě Blob Storage nebo jiném podporovaném zdroji dat indexeru a spusťte průvodce importem dat, abyste vytvořili sada dovedností, index, indexer a objekt zdroje dat.
Průvodce automatizuje několik kroků, které mohou být poprvé náročné, včetně definování polí v indexu, definování výstupních mapování souborovaných v indexeru a projekcí v obchodě znalostí, pokud ho používáte. U některých dovedností, jako je OCR nebo analýza obrázků, průvodce přidá dovednosti v oblasti nástrojů, které slučují obrázek a textový obsah rozdělený během prolomení dokumentů.
Případně můžete importovat dovednosti Postman collections, které poskytují úplné příklady všech definic objektů požadovaných k vyhodnocení dovednosti, od sady dovedností až po index, na který se můžete dotazovat a zobrazit výsledky transformace.
Další kroky
Kontextová a vstupní zdrojová pole jsou cesty k uzlům ve stromu rozšiřování. V dalším kroku se dozvíte další informace o syntaxi pro nastavení cest k uzlům ve stromu rozšiřování.