Strukturování dat pro projekci do úložiště znalostí

Ve službě Azure AI Search popisuje krok v pracovním postupu úložiště znalostí, který vytvoří reprezentaci obsahu, který chcete projektovat do tabulek, objektů a souborů ve službě Azure Storage.

Při provádění dovedností se výstupy zapisují do stromu rozšiřování v hierarchii uzlů a zatímco můžete chtít zobrazit a využívat strom rozšiřování v celém rozsahu, je pravděpodobnější, že budete chtít jemněji odstupňovat a vytvořit podmnožinu uzlů pro různé scénáře, jako je umístění uzlů souvisejících s přeloženým textem nebo extrahovanými entitami v konkrétních tabulkách.

Samotný strom rozšiřování neobsahuje logiku, která by informovala, jak je jeho obsah reprezentován v úložišti znalostí. Obrazce dat vyplňují tuto mezeru tím, že poskytují schéma toho, co jde do každé tabulky, objektu a projekce souboru. Obrazec dat si můžete představit jako vlastní definici nebo zobrazení obohacených dat. Můžete vytvořit tolik obrazců, kolik potřebujete, a pak je přiřadit k projekcím v definici úložiště znalostí.

Přístupy k vytváření obrazců

Obohacovaný obsah můžete tvarovat dvěma způsoby, jak ho promítnout do úložiště znalostí:

  • Pomocí dovednosti Shaper můžete vytvářet uzly ve stromu rozšiřování, které se používají výslovně pro projekci. Většina dovedností vytváří nový obsah. Naproti tomu dovednost Shaper pracuje s existujícími uzly, obvykle ke sloučení více uzlů do jednoho komplexního objektu. To je užitečné pro tabulky, ve kterých chcete, aby byl výstup více uzlů fyzicky vyjádřený jako sloupce v tabulce.

  • Použijte vložený obrazec v samotné definici projekce.

Pomocí dovednosti Shaper externalizuje obrazec, aby ho bylo možné použít více projekcemi nebo dokonce jinými dovednostmi. Zajišťuje také, že všechny mutace stromu rozšiřování jsou obsaženy v rámci dovednosti a že výstup je objekt, který lze znovu použít. Naproti tomu vložené tvarování umožňuje vytvořit obrazec, který potřebujete, ale je anonymní objekt a je k dispozici pouze pro projekci, pro kterou je definován.

Přístupy je možné používat společně nebo samostatně. Tento článek ukazuje obojí: dovednost Shaper pro projekce tabulek a vložené tvarování pomocí projekce tabulky klíčových frází.

Použití dovednosti shaperu

Dovednosti shaperu jsou obvykle umístěny na konci sady dovedností a vytvářejí zobrazení dat, která chcete předat projekci. Tento příklad vytvoří obrazec s názvem "tableprojection", který obsahuje následující uzly: "reviews_text", "reviews_title", "AzureSearch_DocumentKey" a skóre mínění a klíčové fráze ze stránkovaných recenzí.

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

Vlastnost SourceContext

V rámci dovednosti Shaper může vstup obsahovat sourceContext prvek. Stejnou vlastnost lze použít také ve vložených obrazcích v projekcích.

sourceContext slouží k vytváření víceúrovňových vnořených objektů v kanálu rozšiřování. Pokud je vstup v jiném kontextu než kontext dovednosti, použijte sourceContext. SourceContext vyžaduje, abyste definovali vnořený vstup s konkrétním prvkem, který je adresován jako zdroj.

V předchozím příkladu byla analýza mínění a extrakce klíčových frází provedena u textu, který byl rozdělen na stránky pro efektivnější analýzu. Za předpokladu, že chcete, aby se skóre a fráze promítly do tabulky, budete teď muset nastavit kontext na vnořený vstup, který poskytuje skóre a frázi.

Promítání obrazce do více tabulek

tableprojection S uzlem definovaným outputs v části výše můžete části tableprojection uzlu rozdělit do jednotlivých souvisejících tabulek:

"projections": [
    {
        "tables": [
            {
                "tableName": "hotelReviewsDocument",
                "generatedKeyName": "Documentid",
                "source": "/document/tableprojection"
            },
            {
                "tableName": "hotelReviewsPages",
                "generatedKeyName": "Pagesid",
                "source": "/document/tableprojection/pages/*"
            },
            {
                "tableName": "hotelReviewsKeyPhrases",
                "generatedKeyName": "KeyPhrasesid",
                "source": "/document/tableprojection/pages/*/keyphrase/*"
            }
        ]
    }
]

