Suddivisione in blocchi e incorporamento dei dati integrati in Ricerca di intelligenza artificiale di Azure

Importante

Questa funzionalità è disponibile in anteprima pubblica in Condizioni supplementari per l'utilizzo. L'API REST 2023-10-01-Preview supporta questa funzionalità.

La vettorializzazione integrata aggiunge la suddivisione in blocchi di dati e l'incorporamento da testo a vettore alle competenze nell'indicizzazione basata su indicizzatore. Aggiunge inoltre conversioni da testo a vettore alle query.

Questa funzionalità è di sola anteprima. Nella versione disponibile a livello generale della ricerca vettoriale e nelle versioni di anteprima precedenti, la suddivisione in blocchi di dati e la vettorializzazione si basano su componenti esterni per la suddivisione in blocchi e i vettori e il codice dell'applicazione deve gestire e coordinare ogni passaggio. In questa anteprima, la suddivisione in blocchi e la vettorializzazione sono integrate nell'indicizzazione tramite competenze e indicizzatori. È possibile configurare un set di competenze che blocchi i dati usando la competenza Divisione testo e quindi chiamare un modello di incorporamento usando la competenza AzureOpenAIEmbedding o una competenza personalizzata. Qualsiasi vettore usato durante l'indicizzazione può essere chiamato anche sulle query per convertire il testo in vettori.

Per l'indicizzazione, la vettorizzazione integrata richiede:

Per le query:

  • Vettore definito nello schema dell'indice, assegnato a un campo vettoriale e usato automaticamente in fase di query per convertire una query di testo in un vettore.

Le conversioni vettoriali sono unidirezionale: da testo a vettore. Non esiste alcuna conversione da vettore a testo per query o risultati, ad esempio non è possibile convertire un risultato vettore in una stringa leggibile.

Diagramma dei componenti

Il diagramma seguente illustra i componenti della vettorizzazione integrata.

Diagramma dei componenti in un flusso di lavoro di vettorizzazione integrato.

Ecco un elenco di controllo dei componenti responsabili della vettorializzazione integrata:

  • Origine dati supportata per l'indicizzazione basata su indicizzatore.
  • Indice che specifica i campi vettoriali e una definizione di vettore assegnata ai campi vettoriali.
  • Un set di competenze che fornisce una competenza Dividi testo per la suddivisione dei dati e una competenza per la vettorializzazione (la competenza AzureOpenAiEmbedding o una competenza personalizzata che punta a un modello di incorporamento esterno).
  • Facoltativamente, le proiezioni di indici (definite anche in un set di competenze) per eseguire il push dei dati in blocchi in un indice secondario
  • Un modello di incorporamento, distribuito in Azure OpenAI o disponibile tramite un endpoint HTTP.
  • Indicizzatore per guidare il processo end-to-end. Un indicizzatore specifica inoltre una pianificazione, mapping dei campi e proprietà per il rilevamento delle modifiche.

Questo elenco di controllo è incentrato sulla vettorializzazione integrata, ma la soluzione non è limitata a questo elenco. È possibile aggiungere altre competenze per l'arricchimento tramite intelligenza artificiale, creare un archivio conoscenze, aggiungere una classificazione semantica, aggiungere l'ottimizzazione della pertinenza e altre funzionalità di query.

Disponibilità e prezzi

La disponibilità della vettorizzazione integrata si basa sul modello di incorporamento. Se si usa Azure OpenAI, verificare la disponibilità a livello di area.

Se si usa una competenza personalizzata e un meccanismo di hosting di Azure (ad esempio un'app per le funzioni di Azure, un'app Web di Azure e Azure Kubernetes), controllare la pagina del prodotto in base all'area per la disponibilità delle funzionalità.

La suddivisione in blocchi dei dati (competenza Divisione testo) è gratuita e disponibile in tutti i servizi di intelligenza artificiale di Azure in tutte le aree.

Nota

Alcuni servizi di ricerca meno recenti creati prima del 1° gennaio 2019 vengono distribuiti nell'infrastruttura che non supporta i carichi di lavoro vettoriali. Se si tenta di aggiungere un campo vettore a uno schema e si riceve un errore, si tratta di un risultato di servizi obsoleti. In questo caso, è necessario creare un nuovo servizio di ricerca per provare la funzionalità vettoriale.

Quali scenari possono supportare la vettorizzazione integrata?

  • Suddividere documenti di grandi dimensioni in blocchi, utili per scenari vettoriali e non vettoriali. Per i vettori, i blocchi consentono di soddisfare i vincoli di input dei modelli di incorporamento. Per gli scenari non vettoriali, potrebbe essere disponibile un'app di ricerca in stile chat in cui GPT assembla le risposte da blocchi indicizzati. È possibile usare blocchi vettorializzati o non vettorializzati per la ricerca in stile chat.

  • Creare un archivio vettoriale in cui tutti i campi sono campi vettoriali e l'ID documento (obbligatorio per un indice di ricerca) è l'unico campo stringa. Eseguire una query sull'archivio vettoriale per recuperare gli ID documento e quindi inviare i campi vettoriali del documento a un altro modello.

  • Combinare campi vettoriali e di testo per la ricerca ibrida, con o senza classificazione semantica. La vettorizzazione integrata semplifica tutti gli scenari supportati dalla ricerca vettoriale.

