Archivio conoscenze "proiezioni" in Azure AI Search

Le proiezioni definiscono le tabelle fisiche, gli oggetti e i file in un archivio conoscenze che accettano contenuto da una pipeline di arricchimento di Azure AI Search. Se si crea un archivio conoscenze, la maggior parte del lavoro consiste nel definire e modellare le proiezioni.

Questo articolo presenta i concetti di proiezione e il flusso di lavoro in modo da avere alcune informazioni di base prima di iniziare a scrivere codice.

Le proiezioni sono definite in set di competenze di Azure AI Search, ma i risultati finali sono le proiezioni di tabella, oggetto e file di immagine in Archiviazione di Azure.

Proiezioni espresse in Archiviazione di Azure

Tipi di proiezioni e utilizzo

Un archivio conoscenze è una costruzione logica espressa fisicamente come raccolta di tabelle, oggetti JSON o file di immagine binari in Archiviazione di Azure.

Projection Storage Utilizzo
Tabelle Azure Table Storage Usato per i dati che sono meglio rappresentati come righe e colonne od ogni volta che sono necessarie rappresentazioni granulari dei dati, ad esempio come frame di dati. Le proiezioni di tabella consentono di definire una forma schematizzata, utilizzando una competenza Shaper o di usare il data shaping inline per specificare colonne e righe. È possibile organizzare il contenuto in più tabelle in base a principi di normalizzazione familiari. Le tabelle che si trovano nello stesso gruppo sono correlate automaticamente.
Oggetti Archiviazione BLOB di Azure Si utilizza quando è necessaria la rappresentazione JSON completa dei dati e degli arricchimenti in un unico documento JSON. Come per le proiezioni di tabella, solo gli oggetti JSON validi possono essere proiettati come oggetti e il data shaping può essere utile.
File Archiviazione BLOB di Azure Usati quando è necessario salvare i file di immagine binari normalizzati.

Definizione di proiezione

Le proiezioni vengono specificate nella proprietà "knowledgeStore" di un set di competenze. Le definizioni di proiezione vengono usate durante la chiamata dell'indicizzatore per creare e caricare oggetti in Archiviazione di Azure con contenuto arricchito. Se non si ha familiarità con questi concetti, iniziare con arricchimento tramite intelligenza artificiale per un'introduzione.

Nell'esempio seguente viene illustrato il posizionamento delle proiezioni in knowledgeStore e la costruzione di base. Il nome, il tipo e l'origine del contenuto costituiscono una definizione di proiezione.

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

Gruppi di proiezioni

Le proiezioni sono una matrice di raccolte complesse, il che significa che è possibile specificare più set di ogni tipo. È comune usare un solo gruppo di proiezioni, ma è possibile usarne di più se i requisiti di archiviazione includono il supporto di diversi strumenti e scenari. Ad esempio, è possibile usare un gruppo per la progettazione e il debug di un set di competenze, mentre un secondo set raccoglie l'output usato per un'app online, con un terzo per i carichi di lavoro di data science.

Lo stesso output del set di competenze viene usato per popolare tutti i gruppi nelle proiezioni. L'esempio seguente ne illustra due.

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

I gruppi di proiezioni hanno le caratteristiche chiave seguenti dell'esclusività reciproca e della correlazione.

Principio Descrizione
Esclusività reciproca Ogni gruppo è completamente isolato da altri gruppi per supportare scenari di data shaping diversi. Ad esempio, se si testano diverse strutture e combinazioni di tabelle, ogni set viene inserito in un gruppo di proiezione diverso per i test AB. Ogni gruppo ottiene i dati dalla stessa origine (albero di arricchimento), ma è completamente isolato dalla combinazione di file oggetto tabella di qualsiasi gruppo di proiezioni peer.
Correlazione All'interno di un gruppo di proiezione, i contenuti di tabelle, oggetti e file sono correlati. L'archivio conoscenze usa le chiavi generate come punti di riferimento a un nodo padre comune. Si consideri, ad esempio, uno scenario in cui si dispone di un documento contenente immagini e testo. È possibile proiettare il testo nelle tabelle e nelle immagini in file binari e in entrambe le tabelle e gli oggetti è presente una colonna/proprietà contenente l'URL del file.

"Origine" proiezione

Il parametro di origine è il terzo componente di una definizione di proiezione. Poiché le proiezioni archiviano i dati da una pipeline di arricchimento tramite intelligenza artificiale, l'origine di una proiezione è sempre l'output di una competenza. Di conseguenza, l'output potrebbe essere un singolo campo (ad esempio, un campo di testo tradotto), ma spesso è un riferimento a una forma di dati.

Le forme di dati provengono dal set di competenze. Tra tutte le competenze predefinite fornite in Azure AI Search, è disponibile una competenza di utilità denominata competenza Shaper usata per creare forme di dati. È possibile includere le competenze Shaper (il numero necessario) per supportare le proiezioni nell'archivio conoscenze.

