Introduzione agli embedding e alla ricerca vettoriale
Questo documento fornisce una panoramica degli embedding e della ricerca vettoriale in BigQuery. La ricerca vettoriale è una tecnica per confrontare oggetti simili utilizzando gli embedding e viene utilizzata per potenziare i prodotti Google, tra cui la Ricerca Google, YouTube e Google Play. Puoi utilizzare la ricerca vettoriale per eseguire ricerche su larga scala. Quando utilizzi gli indici vettoriali con la ricerca vettoriale, puoi sfruttare le tecnologie di base come l' indicizzazione dei file invertiti (IVF) e l' algoritmo ScaNN.
La ricerca vettoriale si basa sugli embedding. Gli embedding sono vettori numerici ad alta dimensionalità che rappresentano una determinata entità, ad esempio un brano di testo o un file audio. I modelli di machine learning (ML) utilizzano gli embedding per codificare la semantica di queste entità in modo da semplificarne il ragionamento e il confronto. Ad esempio, un' operazione comune nei modelli di clustering, classificazione e suggerimenti è misurare la distanza tra i vettori in uno spazio di embedding per trovare gli elementi semanticamente più simili.
Questo concetto di similarità e distanza semantica in uno spazio di embedding viene dimostrato visivamente quando si considera come potrebbero essere tracciati elementi diversi. Ad esempio, i termini gatto, cane e leone, che rappresentano tutti tipi di animali, sono raggruppati in questo spazio grazie alle loro caratteristiche semantiche condivise. Allo stesso modo, termini come auto, camion e il termine più generico veicolo formerebbero un altro cluster. Questo è mostrato nell'immagine seguente:
Puoi notare che i cluster di animali e veicoli sono posizionati a una certa distanza l'uno dall'altro. La separazione tra i gruppi illustra il principio secondo cui più gli oggetti sono vicini nello spazio di embedding, più sono semanticamente simili e maggiori distanze indicano una maggiore dissimilarità semantica.
Casi d'uso
La combinazione di generazione di embedding e ricerca vettoriale consente di realizzare molti casi d'uso interessanti. Di seguito sono riportati alcuni possibili casi d'uso:
- Retrieval-augmented generation (RAG): analizza i documenti, esegui la ricerca vettoriale sui contenuti e genera risposte riassuntive alle domande in linguaggio naturale utilizzando i modelli Gemini, tutto all'interno di BigQuery. Per un notebook che illustra questo scenario, vedi Creare un'applicazione di ricerca vettoriale utilizzando BigQuery DataFrames.
- Consigli sui prodotti sostitutivi o sui prodotti corrispondenti: migliora le applicazioni di e-commerce suggerendo alternative di prodotti in base al comportamento dei clienti e alla similarità dei prodotti.
- Analisi dei log: aiuta i team a eseguire il triage proattivo delle anomalie nei log e ad accelerare le indagini. Puoi anche utilizzare questa funzionalità per arricchire il contesto degli LLM, al fine di migliorare i flussi di lavoro di rilevamento delle minacce, analisi forense e risoluzione dei problemi. Per un notebook che illustra questo scenario, vedi Rilevamento di anomalie dei log e analisi con embedding di testo + ricerca vettoriale di BigQuery.
- Clustering e targeting: segmenta i segmenti di pubblico con precisione. Ad esempio, una catena di ospedali potrebbe raggruppare i pazienti utilizzando note in linguaggio naturale e dati strutturati oppure un marketer potrebbe scegliere come target gli annunci in base all'intenzione della query. Per un notebook che illustra questo scenario, vedi Create-Campaign-Customer-Segmentation.
- Risoluzione delle entità e deduplicazione: pulisci e consolida i dati. Ad esempio, una società pubblicitaria potrebbe deduplicare i record di informazioni che consentono l'identificazione personale (PII) oppure una società immobiliare potrebbe identificare gli indirizzi postali corrispondenti.
Genera embedding
Le sezioni seguenti descrivono le funzioni che BigQuery offre per aiutarti a generare o utilizzare gli embedding.
Genera singoli embedding
Puoi utilizzare la
AI.EMBED funzione
con i modelli di embedding di Vertex AI per generare un singolo embedding
dell'input.
La funzione AI.EMBED supporta i seguenti tipi di input:
- Dati di testo.
- Dati immagine rappresentati da
ObjectRefvalori. - Dati immagine rappresentati da
ObjectRefRuntimevalori.
Genera una tabella di embedding
Puoi utilizzare i
AI.GENERATE_EMBEDDING
per creare una tabella con gli embedding di tutti i dati in una colonna della tua
tabella di input. Per tutti i tipi di modelli supportati, AI.GENERATE_EMBEDDING
funziona con i dati strutturati nelle
tabelle standard. Per i modelli di embedding multimodali, AI.GENERATE_EMBEDDING funziona anche con i contenuti visivi
delle colonne delle tabelle standard
che contengono valori ObjectRef,
o delle tabelle di oggetti.
Per i modelli remoti, tutte le inferenze vengono eseguite in Vertex AI. Per gli altri tipi di modelli, tutte le inferenze vengono eseguite in BigQuery. I risultati vengono archiviati in BigQuery.
Utilizza i seguenti argomenti per provare la generazione di embedding in BigQuery ML:
- Genera testo,
immagini, o
video utilizzando la
AI.GENERATE_EMBEDDINGfunzione. - Genera ed esegui ricerche di embedding multimodali
- Esegui la ricerca semantica e la retrieval-augmented generation
Generazione autonoma di embedding
Puoi utilizzare la generazione autonoma di embedding per semplificare il processo di creazione, manutenzione ed esecuzione di query sugli embedding. BigQuery gestisce una colonna di embedding nella tabella in base a una colonna di origine. Quando aggiungi o modifichi i dati nella colonna di origine, BigQuery genera o aggiorna automaticamente la colonna di embedding per questi dati utilizzando un modello di embedding di Vertex AI. Questa funzionalità è utile se vuoi che BigQuery gestisca gli embedding quando i dati di origine vengono aggiornati regolarmente.
Cerca
Sono disponibili le seguenti funzioni di ricerca:
VECTOR_SEARCH: esegui una ricerca vettoriale utilizzando SQL.AI.SEARCH(anteprima): cerca i risultati vicini a una stringa che fornisci. Puoi utilizzare questa funzione se nella tabella è abilitata la generazione autonoma di embedding.AI.SIMILARITY: confronta due input calcolando la similarità del coseno tra i relativi embedding. Questa funzione è utile se vuoi eseguire un numero ridotto di confronti e non hai precalcolato gli embedding. Devi utilizzareVECTOR_SEARCHquando le prestazioni sono fondamentali e stai lavorando con un numero elevato di embedding. Confronta le loro funzionalità per scegliere la funzione migliore per il tuo caso d'uso.
Facoltativamente, puoi creare un indice vettoriale utilizzando l'
istruzione
CREATE VECTOR INDEX.
Quando viene utilizzato un indice vettoriale, le funzioni VECTOR_SEARCH e AI.SEARCH utilizzano
la tecnica di ricerca del vicino più prossimo approssimativo
per migliorare le prestazioni della ricerca vettoriale, con il compromesso di
ridurre
il richiamo
e quindi restituire risultati più approssimativi. Senza un indice vettoriale, queste
funzioni utilizzano
la ricerca a forza bruta per
misurare la distanza per ogni record. Puoi anche scegliere di utilizzare la forza bruta per ottenere risultati esatti anche quando è disponibile un indice vettoriale.
Prezzi
Le funzioni VECTOR_SEARCH e AI.SEARCH e l'CREATE VECTOR INDEX
istruzione utilizzano
i prezzi di calcolo di BigQuery.
Funzioni
VECTOR_SEARCHeAI.SEARCH: ti viene addebitato il costo della ricerca di similarità, utilizzando i prezzi on demand o delle versioni.- On demand: ti viene addebitato l'importo dei byte analizzati nella tabella di base, nell'indice e nella query di ricerca.
Prezzi delle versioni: ti vengono addebitati gli slot necessari per completare il job nella versione della prenotazione. I calcoli di similarità più grandi e complessi comportano costi maggiori.
Istruzione
CREATE VECTOR INDEX: non sono previsti addebiti per l'elaborazione necessaria per creare e aggiornare gli indici vettoriali, a condizione che la dimensione totale dei dati della tabella indicizzata sia inferiore al limite per organizzazione. Per supportare l'indicizzazione oltre questo limite, devi fornire la tua prenotazione per la gestione dei job di gestione degli indici.
Anche l'archiviazione è un aspetto da considerare per gli embedding e gli indici. La quantità di byte archiviati come embedding e indici è soggetta a costi di archiviazione attiva.
- Gli indici vettoriali comportano costi di archiviazione quando sono attivi.
- Puoi trovare la dimensione di archiviazione dell'indice utilizzando la
INFORMATION_SCHEMA.VECTOR_INDEXESvista. Se la copertura dell'indice vettoriale non è ancora al 100%, ti viene comunque addebitato il costo di ciò che è stato indicizzato. Puoi controllare la copertura dell'indice utilizzando la vistaINFORMATION_SCHEMA.VECTOR_INDEXES.
Quote e limiti
Per ulteriori informazioni, consulta Limiti degli indici vettoriali e Limiti delle funzioni AI generative.
Limitazioni
Le query che contengono la funzione VECTOR_SEARCH o AI.SEARCH non vengono
accelerate da
BigQuery BI Engine.
Passaggi successivi
- Scopri di più sulla creazione di un indice vettoriale.
- Scopri come eseguire una ricerca vettoriale utilizzando la
VECTOR_SEARCHfunzione. - Scopri come eseguire la ricerca semantica utilizzando la
AI.SEARCHfunzione. - Scopri di più sulla generazione autonoma di embedding.
- Prova il tutorial Cercare gli embedding con la ricerca vettoriale per scoprire come creare un indice vettoriale e poi eseguire una ricerca vettoriale degli embedding con e senza l'indice.
Prova il tutorial Eseguire la ricerca semantica e la retrieval-augmented generation per scoprire come eseguire le seguenti attività:
- Genera embedding di testo.
- Crea un indice vettoriale sugli embedding.
- Esegui una ricerca vettoriale con gli embedding per cercare testo simile.
- Esegui la retrieval-augmented generation (RAG) utilizzando i risultati della ricerca vettoriale per aumentare l'input del prompt e migliorare i risultati.
Prova il tutorial Analizzare i PDF in una pipeline di retrieval-augmented generation per scoprire come creare una pipeline RAG basata sui contenuti PDF analizzati.
Puoi anche eseguire ricerche vettoriali utilizzando BigQuery DataFrames in Python. Per un notebook che illustra questo approccio, vedi Creare un'applicazione di ricerca vettoriale utilizzando BigQuery DataFrames.