Archivio conoscenze "proiezioni" in Ricerca di intelligenza artificiale di Azure

Le proiezioni definiscono le tabelle fisiche, gli oggetti e i file in un archivio conoscenze che accettano contenuto da una pipeline di arricchimento di Ricerca intelligenza artificiale di Azure. 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 nei set di competenze di Ricerca intelligenza artificiale di Azure, ma i risultati finali sono le proiezioni di tabelle, oggetti e file di immagine in Archiviazione di Azure.

Projections expressed in Azure Storage

Tipi di proiezioni e utilizzo

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

Projection Storage Utilizzo
Tabelle Azure Table Storage Usato per i dati che sono meglio rappresentati come righe e colonne o 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, usando 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 Usato 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 Usato quando è necessario salvare i file di immagine binaria 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 l'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 usare 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 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, il contenuto in 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.

Proiezione "source"

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 Ricerca di intelligenza artificiale di Azure, è disponibile una competenza di utilità denominata competenza Shaper usata per creare forme di dati. È possibile includere le competenze di 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 per discuterle 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 per "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 reindicizzazione, 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 viene eliminato.

Utilizzare nelle app

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

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

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

  • 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 un stringa di connessione dalle chiavi di accesso e verificare che l'account sia Archiviazione V2 (utilizzo generico V2).

  2. Mentre in Archiviazione di Azure, acquisire familiarità con il contenuto esistente in contenitori e tabelle in modo da scegliere nomi non inconflicanti 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 Ricerca di intelligenza artificiale di Azure 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 (api-version=2020-06-30-preview o versione successiva) 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, proiezioni di file nella projections sezione . 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.