Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Note
Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.
Note
Úložiště znalostí jsou sekundární úložiště, které existuje ve službě Azure Storage a obsahuje výstupy sad dovedností Azure AI Vyhledávač. Jsou oddělené od zdrojů znalostí a znalostních bází, které se používají při agenturním načítání.
Projekce jsou součástí definice úložiště znalostí , která určuje způsob ukládání rozšířeného obsahu AI ve službě Azure Storage. Projekce určují typ, množství a složení datových struktur obsahujících váš obsah.
V tomto článku se seznámíte se syntaxí pro každý typ projekce:
Vzpomeňte si, že projekce jsou definovány ve knowledgeStore vlastnosti sady dovedností.
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [ ],
"objects": [ ],
"files": [ ]
}
]
}
Pokud před zahájením práce potřebujete další pozadí, projděte si tento seznam tipů a pracovních postupů.
Tip
Při vývoji projekcí povolte ukládání do mezipaměti rozšiřování (Preview), abyste při úpravě definic projekce mohli znovu použít existující rozšiřování. Ukládání do mezipaměti je funkce předběžné verze, proto nezapomeňte použít rozhraní REST API předběžné verze v požadavku indexeru. Bez ukládání do mezipaměti budou jednoduché úpravy projekce vést k úplnému opětovnému zpracování rozšířeného obsahu. Díky ukládání obohacení do mezipaměti můžete iterovat přes projekce, aniž by vznikaly poplatky za zpracování dovedností.
Requirements
Všechny projekce mají vlastnosti zdroje a cíle. Zdroj je vždy interní obsah ze stromu rozšiřování vytvořeného během provádění sady dovedností. Destinace je název a typ externího objektu, který byl vytvořen a uložen ve službě Azure Storage.
S výjimkou projekcí souborů, které přijímají pouze binární obrázky, musí být zdrojem:
- Platný kód JSON
- Cesta k uzlu ve stromu rozšiřování (například
"source": "/document/objectprojection")
I když se uzel může přeložit na jedno datové pole, běžnější podobou je odkaz na komplexní strukturu. Složité obrazce se vytvářejí metodikou tvarování, buď dovednost Shaper, nebo definice vloženého tvarování, ale obvykle dovednost Shaper. Pole nebo prvky obrazce určují pole v kontejnerech a tabulkách.
Upřednostňují se dovednosti shaperu, protože vypíše JSON, zatímco většina dovedností sama nevypíše platný JSON. V mnoha případech lze stejný datový obrazec vytvořený dovedností Shaper použít stejně jako projekce tabulek i objektů.
Vzhledem k požadavkům na vstup zdroje se znalost tvarování dat stává praktickým požadavkem pro definici projekce, zejména pokud pracujete s tabulkami.
Definování projekce tabulky
Projekce tabulek se doporučují pro scénáře, které vyžadují zkoumání dat, jako je analýza pomocí Power BI nebo úloh, které pracují s datovými rámci. Sekce s tabulkami v poli projekcí je seznam tabulek, které chcete zobrazit.
Chcete-li definovat projekci tabulky, použijte tables pole ve vlastnosti projekce. Projekce tabulky má tři požadované vlastnosti:
| Property | Description |
|---|---|
| tableName | Určuje název nové tabulky vytvořené v Azure Table Storage. |
| generatedKeyName | Název sloupce pro klíč, který jednoznačně identifikuje každý řádek. Hodnota je vygenerována systémem. Pokud tuto vlastnost vynecháte, vytvoří se automaticky sloupec, který jako konvenci pojmenování použije název tabulky a klíč. |
| odeslat k provedení | Cesta k uzlu ve stromu obohacování Uzel by měl být odkazem na složitý obrazec, který určuje sloupce vytvořené v tabulce. |
V projekcích tabulky je "zdroj" obvykle výstupem dovednosti Shaper, která definuje tvar tabulky. Tabulky mají řádky a sloupce a tvarování je mechanismus, podle kterého jsou zadané řádky a sloupce. Můžete použít dovednost Shaper nebo vložené obrazce. Dovednost Shaper vytváří platný kód JSON, ale zdrojem může být výstup z jakékoli dovednosti, pokud je platný JSON.
Note
Projekce tabulek podléhají omezením úložiště uloženým službou Azure Storage. Velikost entity nesmí překročit 1 MB a jedna vlastnost nesmí být větší než 64 kB. Díky těmto omezením jsou tabulky vhodným řešením pro ukládání velkého počtu malých entit.
Příklad jedné tabulky
Schéma tabulky je částečně určeno projekcí (název tabulky a klíč) a také zdrojem, který poskytuje tvar tabulky (sloupců). Tento příklad ukazuje jenom jednu tabulku, abyste se mohli zaměřit na podrobnosti definice.
"projections" : [
{
"tables": [
{ "tableName": "Hotels", "generatedKeyName": "HotelId", "source": "/document/tableprojection" }
]
}
]
Sloupce jsou odvozeny ze zdroje. Následující datový obrazec obsahující HotelId, HotelName, Category a Description způsobí vytvoření těchto sloupců v tabulce.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#3",
"description": null,
"context": "/document",
"inputs": [
{
"name": "HotelId",
"source": "/document/HotelId"
},
{
"name": "HotelName",
"source": "/document/HotelName"
},
{
"name": "Category",
"source": "/document/Category"
},
{
"name": "Description",
"source": "/document/Description"
},
],
"outputs": [
{
"name": "output",
"targetName": "tableprojection"
}
]
}
Příklad více tabulek (slicing)
Běžným vzorem pro projekce tabulek je mít více souvisejících tabulek, kde jsou vytvořeny sloupce partitionKey a rowKey generované systémem, které podporují relace mezi tabulkami pro všechny tabulky ve stejné skupině projekcí.
Vytvoření více tabulek může být užitečné, pokud chcete mít kontrolu nad tím, jak se související data agregují. Pokud má obohacený obsah nesouvisející nebo nezávislé komponenty, například klíčová slova extrahovaná z dokumentu nemusí souviset s entitami rozpoznanými ve stejném dokumentu, můžete tato pole rozdělit do sousedních tabulek.
Při promítání do více tabulek se celý obrazec promítá do každé tabulky, pokud podřízený uzel není zdrojem jiné tabulky ve stejné skupině. Přidání projekce s cestou zdroje, který je potomkem existující projekce, vede k vyjmutí podřízeného uzlu z nadřazeného a jeho promítnutí do nové, ale spřízněné tabulky. Tato technika umožňuje definovat jeden uzel v dovednostech Shaper, které mohou být zdrojem pro všechny vaše projekce.
Vzor pro více tabulek se skládá z:
- Jedna tabulka jako nadřazená nebo hlavní tabulka
- Ostatní tabulky obsahující části obohaceného obsahu
Předpokládejme například, že dovednost Shaper vypíše "EnrichedShape", která obsahuje informace o hotelu a obohacený obsah, jako jsou klíčové fráze, místa a organizace. Hlavní tabulka by obsahovala pole, která popisují hotel (ID, jméno, popis, adresa, kategorie). Klíčová fráze by dostaly sloupec pro klíčové fráze. Entity získají sloupce entit.
"projections" : [
{
"tables": [
{ "tableName": "MainTable", "generatedKeyName": "HotelId", "source": "/document/EnrichedShape" },
{ "tableName": "KeyPhrases", "generatedKeyName": "KeyPhraseId", "source": "/document/EnrichedShape/*/KeyPhrases/*" },
{ "tableName": "Entities", "generatedKeyName": "EntityId", "source": "/document/EnrichedShape/*/Entities/*" }
]
}
]
Vztahy názvů
Tyto vlastnosti generatedKeyName a referenceKeyName se používají pro propojení dat mezi tabulkami nebo dokonce napříč typy projekce. Každý řádek v podřízené tabulce má vlastnost, která odkazuje zpět na nadřazenou tabulku. Název sloupce nebo vlastnosti v podřízeném objektu je referenceKeyName z nadřazeného objektu.
referenceKeyName Pokud není poskytnuto, služba se nastaví na generatedKeyName z rodičovské úrovně.
Power BI využívá tyto vygenerované klíče ke zjišťování relací v tabulkách. Pokud chcete, aby měl sloupec v podřízené tabulce jiný název, nastavte vlastnost referenceKeyName v nadřazené tabulce. Jedním z příkladů by bylo nastavit generatedKeyName jako ID v tabulce tblDocument a referenceKeyName jako DocumentID. Výsledkem by byl sloupec v tabulkách tblEntities a tblKeyPhrases obsahující ID dokumentu s názvem DocumentID.
Definování projekce objektu
Projekce objektů představují reprezentaci stromu rozšiřování JSON, který lze získat z libovolného uzlu. Ve srovnání s projekcemi tabulek jsou projekce objektů jednodušší definovat a používají se při promítání celých dokumentů. Projekce objektů jsou omezené na jednu projekci v kontejneru a nelze je rozdělit.
Chcete-li definovat projekci objektu, použijte objects pole ve vlastnosti projekce. Projekce objektu má tři požadované vlastnosti:
| Property | Description |
|---|---|
| storageContainer | Určuje název nového kontejneru vytvořeného ve službě Azure Storage. |
| generatedKeyName | Název sloupce pro klíč, který jednoznačně identifikuje každý řádek. Hodnota je vygenerována systémem. Pokud tuto vlastnost vynecháte, vytvoří se automaticky sloupec, který jako konvenci pojmenování použije název tabulky a klíč. |
| odeslat k provedení | Cesta k uzlu ve stromu rozšiřování, který je kořenem projekce. Uzel je obvykle odkazem na složitou datovou strukturu, která určuje strukturu blob. |
Následující příklad projektuje jednotlivé hotelové dokumenty, přičemž každý hotelový dokument se nachází v samostatném objektu blob, do kontejneru pojmenovaného hotels.
"knowledgeStore": {
"storageConnectionString": "an Azure storage connection string",
"projections" : [
{
"tables": [ ]
},
{
"objects": [
{
"storageContainer": "hotels",
"source": "/document/objectprojection",
}
]
},
{
"files": [ ]
}
]
}
Zdrojem je výstup dovednosti Shaper s názvem "objectprojection". Každý objekt blob má reprezentaci JSON každého vstupu pole.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#3",
"description": null,
"context": "/document",
"inputs": [
{
"name": "HotelId",
"source": "/document/HotelId"
},
{
"name": "HotelName",
"source": "/document/HotelName"
},
{
"name": "Category",
"source": "/document/Category"
},
{
"name": "keyPhrases",
"source": "/document/HotelId/keyphrases/*"
},
],
"outputs": [
{
"name": "output",
"targetName": "objectprojection"
}
]
}
Definování projekce souboru
Projekce souborů jsou vždy binární, normalizované obrázky, kde normalizace označuje potenciální změnu velikosti a otočení pro použití při provádění sady dovedností. Projekce souborů, podobně jako projekce objektů, se vytvářejí jako objekty blob ve službě Azure Storage a obsahují binární data (na rozdíl od JSON).
Chcete-li definovat projekci souboru, použijte files pole ve vlastnosti projekce. Projekce souborů má tři požadované vlastnosti:
| Property | Description |
|---|---|
| storageContainer | Určuje název nového kontejneru vytvořeného ve službě Azure Storage. |
| generatedKeyName | Název sloupce pro klíč, který jednoznačně identifikuje každý řádek. Hodnota je vygenerována systémem. Pokud tuto vlastnost vynecháte, vytvoří se automaticky sloupec, který jako konvenci pojmenování použije název tabulky a klíč. |
| odeslat k provedení | Cesta k uzlu ve stromu rozšiřování, který je kořenem projekce. Pro soubory obrázků je zdroj vždy /document/normalized_images/*. Projekce souborů fungují pouze s kolekcí normalized_images . Indexery ani sada schopností neprojdou původním nenormalizovaným obrázkem. |
Cílem je vždy kontejner typu blob s předponou složky zakódovanou ve formátu base64 z ID dokumentu. Pokud existuje více obrázků, umístí se dohromady do stejné složky. Projekce souborů nemůžou sdílet stejný kontejner jako projekce objektů a je potřeba je promítnout do jiného kontejneru.
Následující příklad projektuje všechny normalizované obrázky extrahované z uzlu dokumentu obohaceného dokumentu do kontejneru nazývaného myImages.
"projections": [
{
"tables": [ ],
"objects": [ ],
"files": [
{
"storageContainer": "myImages",
"source": "/document/normalized_images/*"
}
]
}
]
Testování projekcí
Projekce můžete zpracovat pomocí následujících kroků:
Nastavte vlastnost úložiště znalostí
storageConnectionStringna platný připojovací řetězec k účtu úložiště pro obecné účely verze 2.Aktualizujte sadu dovedností tím, že vydáte požadavek PUT obsahující definici projekce v těle této sady dovedností.
Spuštěním indexeru spusťte sadu dovedností.
Monitorujte provádění indexeru, abyste zkontrolovali průběh a zachytili případné chyby.
Pomocí webu Azure Portal ověřte vytváření objektů ve službě Azure Storage.
Pokud promítáte tabulky, naimportujte je do Power BI pro manipulaci s tabulkami a vizualizaci. Power BI ve většině případů automaticky identifikuje relace mezi tabulkami.
Běžné problémy
Vynechání některého z následujících kroků může vést k neočekávaným výsledkům. Pokud výstup nevypadá správně, zkontrolujte následující podmínky.
Rozšiřování řetězců není tvarováno do platného formátu JSON. Když jsou řetězce rozšířeny, například
merged_contentobohacené o klíčové fráze, rozšířená vlastnost je reprezentována jako podřízený prvekmerged_contentv rámci stromu rozšiřování. Výchozí reprezentace není ve správném formátu JSON. V době projekce nezapomeňte transformovat rozšiřování na platný objekt JSON s názvem a hodnotou. Tento problém můžete vyřešit pomocí dovednosti Shaperu nebo definováním vložených obrazců.Vynechání
/*na konci zdrojové cesty Pokud je/document/projectionShape/keyPhraseszdrojem projekce, pole klíčových frází se promítá jako jeden objekt nebo řádek. Místo toho nastavte zdrojovou cestu na/document/projectionShape/keyPhrases/*, aby se pro každou z klíčových frází vytvořil jeden řádek nebo objekt.Chyby syntaxe cest Selektory cest rozlišují malá a velká písmena a můžou vést k upozorněním na chybějící vstup, pokud nepoužijete přesnou velikost písmen pro selektor.
Další kroky
Další krok vás provede formováním a projekcí výstupu z bohaté sady dovedností. Pokud je vaše sada dovedností složitá, následující článek obsahuje příklady obrazců i projekcí.