"Projekce" ve službě Azure AI Search ve znalostním úložišti

Projekce definují fyzické tabulky, objekty a soubory v úložišti znalostí, které přijímají obsah z kanálu rozšiřování služby Azure AI Search. Pokud vytváříte úložiště znalostí, většinu práce představuje právě definování a tvarování projekcí.

Tento článek představuje koncepty a pracovní postup projekce, abyste měli před zahájením psaní kódu nějaké zkušenosti.

Projekce se definují v sadách dovedností Azure AI Search, ale konečným výsledkem jsou projekce tabulek, objektů a souborů obrázků ve službě Azure Storage.

Projections expressed in Azure Storage

Typy projekcí a využití

Úložiště znalostí je logická konstrukce, která se fyzicky vyjadřuje jako volně vyjádřená kolekce tabulek, objektů JSON nebo binárních souborů obrázků ve službě Azure Storage.

Projekce Úložiště Využití
Tabulky Azure Table Storage Používá se pro data, která jsou nejlépe reprezentovaná jako řádky a sloupce, nebo kdykoli potřebujete podrobnou reprezentaci dat (například jako datové rámce). Projekce tabulek umožňují definovat schematizovaný obrazec pomocí dovednosti Shaper nebo použít vložené tvarování k určení sloupců a řádků. Obsah můžete uspořádat do více tabulek na základě známých principů normalizace. Tabulky, které jsou ve stejné skupině, jsou automaticky související.
Objekty Azure Blob Storage Používá se, když potřebujete úplnou reprezentaci dat JSON a rozšiřování v jednom dokumentu JSON. Stejně jako u projekcí tabulek je možné projektovat jako objekty pouze platné objekty JSON a tvarování vám to pomůže.
Soubory Azure Blob Storage Používá se, když potřebujete uložit normalizované soubory binárních obrázků.

Definice projekce

Projekce se zadají ve vlastnosti knowledgeStore sady dovedností. Definice projekce se používají při vyvolání indexeru k vytváření a načítání objektů ve službě Azure Storage s obohaceným obsahem. Pokud tyto koncepty neznáte, začněte rozšiřováním AI pro úvod.

Následující příklad znázorňuje umístění projekcí v rámci knowledgeStore a základní konstrukce. Název, typ a zdroj obsahu tvoří definici projekce.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [
          { "tableName": "ks-museums-main", "generatedKeyName": "ID", "source": "/document/tableprojection" },
          { "tableName": "ks-museumEntities", "generatedKeyName": "ID","source": "/document/tableprojection/Entities/*" }
        ],
        "objects": [
          { "storageContainer": "ks-museums", "generatedKeyName": "ID", "source": "/document/objectprojection" }
        ],
        "files": [ ]
      }
    ]

Skupiny projekce

Projekce jsou pole složitých kolekcí, což znamená, že můžete zadat více sad jednotlivých typů. Běžně se používá jenom jedna skupina projekce, ale pokud požadavky na úložiště zahrnují podporu různých nástrojů a scénářů, můžete použít více. Můžete například použít jednu skupinu pro návrh a ladění sady dovedností, zatímco druhá sada shromažďuje výstup používaný pro online aplikaci a třetí pro úlohy datových věd.

Stejný výstup sady dovedností se používá k naplnění všech skupin v projekcích. Následující příklad ukazuje dva.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
        {
            "tables": [],
            "objects": [],
            "files": []
        }, 
        {
            "tables": [],
            "objects": [],
            "files": []
        }
    ]
}

Projekční skupiny mají následující klíčové charakteristiky vzájemné exkluzivity a související vlastnosti.

Princip Popis
Vzájemná exkluze Každá skupina je plně izolovaná od ostatních skupin, aby podporovala různé scénáře formování dat. Pokud například testujete různé struktury a kombinace tabulek, umístili byste každou sadu do jiné skupiny projekce pro testování AB. Každá skupina získává data ze stejného zdroje (stromu rozšiřování), ale je plně izolovaná od kombinace souboru table-object-file všech skupin partnerských projekcí.
Související Ve skupině projekcí souvisí obsah tabulek, objektů a souborů. Úložiště znalostí používá vygenerované klíče jako referenční body společného nadřazeného uzlu. Představte si například scénář, ve kterém máte dokument obsahující obrázky a text. Text můžete promítnout do tabulek a obrázků do binárních souborů a tabulky i objekty mají sloupec nebo vlastnost obsahující adresu URL souboru.

Projekce "zdroj"

Zdrojový parametr je třetí komponentou definice projekce. Vzhledem k tomu, že projekce ukládají data z kanálu rozšiřování AI, je zdrojem projekce vždy výstup dovednosti. Výstupem může být jedno pole (například pole přeloženého textu), ale často se jedná o odkaz na datový obrazec.

Obrazce dat pocházejí z vaší sady dovedností. Mezi všechny předdefinované dovednosti poskytované ve službě Azure AI Search existuje dovednost nástroje označovaná jako dovednost Shaper, která se používá k vytváření obrazců dat. Můžete zahrnout dovednosti Shaperu (tolik, kolik potřebujete) pro podporu projekcí ve znalostním úložišti.

