Share via


Arricchimento incrementale e memorizzazione nella cache in Ricerca di intelligenza artificiale di Azure

Importante

Questa funzionalità è disponibile in anteprima pubblica in condizioni supplementari per l'utilizzo. L'API REST di anteprima supporta questa funzionalità.

L'arricchimento incrementale si riferisce all'uso degli arricchimenti memorizzati nella cache durante l'esecuzione del set di competenze in modo che solo le competenze e i documenti nuovi e modificati comportano addebiti per l'elaborazione con pagamento in base al consumo per le chiamate API ai servizi di intelligenza artificiale di Azure. La cache contiene l'output del cracking del documento, oltre agli output di ogni competenza per ogni documento. Anche se la memorizzazione nella cache è fatturabile (usa Archiviazione di Azure), il costo complessivo dell'arricchimento viene ridotto perché i costi di archiviazione sono inferiori all'estrazione delle immagini e all'elaborazione di intelligenza artificiale.

Quando si abilita la memorizzazione nella cache, l'indicizzatore valuta gli aggiornamenti per determinare se è possibile eseguire il pull degli arricchimenti esistenti dalla cache. È probabile che il contenuto di immagini e testo della fase di cracking del documento, oltre agli output delle competenze upstream o ortogonali alle modifiche, sia riutilizzabile.

Al termine dell'elaborazione del set di competenze, i risultati aggiornati vengono riscritto nella cache e anche nell'indice di ricerca o nell'archivio conoscenze.

Limiti

Attenzione

Se si usa l'indicizzatore di SharePoint Online (anteprima), è consigliabile evitare l'arricchimento incrementale. In determinate circostanze, la cache diventa non valida, richiedendo una reimpostazione e un'esecuzione dell'indicizzatore, se si sceglie di ricaricarla.

Configurazione della cache

Fisicamente, la cache viene archiviata in un contenitore BLOB nell'account Archiviazione di Azure, una per indicizzatore. A ogni indicizzatore viene assegnato un identificatore di cache univoco e non modificabile che corrisponde al contenitore in uso.

La cache viene creata quando si specifica la proprietà "cache" ed eseguire l'indicizzatore. È possibile memorizzare nella cache solo il contenuto arricchito. Se l'indicizzatore non ha un set di competenze collegato, la memorizzazione nella cache non viene applicata.

Nell'esempio seguente viene illustrato un indicizzatore con memorizzazione nella cache abilitata. Per istruzioni complete, vedere Abilitare la memorizzazione nella cache degli arricchimenti. Si noti che quando si aggiunge la proprietà della cache, usare una versione dell'API di anteprima, 2020-06-30-Preview o successiva, nella richiesta.

POST https://[search service name].search.windows.net/indexers?api-version=2020-06-30-Preview
    {
        "name": "myIndexerName",
        "targetIndexName": "myIndex",
        "dataSourceName": "myDatasource",
        "skillsetName": "mySkillset",
        "cache" : {
            "storageConnectionString" : "<Your storage account connection string>",
            "enableReprocessing": true
        },
        "fieldMappings" : [],
        "outputFieldMappings": [],
        "parameters": []
    }

Gestione della cache

Il ciclo di vita della cache è gestito dall'indicizzatore. Se un indicizzatore viene eliminato, viene eliminata anche la cache. Se la cache proprietà dell'indicizzatore è impostata su Null o la stringa di connessione viene modificata, la cache esistente viene eliminata all'esecuzione successiva dell'indicizzatore.

Anche se l'arricchimento incrementale è progettato per rilevare e rispondere alle modifiche senza alcun intervento da parte dell'utente, esistono parametri che è possibile usare per richiamare comportamenti specifici:

Assegnare priorità ai nuovi documenti

La proprietà cache include un enableReprocessing parametro . Viene usato per controllare l'elaborazione dei documenti in ingresso già rappresentati nella cache. Se true (impostazione predefinita), i documenti già presenti nella cache vengono rielaborati quando si esegue di nuovo l'indicizzatore, presupponendo che l'aggiornamento delle competenze influisca su tale documento.