Le forme vengono spesso utilizzate con proiezioni di tabella, in cui la forma non solo specifica le righe che passano alla tabella, ma anche le colonne create (è anche possibile passare una forma a una proiezione di oggetti).

Le forme possono essere complesse ed è fuori ambito discuterle qui in modo approfondito, ma l'esempio seguente illustra brevemente una forma di base. L'output della competenza Shaper viene specificato come origine di una proiezione di tabella. All'interno della proiezione della tabella stessa saranno presenti colonne relative a "metadata-storage_path", "reviews_text", "reviews_title" e così via, come specificato nella forma.

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

Ciclo di vita della proiezione

Le proiezioni hanno un ciclo di vita associato ai dati di origine nell'origine dati. Man mano che i dati di origine vengono aggiornati e reindicizzati, le proiezioni vengono aggiornate con i risultati degli arricchimenti, assicurandosi che le proiezioni siano infine coerenti con i dati nell'origine dati. Tuttavia, anche le proiezioni vengono archiviate in modo indipendente in Archiviazione di Azure. Non verranno eliminati quando l'indicizzatore o il servizio di ricerca stesso vengono eliminati.

Utilizzare nelle app

Dopo l'esecuzione dell'indicizzatore, connettersi alle proiezioni e usare i dati in altre app e carichi di lavoro.

  • Usare il portale di Azure per verificare la creazione di oggetti in Archiviazione di Azure.

  • Usare Power BI per l'esplorazione dei dati. Questo strumento funziona meglio quando i dati si trovano in Archiviazione tabelle di Azure. In Power BI è possibile modificare i dati in nuove tabelle che sono più facili in termini di esecuzione di query e analisi.

  • Usare i dati arricchiti nel contenitore BLOB in una pipeline di data science. Ad esempio, è possibile caricare i dati dai BLOB in un DataFrame Pandas.

  • Infine, se è necessario esportare i dati dall'archivio conoscenze, Azure Data Factory include connettori per esportare i dati e renderli disponibili nel database preferito.

Elenco di controllo per iniziare

Tenere presente che le proiezioni sono esclusive degli archivi conoscenze e non vengono usate per strutturare un indice di ricerca.

  1. In Archiviazione di Azure ottenere una stringa di connessione dalle chiavi di accesso e verificare che l'account sia StorageV2 (utilizzo generico V2).

  2. In Archiviazione di Azure, acquisire familiarità con il contenuto esistente nei contenitori e nelle tabelle in modo da scegliere nomi non in conflitto per le proiezioni. Un archivio conoscenze è una raccolta separata di tabelle e contenitori. Prendere in considerazione l'adozione di una convenzione di denominazione per tenere traccia degli oggetti correlati.

  3. In Azure AI Search abilitare la memorizzazione nella cache di arricchimento (anteprima) nell'indicizzatore e quindi eseguire l'indicizzatore per eseguire il set di competenze e popolare la cache. Si tratta di una funzionalità di anteprima, quindi assicurarsi di usare l'API REST di anteprima nella richiesta dell'indicizzatore. Dopo aver popolato la cache, è possibile modificare le definizioni di proiezione in un archivio conoscenze gratuitamente (purché le competenze stesse non vengano modificate).

  4. Nel codice tutte le proiezioni vengono definite esclusivamente in un set di competenze. Non esistono proprietà dell'indicizzatore (ad esempio mapping di campi o mapping dei campi di output) applicabili alle proiezioni. All'interno di una definizione del set di competenze, ci si concentrerà su due aree: la proprietà knowledgeStore e la matrice di competenze.

    1. In knowledgeStore specificare tabelle, oggetti e proiezioni di file nella sezione projections. Il tipo di oggetto, il nome dell'oggetto e la quantità (in base al numero di proiezioni definite) vengono determinati in questa sezione.

    2. Dalla matrice di competenze determinare gli output delle competenze a cui fare riferimento in source di ogni proiezione. Tutte le proiezioni hanno un'origine. L'origine può essere l'output di una competenza upstream, ma spesso è l'output di una competenza Shaper. La composizione della proiezione viene determinata tramite forme.

  5. Se si aggiungono proiezioni a un set di competenze esistente, aggiornare il set di competenze ed eseguire l'indicizzatore.

  6. Controllare i risultati in Archiviazione di Azure. Nelle esecuzioni successive evitare conflitti di denominazione eliminando oggetti in Archiviazione di Azure o modificando i nomi dei progetti nel set di competenze.

  7. Se si usano proiezioni di tabelle, vedere Informazioni sul modello di dati del servizio tabelle e obiettivi di scalabilità e prestazioni per l'archiviazione tabelle per assicurarsi che i requisiti dei dati siano entro i limiti documentati dell'archiviazione tabelle.

Passaggi successivi

Esaminare la sintassi e gli esempi per ogni tipo di proiezione.