Obrazce se často používají s projekcemi tabulky, kde obrazec nejen určuje, které řádky se do tabulky nacházejí, ale také sloupce, které jsou vytvořeny (obrazec můžete předat také do projekce objektu).

Obrazce můžou být složité a je mimo rozsah, kde je zde probereme podrobněji, ale následující příklad stručně znázorňuje základní obrazec. Výstup dovednosti Shaper je určen jako zdroj projekce tabulky. V samotné projekci tabulky budou sloupce pro metadata-storage_path, "reviews_text", "reviews_title" atd., jak je uvedeno v obrazci.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "ShaperForTables",
    "description": null,
    "context": "/document",
    "inputs": [
        {
            "name": "metadata_storage_path",
            "source": "/document/metadata_storage_path",
            "sourceContext": null,
            "inputs": []
        },
        {
          "name": "reviews_text",
          "source": "/document/reviews_text"
        }, 
        {
          "name": "reviews_title",
          "source": "/document/reviews_title"
        },
        {
          "name": "reviews_username",
          "source": "/document/reviews_username"
        },
    ],
    "outputs": [
      {
        "name": "output",
        "targetName": "mytableprojection"
      }
    ]
}

Životní cyklus projekce

Projekce mají životní cyklus, který je svázaný se zdrojovými daty ve zdroji dat. Vzhledem k tomu, že se zdrojová data aktualizují a přeindexují, projekce se aktualizují s výsledky rozšiřování, což zajistí, že vaše projekce budou nakonec konzistentní s daty ve zdroji dat. Projekce jsou ale také nezávisle uložené ve službě Azure Storage. Při odstranění indexeru nebo samotné vyhledávací služby se neodstraní.

Využívání v aplikacích

Po spuštění indexeru se připojte k projekcím a spotřebujte data v jiných aplikacích a úlohách.

  • Pomocí webu Azure Portal ověřte vytváření objektů a obsah ve službě Azure Storage.

  • Power BI můžete použít ke zkoumání dat. Tento nástroj funguje nejlépe, když jsou data ve službě Azure Table Storage. V Power BI můžete pracovat s daty do nových tabulek, které se snadněji dotazují a analyzují.

  • Použijte rozšířená data v kontejneru objektů blob v kanálu datové vědy. Můžete například načíst data z objektů blob do datového rámce Pandas.

  • A konečně, pokud potřebujete exportovat data z úložiště znalostí, azure Data Factory obsahuje konektory pro export dat a jejich umístění do databáze podle vašeho výběru.

Kontrolní seznam pro začátek

Vzpomeňte si, že projekce jsou výhradní pro úložiště znalostí a nepoužívají se ke strukturování indexu vyhledávání.

  1. V Azure Storage získejte připojovací řetězec z přístupových klíčů a ověřte, že je účet StorageV2 (pro obecné účely V2).

  2. Ve službě Azure Storage se seznamte s existujícím obsahem v kontejnerech a tabulkách, abyste zvolili nekonfliktní názvy pro projekce. Úložiště znalostí je volná kolekce tabulek a kontejnerů. Zvažte přijetí konvence vytváření názvů, abyste mohli sledovat související objekty.

  3. Ve službě Azure AI Search povolte ukládání do mezipaměti rozšiřování (Preview) v indexeru a pak spusťte indexer , který spustí sadu dovedností a naplní mezipaměť. Tato funkce je ve verzi Preview, proto nezapomeňte v požadavku indexeru použít rozhraní REST API verze Preview (api-version=2020-06-30-preview nebo novější). Po naplnění mezipaměti můžete upravit definice projekce v úložišti znalostí zdarma (pokud se samotné dovednosti nezmění).

  4. Ve vašem kódu jsou všechny projekce definovány výhradně v sadě dovedností. Neexistují žádné vlastnosti indexeru (například mapování polí nebo mapování výstupních polí), které se vztahují na projekce. V definici sady dovedností se zaměříte na dvě oblasti: vlastnost knowledgeStore a pole dovedností.

    1. V části knowledgeStore zadejte tabulku, objekt, projekce souborů v oddílu projections . Typ objektu, název objektu a množství (podle počtu definovaných projekcí) jsou určeny v této části.

    2. Z pole dovedností určete, na které výstupy dovedností se mají odkazovat v source každé projekci. Všechny projekce mají zdroj. Zdrojem může být výstup upstreamové dovednosti, ale často se jedná o výstup dovednosti Shaper. Složení projekce se určuje pomocí obrazců.

  5. Pokud přidáváte projekce do existující sady dovedností, aktualizujte sadu dovedností a spusťte indexer.

  6. Zkontrolujte výsledky ve službě Azure Storage. Při dalších spuštěních se vyhněte kolizím názvů odstraněním objektů ve službě Azure Storage nebo změnou názvů projektů v sadě dovedností.

  7. Pokud používáte projekce tabulek , zkontrolujte principy datového modelu služby Table Service a cíle škálovatelnosti a výkonu pro Table Storage , abyste měli jistotu, že vaše požadavky na data spadají do zdokumentovaných limitů služby Table Storage.

Další kroky

Projděte si syntaxi a příklady pro každý typ projekce.