Se false, i documenti esistenti non vengono rielaborati, assegnando in modo efficace priorità al contenuto nuovo e in ingresso rispetto al contenuto esistente. È consigliabile impostare enableReprocessing solo su false in modo temporaneo. L'impostazione di enableReprocessing su true nella maggior parte dei casi garantisce che tutti i documenti, sia nuovi che esistenti, siano validi in base alla definizione corrente del set di competenze.

Ignorare la valutazione del set di competenze

La modifica di una competenza e la rielaborazione di tale competenza in genere vanno a portata di mano. Tuttavia, alcune modifiche apportate a una competenza non dovrebbero comportare la rielaborazione( ad esempio, la distribuzione di una competenza personalizzata in una nuova posizione o con una nuova chiave di accesso). Molto probabilmente, si tratta di modifiche periferiche che non hanno un impatto autentico sulla sostanza dell'output della competenza stessa.

Se si sa che una modifica alla competenza è effettivamente superficiale, è consigliabile eseguire l'override della valutazione delle competenze impostando il disableCacheReprocessingChangeDetection parametro su true:

  1. Chiamare Update Skillset e modificare la definizione del set di competenze.
  2. Aggiungere il parametro "disableCacheReprocessingChangeDetection=true" nella richiesta.
  3. Inviare la modifica.

L'impostazione di questo parametro garantisce che venga eseguito il commit solo degli aggiornamenti alla definizione del set di competenze e che la modifica non venga valutata per gli effetti sulla cache esistente. Usare una versione dell'API di anteprima, 2020-06-30-Preview o successiva.

PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=2020-06-30-Preview&disableCacheReprocessingChangeDetection
  

Ignorare i controlli di convalida dell'origine dati

La maggior parte delle modifiche apportate a una definizione di origine dati invaliderà la cache. Tuttavia, per gli scenari in cui si sa che una modifica non deve invalidare la cache, ad esempio la modifica di un stringa di connessione o la rotazione della chiave nell'account di archiviazione, aggiungere il ignoreResetRequirement parametro all'aggiornamento dell'origine dati. L'impostazione di questo parametro su true consente di eseguire il commit senza attivare una condizione di reimpostazione che comporterebbe la ricompilazione e il popolamento di tutti gli oggetti da zero.

PUT https://[search service].search.windows.net/datasources/[data source name]?api-version=2020-06-30-Preview&ignoreResetRequirement
 

Forzare la valutazione del set di competenze

Lo scopo della cache è evitare l'elaborazione non necessaria, ma si supponga di apportare una modifica a una competenza che l'indicizzatore non rileva (ad esempio, la modifica di un elemento nel codice esterno, ad esempio una competenza personalizzata).

In questo caso, è possibile usare Le competenze di reimpostazione per forzare la rielaborazione di una determinata competenza, incluse eventuali competenze downstream che hanno una dipendenza dall'output di tale competenza. Questa API accetta una richiesta POST con un elenco di competenze che devono essere invalidate e contrassegnate per la rielaborazione. Dopo la reimpostazione delle competenze, seguire con una richiesta Esegui indicizzatore per richiamare l'elaborazione della pipeline.

Memorizzare nella cache documenti specifici

La reimpostazione di un indicizzatore comporterà la rielaborazione di tutti i documenti nel corpus di ricerca. Negli scenari in cui è necessario rielaborare solo alcuni documenti, usare Reimposta documenti (anteprima) per forzare la rielaborazione di documenti specifici. Quando un documento viene reimpostato, l'indicizzatore invalida la cache per il documento, che viene quindi rielaborata leggendola dall'origine dati. Per altre informazioni, vedere Eseguire o reimpostare indicizzatori, competenze e documenti.

Per reimpostare documenti specifici, la richiesta fornisce un elenco di chiavi documento come letta dall'indice di ricerca. Se viene eseguito il mapping della chiave a un campo nell'origine dati esterna, il valore specificato deve essere quello usato nell'indice di ricerca.

