Importazione dei dati in Ricerca di intelligenza artificiale di Azure

In Ricerca di intelligenza artificiale di Azure le query vengono eseguite su contenuti di proprietà dell'utente caricati in un indice di ricerca. Questo articolo descrive i due flussi di lavoro di base per popolare un indice: eseguire il push dei dati nell'indice a livello di codice o eseguire il pull dei dati usando un indicizzatore di ricerca.

Entrambi gli approcci caricano documenti da un'origine dati esterna. Anche se è possibile creare un indice vuoto, non è possibile eseguire query fino a quando non si aggiunge il contenuto.

Nota

Se l'arricchimento tramite intelligenza artificiale è un requisito di soluzione, è necessario usare il modello pull (indicizzatori) per caricare un indice. I set di competenze sono collegati a un indicizzatore e non vengono eseguiti in modo indipendente.

Push dei dati in un indice

Il modello push è un approccio che usa le API per caricare documenti in un indice di ricerca esistente. È possibile caricare i documenti singolarmente o in batch fino a 1000 per batch o 16 MB per batch, a qualunque limite venga raggiunto per primo.

I vantaggi principali includono:

  • Nessuna restrizione sul tipo di origine dati. Il payload deve essere costituito da documenti JSON che eseguono il mapping allo schema di indice, ma i dati possono essere originati da qualsiasi posizione.

  • Nessuna restrizione sulla frequenza di esecuzione. È possibile eseguire il push delle modifiche a un indice ogni volta che si vuole. Per le applicazioni con requisiti di bassa latenza, ad esempio quando l'indice deve essere sincronizzato con le fluttuazioni dell'inventario dei prodotti, il modello push è l'unica opzione.

  • Connessione ivity e il recupero sicuro dei documenti sono completamente sotto il controllo. Al contrario, le connessioni dell'indicizzatore vengono autenticate usando le funzionalità di sicurezza fornite in Ricerca di intelligenza artificiale di Azure.

Come eseguire il push dei dati in un indice di Ricerca di intelligenza artificiale di Azure

Usare le API seguenti per caricare documenti singoli o multipli in un indice:

Non è disponibile alcun supporto per il push dei dati tramite il portale di Azure.

Per un'introduzione alle API push, vedere:

Azioni di indicizzazione: caricamento, unione, mergeOrUpload, eliminazione

È possibile controllare il tipo di azione di indicizzazione per ogni documento, specificando se il documento deve essere caricato completamente, unito al contenuto del documento esistente o eliminato.

Indipendentemente dal fatto che si usi l'API REST o Azure SDK, per l'importazione dei dati sono supportate le operazioni di documento seguenti:

  • Caricare, simile a un "upsert" in cui il documento viene inserito se è nuovo e aggiornato o sostituito se esistente. Se il documento non contiene valori richiesti dall'indice, il valore del campo del documento viene impostato su Null.

  • unisci aggiorna un documento già esistente e non riesce a trovare un documento che non è stato trovato. Merge sostituisce i valori esistenti. Per questo motivo, assicurarsi di verificare la presenza di campi di raccolta contenenti più valori, ad esempio campi di tipo Collection(Edm.String). Ad esempio, se un tags campo inizia con un valore e ["budget"] si esegue un'unione con ["economy", "pool"], il valore finale del tags campo è ["economy", "pool"]. Non sarà ["budget", "economy", "pool"].

  • mergeOrUpload si comporta come unisci se il documento esiste e carica se il documento è nuovo.

  • delete rimuove l'intero documento dall'indice. Se si desidera rimuovere un singolo campo, usare unisci, impostando invece il campo in questione su Null.

Pull dei dati in un indice

Il modello pull usa indicizzatori che si connettono a un'origine dati supportata, caricando automaticamente i dati nell'indice. Gli indicizzatori di Microsoft sono disponibili per queste piattaforme:

È possibile usare connettori di terze parti, sviluppati e gestiti dai partner Microsoft. Per altre informazioni e collegamenti, vedere Raccolta origine dati.

Gli indicizzatori connettono un indice a un'origine dati, in genere una tabella, una vista o una struttura equivalente, e mappano i campi di origine ai campi equivalenti nell'indice. Durante l'esecuzione il set di righe viene automaticamente trasformato in JSON e caricato nell'indice specificato. Tutti gli indicizzatori supportano le pianificazioni in modo che sia possibile specificare la frequenza di aggiornamento dei dati. La maggior parte degli indicizzatori fornisce il rilevamento delle modifiche se l'origine dati lo supporta. Tramite il rilevamento di modifiche ed eliminazioni nei documenti esistenti, oltre al riconoscimento di nuovi documenti, gli indicizzatori eliminano la necessità di gestire attivamente i dati nell'indice.

Come eseguire il pull dei dati in un indice di Ricerca di intelligenza artificiale di Azure

Usare gli strumenti e le API seguenti per l'indicizzazione basata su indicizzatore:

La funzionalità dell'indicizzatore viene esposta in [portale di Azure], nell'API REST e in .NET SDK.

Un vantaggio dell'uso del portale è che Ricerca intelligenza artificiale di Azure può in genere generare uno schema di indice predefinito leggendo i metadati del set di dati di origine.

Verificare l'importazione dei dati con Esplora ricerche

Un modo rapido per eseguire un controllo preliminare sul caricamento del documento consiste nell'usare Esplora ricerche nel portale.

Screenshot of Search Explorer command in the Azure portal.

Esplora ricerche consente di eseguire query su un indice senza che sia necessario scrivere codice. L'esperienza di ricerca è basata sulle impostazioni predefinite, ad esempio la sintassi semplice e il parametro di query searchMode predefinito. I risultati vengono restituiti in JSON, in modo che sia possibile esaminare l'intero documento.

Ecco una query di esempio che è possibile eseguire in Esplora ricerche nella visualizzazione JSON. "HotelId" è la chiave del documento dell'indice hotels-sample-index. Il filtro fornisce l'ID documento di un documento specifico:

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

Se si usa REST, questa query di ricerca raggiunge lo stesso scopo.

Vedi anche