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 incorporamenti 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 tecnologie di base come l'indicizzazione dei file invertiti (IVF) e l'algoritmo ScaNN.
La ricerca vettoriale si basa sugli embedding. Gli incorporamenti sono vettori numerici ad alta dimensionalità che rappresentano una determinata entità, come un testo o un file audio. I modelli di machine learning (ML) utilizzano gli incorporamenti 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 suggerimento è misurare la distanza tra i vettori in uno spazio di incorporamento per trovare gli elementi semanticamente più simili.
Questo concetto di similarità semantica e distanza in uno spazio di embedding è dimostrato visivamente quando si considera come potrebbero essere tracciati diversi elementi. Ad esempio, termini come gatto, cane e leone, che rappresentano tutti tipi di animali, sono raggruppati in questo spazio a causa delle loro caratteristiche semantiche condivise. Allo stesso modo, termini come auto, camion e il termine più generico veicolo formerebbero un altro cluster. Ciò è mostrato nell'immagine seguente:
Puoi notare che i cluster di animali e veicoli sono posizionati molto distanti l'uno dall'altro. La separazione tra i gruppi illustra il principio secondo cui più gli oggetti sono vicini nello spazio di incorporamento, più sono simili dal punto di vista semantico e maggiore è la distanza, maggiore è la dissimilarità semantica.
Casi d'uso
La combinazione di generazione di embedding e ricerca vettoriale consente molti casi d'uso interessanti. Di seguito sono riportati alcuni possibili casi d'uso:
- Generazione aumentata dal recupero (RAG): analizza i documenti, esegui la ricerca vettoriale sui contenuti e genera risposte riepilogative a domande in linguaggio naturale utilizzando i modelli Gemini, il tutto all'interno di BigQuery. Per un notebook che illustra questo scenario, consulta Creare un'applicazione di ricerca vettoriale utilizzando BigQuery DataFrames.
- Consigli di prodotti sostitutivi o corrispondenti:migliora le applicazioni di e-commerce suggerendo alternative ai prodotti in base al comportamento dei clienti e alla somiglianza 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 per gli 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 Log Anomaly Detection & Investigation with Text Embeddings + BigQuery Vector Search.
- 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 professionista del marketing potrebbe scegliere come target gli annunci in base all'intento della query. Per un notebook che illustra questo scenario, vedi Create-Campaign-Customer-Segmentation.
- Risoluzione e deduplicazione delle entità:pulisci e consolida i dati. Ad esempio, una società pubblicitaria potrebbe deduplicare i record di informazioni che consentono l'identificazione personale (PII) o una società immobiliare potrebbe identificare indirizzi postali corrispondenti.
Genera embedding
Le sezioni seguenti descrivono le funzioni che BigQuery offre per aiutarti a generare o utilizzare gli incorporamenti.
Generare singoli incorporamenti
Puoi utilizzare la
funzione AI.EMBED
con i modelli di incorporamento Vertex AI per generare un singolo incorporamento
del tuo input.
La funzione AI.EMBED supporta i seguenti tipi di input:
- Dati di testo.
- Dati dell'immagine rappresentati da
valori
ObjectRef. (Anteprima) - Dati dell'immagine rappresentati da
valori
ObjectRefRuntime.
Generare una tabella di incorporamenti
Puoi utilizzare
AI.GENERATE_EMBEDDING
per creare una tabella con incorporamenti per tutti i dati di una colonna della
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 incorporamento multimodale, AI.GENERATE_EMBEDDING funziona anche con i contenuti visivi
delle colonne delle tabelle standard
che contengono valori ObjectRef
o delle tabelle degli oggetti.
Per i modelli remoti, tutta l'inferenza avviene in Vertex AI. Per gli altri tipi di modelli, tutta l'inferenza avviene in BigQuery. I risultati vengono memorizzati in BigQuery.
Utilizza i seguenti argomenti per provare la generazione di incorporamenti in BigQuery ML:
- Genera testo,
immagini o
video utilizzando la
funzione
AI.GENERATE_EMBEDDING. - Generare e cercare embedding multimodali
- Eseguire la ricerca semantica e la generazione aumentata dal recupero
Generazione autonoma di incorporamenti
Puoi utilizzare la generazione autonoma di incorporamenti per semplificare il processo di creazione, manutenzione ed esecuzione di query sugli incorporamenti. BigQuery gestisce una colonna di incorporamenti 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 incorporamento per questi dati utilizzando un modello di incorporamento Vertex AI. Questa opzione è utile se vuoi che BigQuery mantenga gli incorporamenti 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 risultati simili a una stringa che fornisci. Puoi utilizzare questa funzione se nella tabella è abilitata la generazione autonoma di incorporamenti.AI.SIMILARITY(Anteprima): 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 incorporamenti. Devi utilizzareVECTOR_SEARCHquando il rendimento è fondamentale e lavori con un numero elevato di incorporamenti. Confronta le loro funzionalità per scegliere la 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 Approximate Nearest Neighbor per migliorare il rendimento 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 esaustiva per
misurare la distanza per ogni record. Puoi anche scegliere di utilizzare la ricerca esaustiva per ottenere
risultati esatti anche quando è disponibile un indice vettoriale.
Prezzi
Le funzioni VECTOR_SEARCH e AI.SEARCH e l'istruzione CREATE VECTOR INDEX utilizzano i prezzi di BigQuery Compute.
Funzioni
VECTOR_SEARCHeAI.SEARCH: ti viene addebitata la ricerca di similarità utilizzando i prezzi delle edizioni o su richiesta.- On demand: ti viene addebitato l'importo dei byte scansionati nella tabella di base, nell'indice e nella query di ricerca.
Prezzi delle edizioni: ti vengono addebitati gli slot necessari per completare il job all'interno dell'edizione della prenotazione. Calcoli di similarità più grandi e complessi comportano costi maggiori.
Dichiarazione
CREATE VECTOR INDEX: non è previsto alcun costo 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 dell'indice.
Anche lo spazio di archiviazione è un aspetto da considerare per gli incorporamenti e gli indici. La quantità di byte memorizzati come incorporamenti e indici è soggetta ai costi di archiviazione attiva.
- Gli indici vettoriali comportano costi di archiviazione quando sono attivi.
- Puoi trovare le dimensioni dello spazio di archiviazione dell'indice utilizzando la
visualizzazione
INFORMATION_SCHEMA.VECTOR_INDEXES. Se l'indice vettoriale non ha ancora raggiunto il 100% della copertura, ti vengono comunque addebitati i costi per ciò che è stato indicizzato. Puoi controllare la copertura dell'indice utilizzando la visualizzazioneINFORMATION_SCHEMA.VECTOR_INDEXES.
Quote e limiti
Per saperne di più, consulta Limiti dell'indice vettoriale e Limiti delle funzioni di AI generativa.
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 funzione
VECTOR_SEARCH. - Scopri come eseguire la ricerca semantica utilizzando la
funzione
AI.SEARCH. - Scopri di più sulla generazione autonoma di incorporamenti.
- Prova il tutorial Cerca embedding con la ricerca vettoriale per scoprire come creare un indice vettoriale e poi eseguire una ricerca vettoriale di embedding con e senza l'indice.
Prova il tutorial Esegui la ricerca semantica e la generazione aumentata dal recupero per imparare a svolgere le seguenti attività:
- Generare embedding di testo.
- Crea un indice vettoriale sugli embedding.
- Esegui una ricerca vettoriale con gli embedding per cercare un testo simile.
- Esegui la generazione RAG (Retrieval-Augmented Generation) utilizzando i risultati della ricerca vettoriale per migliorare l'input del prompt e i risultati.
Prova l'esercitazione Analizza i PDF in una pipeline di generazione RAG (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, consulta Crea un'applicazione di ricerca vettoriale utilizzando BigQuery DataFrames.