A seconda della modalità di chiamata dell'API, la richiesta aggiunge, sovrascrive o accoda l'elenco di chiavi:

  • La chiamata all'API più volte con chiavi diverse aggiunge le nuove chiavi all'elenco di chiavi del documento reimpostate.

  • La chiamata all'API con il parametro della stringa di query "sovrascrivi" impostata su true sovrascriverà l'elenco corrente di chiavi del documento da reimpostare con il payload della richiesta.

  • La chiamata all'API comporta solo l'aggiunta delle chiavi del documento alla coda di lavoro eseguita dall'indicizzatore. Quando l'indicizzatore viene richiamato, come pianificato o su richiesta, l'indicizzatore assegna la priorità all'elaborazione delle chiavi del documento di reimpostazione prima di qualsiasi altra modifica dall'origine dati.

L'esempio seguente illustra una richiesta di reimpostazione del documento:

POST https://[search service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "key1",
            "key2",
            "key3"
        ]
    }

Modifiche che invalidano la cache

Dopo aver abilitato una cache, l'indicizzatore valuta le modifiche nella composizione della pipeline per determinare quale contenuto può essere riutilizzato e quali devono essere rielaborate. Questa sezione enumera le modifiche che invalidano la cache in modo definitivo, seguite dalle modifiche che attivano l'elaborazione incrementale.

Una modifica invalidante è una modifica che fa sì che l'intera cache non sia più valida. Un esempio di modifica invalidante è quello in cui l'origine dati viene aggiornata. Ecco l'elenco completo delle modifiche apportate a qualsiasi parte della pipeline dell'indicizzatore che invaliderebbe la cache:

  • Modifica del tipo di origine dati
  • Modifica del contenitore dell'origine dati
  • Modifica delle credenziali dell'origine dati
  • Modifica dei criteri di rilevamento delle modifiche dell'origine dati
  • Modifica dei criteri di rilevamento dell'eliminazione dell'origine dati
  • Modifica dei mapping dei campi dell'indicizzatore
  • Modifica dei parametri dell'indicizzatore:
    • Modalità di analisi
    • Estensioni escluse
    • Estensioni indicizzate
    • Solo metadati di archiviazione dell'indice per i documenti di dimensioni eccessive
    • Intestazioni di testo delimitate
    • Delimitatore di testo delimitato
    • Radice documento
    • Azione per immagini (modifiche alla modalità di estrazione delle immagini)

Modifiche che attivano l'elaborazione incrementale

L'elaborazione incrementale valuta la definizione del set di competenze e determina quali competenze eseguire di nuovo, aggiornando selettivamente le parti interessate dell'albero dei documenti. Ecco l'elenco completo delle modifiche che comportano l'arricchimento incrementale:

  • Modifica del tipo di competenza (il tipo OData della competenza viene aggiornato)
  • I parametri specifici della competenza vengono aggiornati, ad esempio un URL, le impostazioni predefinite o altri parametri
  • Modifiche all'output delle competenze, la competenza restituisce output aggiuntivi o diversi
  • Modifiche all'input delle competenze risultanti da origini diverse, il concatenamento delle competenze è cambiato
  • Invalidamento di qualsiasi competenza a monte, se una competenza che fornisce un input a questa competenza viene aggiornata
  • Aggiornamenti alla posizione di proiezione dell'archivio conoscenze, comporta la rieselaborazione dei documenti
  • Le modifiche apportate alle proiezioni dell'archivio conoscenze comportano la rielaborazione dei documenti
  • I mapping dei campi di output modificati in un indicizzatore comportano la rieselaborazione dei documenti nell'indice

API usate per la memorizzazione nella cache

La versione 2020-06-30-Preview dell'API REST o versioni successive fornisce l'arricchimento incrementale tramite proprietà aggiuntive sugli indicizzatori. I set di competenze e le origini dati possono usare la versione disponibile a livello generale. Oltre alla documentazione di riferimento, vedere Configurare la memorizzazione nella cache per l'arricchimento incrementale per informazioni dettagliate sull'ordine delle operazioni.

Passaggi successivi

L'arricchimento incrementale è una funzionalità potente che estende il rilevamento delle modifiche ai set di competenze e all'arricchimento tramite intelligenza artificiale. L'arricchimento incrementale consente di riutilizzare il contenuto elaborato esistente durante l'iterazione sulla progettazione del set di competenze. Come passaggio successivo, abilitare la memorizzazione nella cache sugli indicizzatori.