Arricchimento incrementale e memorizzazione nella cache in Azure AI Search

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 di arricchimenti memorizzati nella cache durante l'esecuzione del set di competenze in modo che solo le competenze e i documenti nuovi e modificati comportino addebiti per l'elaborazione con pagamento in base al consumo per le chiamate API ai servizi di Azure AI. La cache contiene l'output del cracking dei documenti, 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 è ridotto perché i costi di archiviazione sono inferiori all'estrazione delle immagini e all'elaborazione dell'intelligenza artificiale.

Per garantire la sincronizzazione tra i dati dell'origine dati e l'indice, è importante comprendere i prerequisiti univoci di monitoraggio delle modifiche e delle eliminazioni dell'origine dati. Questa guida illustra specificamente come gestire le modifiche incrementali in termini di elaborazione delle competenze e come usare la cache per questo scopo.

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 riscritti nella cache e anche nell'indice di ricerca o nell'archivio conoscenze.

Limiti

Attenzione

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

Configurazione della cache

Fisicamente, la cache viene archiviata in un contenitore BLOB nell'account di archiviazione di Azure, uno 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" e si esegue l'indicizzatore. Solo i contenuti arricchiti possono essere memorizzati nella cache. Se l'indicizzatore non ha un set di competenze collegato, la memorizzazione nella cache non viene applicata.

L'esempio seguente illustra un indicizzatore con la memorizzazione nella cache abilitata. Per istruzioni complete, vedere Abilitare la memorizzazione nella cache di arricchimento.

Per usare la proprietà cache, è possibile usare 2020-06-30-preview o versione successiva quando si crea o si aggiorna un indicizzatore. È consigliabile usare l'API di anteprima più recente.

POST https://[search service name].search.windows.net/indexers?api-version=2024-05-01-rreview
    {
        "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 relativa cache. Se la proprietà cache sull'indicizzatore è impostata su Null o la stringa di connessione viene modificata, la cache esistente viene eliminata alla successiva esecuzione 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 parametro enableReprocessing. 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 nuovo contenuto e in ingresso rispetto al contenuto esistente. È consigliabile impostare enableReprocessing solo su false su base temporanea. 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 di pari passo. 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 parametro disableCacheReprocessingChangeDetection su true:

  1. Chiamare Aggiorna il set di competenze 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. È consigliabile usare l'API di anteprima più recente.

PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=2024-05-01-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 una stringa di connessione o la rotazione della chiave nell'account di archiviazione, aggiungere il parametro ignoreResetRequirement nell'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=2024-05-01-preview&ignoreResetRequirement
 

Forzare la valutazione del set di competenze

Lo scopo della cache è quello di 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, come una competenza personalizzata).

In questo caso, è possibile usare Reimposta competenze per forzare la rielaborazione di una determinata competenza, incluse quelle downstream con 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 la richiesta Esegui indicizzatore per richiamare l'elaborazione della pipeline.

Memorizzare nuovamente 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 Reimpostare documenti (anteprima) per forzare la rielaborazione di documenti specifici. Quando un documento viene reimpostato, l'indicizzatore invalida la cache per tale documento, che viene quindi rielaborato leggendolo 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 del documento come letto 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.

In base a come si chiama l'API, la richiesta aggiungerà, sovrascriverà o metterà in coda l'elenco delle chiavi:

  • Chiamando l'API più volte con chiavi diverse, le nuove chiavi vengono aggiunte all'elenco delle chiavi del documento reimpostate.

  • Chiamando l'API con il parametro di stringa di query "sovrascrivere" impostato su true, si sovrascriverà l'elenco corrente delle chiavi del documento da reimpostare con il payload della richiesta.

  • Chiamando l'API, solo le chiavi del documento vengono aggiunte alla coda di lavoro eseguita dall'indicizzatore. Quando l'indicizzatore viene richiamato successivamente, come pianificato o su richiesta, darà priorità all'elaborazione delle chiavi del documento reimpostate prima di qualsiasi altra modifica proveniente dall'origine dati.

L'esempio seguente illustra una richiesta di ripristino di un documento:

POST https://[search service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2024-05-01-preview
    {
        "documentKeys" : [
            "key1",
            "key2",
            "key3"
        ]
    }

Modifiche che invalidano la cache

Dopo aver abilitato una cache, gli indici valutano le modifiche nella composizione della pipeline per determinare quali contenuti possono essere riutilizzati e quali devono essere rielaborati. In questa sezione vengono elencate le modifiche che invalidano la cache in modo definitivo, seguite da quelle 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 potrebbero invalidare 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
  • L'input dell'abilità cambia con conseguente diversa ascendenza, 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 riprogettazione dei documenti
  • Le modifiche apportate alle proiezioni dell'archivio conoscenze comportano la riprogettazione dei documenti
  • I mapping dei campi di output modificati in un indicizzatore comportano la riprogettazione dei documenti nell'indice

API usate per la memorizzazione nella cache

La versione dell'API REST 2020-06-30-Preview o versioni successive fornisce l'arricchimento incrementale tramite proprietà aggiuntive sugli indicizzatori. È consigliabile usare l'API di anteprima più recente.

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 potente funzionalità che estende il rilevamento 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.