Quando usare la vettorializzazione integrata

È consigliabile usare il supporto predefinito per la vettorizzazione di Azure AI Studio. Se questo approccio non soddisfa le proprie esigenze, è possibile creare indicizzatori e set di competenze che richiamano la vettorizzazione integrata usando le interfacce programmatice di Ricerca di intelligenza artificiale di Azure.

Come usare la vettorizzazione integrata

Per la vettorizzazione solo query:

  1. Aggiungere un vettore a un indice. Deve essere lo stesso modello di incorporamento usato per generare vettori nell'indice.
  2. Assegnare il vettore a un profilo vettoriale e quindi assegnare un profilo vettoriale al campo vettoriale.
  3. Formulare una query vettoriale che specifica la stringa di testo da vettorizzare.

Uno scenario più comune: suddivisione in blocchi di dati e vettorizzazione durante l'indicizzazione:

  1. Creare una connessione all'origine dati a un'origine dati supportata per l'indicizzazione basata su indicizzatore.
  2. Creare un set di competenze che chiama la competenza Divisione testo per la suddivisione in blocchi e AzureOpenAIEmbeddingModel o una competenza personalizzata per vettorizzare i blocchi.
  3. Creare un indice che specifica un vettore per l'ora di query e assegnarlo ai campi vettoriali.
  4. Creare un indicizzatore per guidare tutti gli elementi, dal recupero dei dati, all'esecuzione del set di competenze, tramite l'indicizzazione.

Facoltativamente, creare indici secondari per scenari avanzati in cui il contenuto in blocchi si trova in un indice e non in blocchi in un altro indice. Gli indici in blocchi (o gli indici secondari) sono utili per le app RAG.

Suggerimento

Provare la nuova procedura guidata Importare e vettorizzare i dati nella portale di Azure per esplorare la vettorializzazione integrata prima di scrivere codice.

In alternativa, configurare un notebook di Jupyter per eseguire lo stesso flusso di lavoro, cella per cella, per vedere come funziona ogni passaggio.

Limiti

Assicurarsi di conoscere le quote e i limiti di Azure OpenAI per l'incorporamento dei modelli. Ricerca di intelligenza artificiale di Azure ha criteri di ripetizione dei tentativi, ma se la quota è esaurita, i tentativi hanno esito negativo.

I limiti del token OpenAI di Azure per minuto sono per modello, per sottoscrizione. Tenere presente questo aspetto se si usa un modello di incorporamento per carichi di lavoro di query e indicizzazione. Se possibile, seguire le procedure consigliate. Avere un modello di incorporamento per ogni carico di lavoro e provare a distribuirli in sottoscrizioni diverse.

In Ricerca di intelligenza artificiale di Azure tenere presente che sono previsti limiti per livello e carichi di lavoro.

Infine, le funzionalità seguenti non sono attualmente supportate:

Vantaggi della vettorializzazione integrata

Ecco alcuni dei vantaggi principali della vettorizzazione integrata:

  • Nessuna pipeline separata di suddivisione in blocchi di dati e vettorizzazione. Il codice è più semplice da scrivere e gestire.

  • Automatizzare l'indicizzazione end-to-end. Quando i dati vengono modificati nell'origine (ad esempio in Archiviazione di Azure, Azure SQL o Cosmos DB), l'indicizzatore può spostare tali aggiornamenti nell'intera pipeline, dal recupero al documento, attraverso l'arricchimento facoltativo tramite intelligenza artificiale, suddivisione in blocchi di dati, vettorizzazione e indicizzazione.

  • Progetto di contenuto in blocchi in indici secondari. Gli indici secondari vengono creati come qualsiasi indice di ricerca (uno schema con campi e altri costrutti), ma vengono popolati insieme a un indice primario da un indicizzatore. Il contenuto di ogni documento di origine passa ai campi negli indici primari e secondari durante la stessa esecuzione dell'indicizzazione.

    Gli indici secondari sono destinati alle app rag (Augmented Generation) di recupero e suddivisione in blocchi di dati. Supponendo che un PDF di grandi dimensioni come documento di origine, l'indice primario potrebbe avere informazioni di base (titolo, data, autore, descrizione) e un indice secondario contiene i blocchi di contenuto. La vettorializzazione a livello di blocco di dati semplifica la ricerca di informazioni pertinenti (ogni blocco è ricercabile) e restituisce una risposta pertinente, in particolare in un'app di ricerca in stile chat.

Indici in blocchi

La suddivisione in blocchi è un processo di divisione del contenuto in parti gestibili più piccole (blocchi) che possono essere elaborate in modo indipendente. La suddivisione in blocchi è necessaria se i documenti di origine sono troppo grandi per le dimensioni massime di input dell'incorporamento o dei modelli linguistici di grandi dimensioni, ma si potrebbe trovare una struttura di indice migliore per i modelli RAG e la ricerca in stile chat.

Il diagramma seguente illustra i componenti dell'indicizzazione in blocchi.

Diagramma del flusso di lavoro di suddivisione in blocchi e vettorializzazione.

Passaggi successivi