Kształtowanie danych do projekcji w magazynie wiedzy

W usłudze Azure AI Search "kształtowanie danych" opisuje krok przepływu pracy magazynu wiedzy, który tworzy reprezentację danych zawartości, którą chcesz projektować w tabelach, obiektach i plikach w usłudze Azure Storage.

W miarę wykonywania umiejętności dane wyjściowe są zapisywane w drzewie wzbogacania w hierarchii węzłów i chociaż warto wyświetlać i wykorzystywać drzewo wzbogacania w całości, bardziej prawdopodobne jest, że potrzebujesz bardziej szczegółowego ziarna, tworząc podzestawy węzłów dla różnych scenariuszy, takich jak umieszczenie węzłów związanych z przetłumaczonym tekstem lub wyodrębnionych jednostek w określonych tabelach.

Samo drzewo wzbogacania nie zawiera logiki, która informuje o tym, jak jego zawartość jest reprezentowana w magazynie wiedzy. Kształty danych wypełniają tę lukę, udostępniając schemat elementów, które przechodzą do każdej tabeli, obiektu i projekcji plików. Kształt danych można traktować jako niestandardową definicję lub widok wzbogaconych danych. Możesz utworzyć dowolną liczbę kształtów, a następnie przypisać je do projekcji w definicji magazynu wiedzy.

Metody tworzenia kształtów

Istnieją dwa sposoby kształtowania wzbogaconej zawartości do tego, że można ją rzutować w magazyn wiedzy:

  • Umiejętność kształtowania umożliwia tworzenie węzłów w drzewie wzbogacania, które są używane wyraźnie do projekcji. Większość umiejętności tworzy nową zawartość. Z kolei umiejętność kształtowania działa z istniejącymi węzłami, zwykle w celu skonsolidowania wielu węzłów w jeden złożony obiekt. Jest to przydatne w przypadku tabel, w których dane wyjściowe wielu węzłów mają być fizycznie wyrażone jako kolumny w tabeli.

  • Użyj wbudowanego kształtu w samej definicji projekcji.

Za pomocą umiejętności kształtowania zewnętrznie kształtuje kształt, dzięki czemu może być używany przez wiele projekcji, a nawet innych umiejętności. Gwarantuje również, że wszystkie mutacje drzewa wzbogacania są zawarte w umiejętności, a dane wyjściowe są obiektem, który można ponownie użyć. Natomiast kształtowanie wbudowane umożliwia utworzenie potrzebnego kształtu, ale jest obiektem anonimowym i jest dostępny tylko dla projekcji, dla której jest zdefiniowany.

Metody mogą być używane razem lub oddzielnie. W tym artykule przedstawiono zarówno umiejętności kształtowania projekcji tabeli, jak i wbudowane kształtowanie przy użyciu projekcji tabeli kluczowych fraz.

Korzystanie z umiejętności kształtowania

Umiejętności kształtowania są zwykle umieszczane na końcu zestawu umiejętności, tworząc widok danych, które mają zostać przekazane do projekcji. W tym przykładzie tworzony jest kształt o nazwie "tableprojection" zawierający następujące węzły: "reviews_text", "reviews_title", "AzureSearch_DocumentKey" oraz oceny tonacji i kluczowe frazy ze stronicowanych recenzji.

{
    "@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"
        }
    ]
}

Właściwość SourceContext

W ramach umiejętności kształtowania dane wejściowe mogą mieć sourceContext element. Tej samej właściwości można również używać w kształtach wbudowanych w projekcjach.

sourceContext służy do konstruowania obiektów wieloeziomowych zagnieżdżonych w potoku wzbogacania. Jeśli dane wejściowe są w innym kontekście niż kontekst umiejętności, użyj elementu sourceContext. Element sourceContext wymaga zdefiniowania zagnieżdżonych danych wejściowych z określonym elementem, który jest adresowany jako źródło.

W powyższym przykładzie analiza tonacji i wyodrębnianie kluczowych fraz zostało przeprowadzone na tekście podzielonym na strony w celu bardziej wydajnej analizy. Zakładając, że chcesz, aby wyniki i frazy zostały przewidywane w tabeli, należy teraz ustawić kontekst na zagnieżdżone dane wejściowe, które zapewniają wynik i frazę.

Rzutowanie kształtu na wiele tabel

Po zdefiniowaniu węzła tableprojection w powyższej outputs sekcji można podzielić części węzła tableprojection na poszczególne powiązane tabele:

"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/*"
            }
        ]
    }
]

Kształt wbudowany dla projekcji tabeli

Kształtowanie wbudowane to możliwość tworzenia nowych kształtów w samej definicji projekcji. Kształtowanie wbudowane ma następujące cechy:

  • Kształt może być używany tylko przez projekcję zawierającą go.
  • Kształt może być identyczny z umiejętnościami kształtatora.

Kształt wbudowany jest tworzony przy użyciu metod sourceContext i inputs.

Właściwości opis
sourceContext Ustawia katalog główny projekcji.
Wejścia Każde dane wejściowe jest kolumną w tabeli. Nazwa to nazwa kolumny. Źródło to węzeł wzbogacania, który udostępnia wartość.

Aby wyświetlić te same dane co w poprzednim przykładzie, opcja projekcji wbudowanej będzie wyglądać następująco:

"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ą z obserwacji obu podejść jest sposób projekcji wartości "Keyphrases" przy użyciu "sourceContext". Węzeł "Keyphrases", który zawiera kolekcję ciągów, jest samym elementem podrzędnym tekstu strony. Jednak ponieważ projekcje wymagają obiektu JSON, a strona jest pierwotnym (ciągiem), element "sourceContext" jest używany do zawijania frazy klucza do obiektu z nazwaną właściwością. Ta technika umożliwia niezależne przewidywanie nawet elementów pierwotnych.

Kształt wbudowany dla projekcji obiektów

Nowy kształt można wygenerować przy użyciu umiejętności kształtowania lub użyć wbudowanego kształtowania projekcji obiektu. Podczas gdy w przykładzie tabel przedstawiono podejście do tworzenia kształtu i fragmentowania, w tym przykładzie pokazano użycie kształtowania wbudowanego.

Kształtowanie wbudowane to możliwość utworzenia nowego kształtu w definicji danych wejściowych do projekcji. Kształtowanie wbudowane tworzy anonimowy obiekt, który jest identyczny z umiejętnościami kształtowania (w tym przypadku projectionShape). Kształtowanie wbudowane jest przydatne, jeśli definiujesz kształt, którego nie planujesz używać ponownie.

Właściwość projekcji jest tablicą. W tym przykładzie dodano nowe wystąpienie projekcji do tablicy, gdzie definicja knowledgeStore zawiera projekcje wbudowane. W przypadku korzystania z projekcji wbudowanych można pominąć umiejętności kształtowania.

"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": []
        }
    ]
}

Następne kroki

W tym artykule opisano pojęcia i zasady dotyczące kształtów projekcji. W następnym kroku zobacz, jak są one stosowane we wzorcach dla projekcji tabel, obiektów i plików.