Vložený obrazec pro projekce tabulky

Vložené tvarování je schopnost vytvářet nové obrazce v samotné definici projekce. Vložené tvarování má tyto vlastnosti:

  • Obrazec lze použít pouze projekcí, která ho obsahuje.
  • Obrazec může být stejný jako dovednost Shaper.

Vložený obrazec je vytvořen pomocí sourceContext a inputs.

Vlastnost Popis
sourceContext Nastaví kořen projekce.
Vstupy Každý vstup je sloupec v tabulce. Název je název sloupce. Zdroj je uzel rozšiřování, který poskytuje hodnotu.

Pokud chcete promítnout stejná data jako v předchozím příkladu, bude možnost vložené projekce vypadat takto:

"projections": [
    {
        "tables": [
            {
                "tableName": "hotelReviewsInlineDocument",
                "generatedKeyName": "Documentid",
                "sourceContext": "/document",     
                "inputs": [
                    {
                        "name": "reviews_text",
                        "source": "/document/reviews_text"
                    },
                    {
                        "name": "reviews_title",
                        "source": "/document/reviews_title"
                    },
                    {
                        "name": "AzureSearch_DocumentKey",
                        "source": "/document/AzureSearch_DocumentKey"
                    }                             
                ]
            },
            {
                "tableName": "hotelReviewsInlinePages",
                "generatedKeyName": "Pagesid",
                "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/*"
                    }
                ]
            },
            {
                "tableName": "hotelReviewsInlineKeyPhrases",
                "generatedKeyName": "KeyPhraseId",
                "sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
                "inputs": [
                    {
                        "name": "Keyphrases",
                        "source": "/document/reviews_text/pages/*/Keyphrases/*"
                    }
                ]
            }
        ]
    }
]

Jedním z pozorování obou přístupů je způsob, jakým se hodnoty "Keyphrases" promítají pomocí "sourceContext". Uzel Klíčové fráze, který obsahuje kolekci řetězců, je sám podřízeným textem stránky. Vzhledem k tomu, že projekce vyžadují objekt JSON a stránka je primitivní (řetězec), použije se "sourceContext" k zabalení klíčové fráze do objektu s pojmenovanou vlastností. Tato technika umožňuje nezávisle projektovat i primitivy.

Vložený obrazec pro projekce objektů

Nový obrazec můžete vygenerovat pomocí dovednosti Shaper nebo použít vložené tvarování projekce objektu. I když příklad tabulek demonstroval přístup k vytvoření obrazce a řezů, tento příklad ukazuje použití vloženého tvarování.

Vložené tvarování je schopnost vytvořit nový obrazec v definici vstupů do projekce. Vložené tvarování vytvoří anonymní objekt, který je identický s tím, co by dovednost Shaper vytvořil (v tomto případě projectionShape). Vložené tvarování je užitečné, pokud definujete obrazec, který neplánujete opakovaně používat.

Vlastnost projekce je pole. Tento příklad přidá do pole novou instanci projekce, kde definice knowledgeStore obsahuje vložené projekce. Při použití vložených projekcí můžete vynechat dovednost Shaper.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
            {
            "tables": [ ],
            "objects": [
                {
                    "storageContainer": "sampleobject",
                    "source": null,
                    "generatedKeyName": "myobject",
                    "sourceContext": "/document",
                    "inputs": [
                        {
                            "name": "metadata_storage_name",
                            "source": "/document/metadata_storage_name"
                        },
                        {
                            "name": "metadata_storage_path",
                            "source": "/document/metadata_storage_path"
                        },
                        {
                            "name": "content",
                            "source": "/document/content"
                        },
                        {
                            "name": "keyPhrases",
                            "source": "/document/merged_content/keyphrases/*"
                        },
                        {
                            "name": "entities",
                            "source": "/document/merged_content/entities/*/name"
                        },
                        {
                            "name": "ocrText",
                            "source": "/document/normalized_images/*/text"
                        },
                        {
                            "name": "ocrLayoutText",
                            "source": "/document/normalized_images/*/layoutText"
                        }
                    ]

                }
            ],
            "files": []
        }
    ]
}

Další kroky

Tento článek popisuje koncepty a principy obrazců projekce. V dalším kroku se dozvíte, jak se používají ve vzorech pro projekce tabulek, objektů a souborů.