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:

Concetti semanticamente simili, come _gatto_, _cane_ e _leone_, o _auto_, _camion_ e _veicolo_, sono vicini
nello spazio degli embedding.

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:

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:

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.

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 utilizzare VECTOR_SEARCH quando 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_SEARCH e AI.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_INDEXES vista. 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 vista INFORMATION_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