Suddivisione in blocchi e incorporamento dei dati integrati in Azure AI Search
La vettorizzazione integrata è un'estensione delle pipeline di indicizzazione e query in Azure AI Search. Aggiunge le funzionalità seguenti:
- Suddivisione in blocchi di dati durante l'indicizzazione
- Conversione da testo a vettore durante l'indicizzazione
- Conversione da testo a vettore durante le query
La suddivisione in blocchi dei dati non è un requisito rigido, ma a meno che i documenti non elaborati non siano di piccole dimensioni, è necessaria per soddisfare i requisiti di input del token dei modelli di incorporamento.
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.
La suddivisione in blocchi e la vettorizzazione dei dati integrati accelerano lo sviluppo e riducono al minimo le attività di manutenzione durante l'inserimento dei dati e il tempo di query perché sono presenti meno componenti esterni da configurare e gestire. Questa nuova capacità è ora disponibile a livello generale.
Uso della vettorizzazione integrata durante l'indicizzazione
Per la suddivisione in blocchi di dati e le conversioni da testo a vettore, si assume una dipendenza dai componenti seguenti:
Indicizzatore che recupera i dati non elaborati da un'origine dati supportata e funge da motore della pipeline.
Un indice vettoriale per ricevere il contenuto in blocchi e vettorializzato.
Un set di competenze configurato per:
Competenza Suddivisione testo, usata per suddividere i dati in blocchi.
Una competenza di incorporamento, usata per generare matrici vettoriali, che può essere una delle seguenti:
Competenza AzureOpenAIEmbedding collegata a text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large in Azure OpenAI.
Competenza personalizzata che punta a un altro modello di incorporamento in Azure o in un altro sito.
Competenza di Visione di Azure AI (anteprima) che punta all'API multimodale per Visione di Azure AI.
Competenza AML che punta al catalogo dei modelli in Studio AI della piattaforma Azure che punta ai modelli selezionati nel catalogo dei modelli.
Uso della vettorizzazione integrata nelle query
Per la conversione da testo a vettore durante le query, si assume una dipendenza da questi componenti:
Query che specifica uno o più campi vettoriali.
Stringa di testo convertita in un vettore in fase di query.
Un vettorizzatore, 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. Il vettore configurato deve corrispondere al modello di incorporamento usato per codificare i propri contenuti.
Diagramma dei componenti
Il diagramma seguente illustra i componenti della vettorizzazione integrata.
Il flusso di lavoro è una pipeline dell'indicizzatore. Gli indicizzatori recuperano dati da origini dati supportate e avviano l'arricchimento dei dati (o l'intelligenza artificiale applicata) chiamando OpenAI di Azure, i Servizi di Azure AI o il codice personalizzato per le conversioni da testo a vettore o altre elaborazioni.
Il diagramma è 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 vettorizzazione integrata è disponibile in tutte le aree e livelli. Tuttavia, se si usano le competenze e i vettori di OpenAI di Azure e Azure per intelligenza artificiale, assicurarsi che l'account multiservizio di Azure AI sia disponibile nelle stesse aree di Azure AI Search.
Se si usano 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 Prodotto di Azure per area per la disponibilità delle funzionalità.
La suddivisione in blocchi dei dati (competenza Suddivisione testo) è gratuita e disponibile in tutti i servizi di Azure AI 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, operazione utile per scenari vettoriali e non. Per i vettori, i blocchi consentono di soddisfare i vincoli di input dei modelli di incorporamento. Per gli scenari non di emergenza, 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 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 programmatiche di Azure AI Search.
Come usare la vettorizzazione integrata
Per la vettorizzazione solo query:
- Aggiungere un vettorizzatore a un indice. Deve essere lo stesso modello di incorporamento usato per generare vettori nell'indice.
- Assegnare il vettore a un profilo vettoriale e quindi assegnare un profilo vettoriale al campo vettore.
- 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:
- Creare una connessione di origine dati a un'origine dati supportata per l'indicizzazione basata su indicizzatore.
- Creare un set di competenze che chiami la competenza Divisione testo per la suddivisione in blocchi e AzureOpenAIEmbeddingModel o un'altra competenza di incorporamento per vettorizzare i blocchi.
- Creare un indice che specifica un vettorizzatore per il tempo di query e assegnarlo ai campi vettoriali.
- Creare un indicizzatore per eseguire tutte le operazioni, dal recupero dei dati all'esecuzione del set di competenze, tramite l'indicizzazione. È consigliabile eseguire l'indicizzatore in base a una pianificazione per raccogliere documenti modificati o eventuali documenti mancanti a causa della limitazione delle richieste.
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 nel portale di Azure per esplorare la vettorizzazione integrata prima di scrivere codice.
Proteggere le connessioni a vettori e modelli
Se l'architettura richiede connessioni private che ignorano Internet, è possibile creare una connessione di collegamento privato condivisa ai modelli di incorporamento usati dalle competenze durante l'indicizzazione e i vettorizzatori in fase di query.
I collegamenti privati condivisi funzionano solo per le connessioni da Azure ad Azure. Se ci si connette a OpenAI o a un altro modello esterno, la connessione deve trovarsi su Internet pubblico.
Per gli scenari di vettorizzazione, è possibile usare:
openai_account
per l'incorporamento di modelli ospitati in una risorsa OpenAI di Azure.sites
per l'incorporamento di modelli a cui si accede come competenza personalizzata o vettore personalizzato. L'ID gruppo disites
riguarda i servizi app e le funzioni di Azure, che è possibile usare per ospitare un modello di incorporamento diverso dai modelli di incorporamento di OpenAI di Azure.
Limiti
Assicurarsi di conoscere le quote e i limiti di OpenAI di Azure per l'incorporamento di modelli. Azure AI Search include criteri di retry, ma se la quota è esaurita i tentativi avranno 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 Azure AI Search tenere presente che esistono limiti del servizio per livello e carichi di lavoro.
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 cracking di documenti, l'arricchimento facoltativo tramite intelligenza artificiale, suddivisione in blocchi di dati, vettorizzazione e indicizzazione.
La logica di invio in batch e di ripetizione dei tentativi è incorporata (non configurabile). Azure AI Search include criteri di ripetizione dei tentativi interni per gli errori di limitazione che si verificano a causa del superamento delle quote del token da parte dell'endpoint Azure OpenAI per il modello di incorporazione. È consigliabile inserire l'indicizzatore in base a una pianificazione, ad esempio ogni 5 minuti, in modo che possa elaborare tutte le chiamate limitate dall'endpoint di Azure OpenAI nonostante i criteri di ripetizione dei tentativi.
Proiezione 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 di tipo domanda e risposta o chat. L'indice secondario contiene informazioni granulari per corrispondenze più specifiche, ma l'indice padre contiene più informazioni e spesso può produrre una risposta più completa. Quando viene trovata una corrispondenza nell'indice secondario, la query restituisce il documento padre dall'indice primario. Si supponga, ad esempio, di avere un file PDF di grandi dimensioni come documento di origine. L'indice primario potrebbe avere informazioni di base (titolo, data, autore, descrizione) mentre un indice secondario contiene blocchi di contenuto ricercabile.