Introduzione agli embedding e alla ricerca vettoriale
Questo documento fornisce una panoramica degli incorporamenti 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 di 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 embedding per codificare la semantica di queste entità per 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 embedding per trovare gli elementi semanticamente più simili.
Questo concetto di similarità e distanza semantica 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 vicini 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 degli embedding, più sono semanticamente simili e maggiore è la distanza, maggiore è la dissimilarità semantica.
Casi d'uso
La combinazione di generazione di incorporamenti e ricerca vettoriale consente molti casi d'uso interessanti. Alcuni possibili casi d'uso sono i seguenti:
- Retrieval-Augmented Generation (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 in BigQuery. Per un notebook che illustra questo scenario, consulta Crea 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, scienza digitale forense e risoluzione dei problemi. Per un notebook che illustra questo scenario, consulta 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 embedding di Gemini Enterprise Agent Platform per generare un unico embedding
del tuo input.
La funzione AI.EMBED supporta i seguenti tipi di input:
- Dati di testo.
- Dati immagine rappresentati da valori
ObjectRef.
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 embedding
multimodali, 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 Agent Platform. 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 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 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 embedding per questi dati utilizzando un modello di embedding di Agent Platform. 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: Confronta due input calcolando la similarità del coseno tra i relativi incorporamenti. 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 quella più adatta al tuo caso d'uso.
Se vuoi, 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 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 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 addebitato il costo della ricerca per 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 versioni: ti vengono addebitati gli slot necessari per completare il job all'interno della tua versione di 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.
Lo spazio di archiviazione è un fattore da considerare anche per gli incorporamenti e gli indici. La quantità di byte memorizzati come incorporamenti e indici è soggetta ai costi dell'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% di copertura, ti verrà comunque addebitato il costo 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 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 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 Retrieval-Augmented Generation per imparare a svolgere le seguenti attività:
- Genera incorporamenti di testo.
- Crea un indice vettoriale sugli embedding.
- Esegui una ricerca vettoriale con gli embedding per cercare testi simili.
- Esegui la generazione Retrieval-Augmented Generation (RAG) utilizzando i risultati della ricerca vettoriale per migliorare l'input del prompt e i risultati.
Prova l'esercitazione Analizzare 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.