Introduzione agli embedding e alla ricerca vettoriale

Questo documento fornisce una panoramica degli embedding e della ricerca vettoriale in BigQuery. Vector Search è una tecnica per confrontare oggetti simili utilizzando gli embedding e viene utilizzato per potenziare i prodotti Google, tra cui Ricerca Google, YouTube e Google Play. Puoi utilizzare la ricerca vettoriale per eseguire ricerche semantiche su larga scala o puoi eseguire una ricerca ibrida che combina una ricerca semantica con una ricerca lessicale (per parole chiave). Quando utilizzi gli indici vettoriali con Vector Search, puoi sfruttare tecnologie di base come l'indicizzazione di file invertiti (IVF) e l'algoritmo ScaNN.

Vector Search si basa sugli embedding. Gli embedding 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à, in modo da semplificarne l'analisi 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 più simili dal punto di vista semantico.

Questo concetto di somiglianza e distanza semantica in uno spazio di embedding è dimostrato visivamente quando si considera come potrebbero essere tracciati i 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. Analogamente, termini come auto, camion e il termine più generico veicolo formerebbero un altro cluster. come mostrato nell'immagine seguente:

I concetti semanticamente simili, come _gatto_, _cane_ e _leone_ o _auto_, _camion_ e _veicolo_, sono vicini nello spazio di embedding.

Puoi vedere che i cluster di animali e veicoli sono posizionati molto distanti tra loro. La separazione tra i gruppi illustra il principio secondo cui più gli oggetti sono vicini nello spazio di embedding, più sono semanticamente simili, mentre distanze maggiori indicano una maggiore dissimiglianza semantica.

Casi d'uso

La combinazione di generazione di embedding e Vector Search consente molti casi d'uso interessanti. Di seguito sono riportati alcuni possibili casi d'uso:

  • Retrieval-augmented generation (RAG): analizza i documenti, esegui la Vector Search 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, consulta Crea un'applicazione Vector Search utilizzando BigQuery DataFrames.
  • Consigliare 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 valutare in modo proattivo le anomalie nei log e ad accelerare le indagini. Puoi anche utilizzare questa funzionalità per arricchire il contesto per gli LLM, in modo da migliorare i flussi di lavoro di rilevamento delle minacce, analisi forense e risoluzione dei problemi. Per un notebook che illustra questo scenario, consulta Rilevamento di anomalie dei log e indagine con text embedding + 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 professionista del marketing potrebbe scegliere il targeting degli annunci in base all'intent della query. Per un notebook che illustra questo scenario, consulta Create-Campaign-Customer-Segmentation.
  • Risoluzione delle entità e deduplicazione: pulisci e consolida i dati. Ad esempio, un'azienda pubblicitaria potrebbe deduplicare i record di informazioni che consentono l'identificazione personale (PII) oppure un'agenzia immobiliare potrebbe identificare gli indirizzi postali corrispondenti.

Genera embedding

Le sezioni seguenti descrivono le funzioni offerte da BigQuery per aiutarti a generare o utilizzare gli embedding.

Genera singoli embedding

Puoi utilizzare la funzione AI.EMBED con i modelli di embedding di Gemini Enterprise Agent Platform per generare un singolo embedding del tuo input.

La funzione AI.EMBED supporta i seguenti tipi di input:

  • Dati di testo.
  • Dati delle immagini rappresentati da valori ObjectRef.

Genera una tabella di embedding

Puoi utilizzare AI.GENERATE_EMBEDDING per creare una tabella con gli embedding per tutti i dati di una colonna della tabella di input. Per tutti i tipi di modelli supportati, AI.GENERATE_EMBEDDING funziona con dati strutturati in 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, l'inferenza avviene in Agent Platform. Per altri tipi di modelli, l'inferenza avviene interamente 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, gestione e query degli 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 Agent Platform. Questa operazione è utile se vuoi consentire a BigQuery di gestire gli embedding quando i dati di origine vengono aggiornati regolarmente.

Puoi utilizzare le seguenti funzioni di ricerca per eseguire una ricerca vettoriale semantica o una ricerca ibrida che combina una ricerca semantica con una ricerca per parole chiave lessicali:

  • VECTOR_SEARCH: esegui una ricerca vettoriale semantica o una ricerca ibrida utilizzando SQL.

  • AI.SEARCH: esegui una ricerca semantica o ibrida per trovare risultati vicini a una stringa che fornisci. Puoi utilizzare questa funzione se nella tabella è abilitata la generazione di embedding autonomi.

  • 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 alcun embedding. Dovresti utilizzare VECTOR_SEARCH quando le prestazioni sono fondamentali e lavori con un numero elevato di embedding. Confronta le loro funzionalità per scegliere quella 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 approssimato 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 di 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.

Gestisci il ritiro del modello di embedding

Quando un modello di embedding viene ritirato, devi eseguire la migrazione dei tuoi workflow a un modello sostitutivo supportato prima che il modello ritirato venga disattivato. I seguenti modelli hanno una data di ritiro fissata al 1° aprile 2027:

  • text-embedding-005
  • text-embeding-004
  • text-multilingual-embedding-002
  • multimodalembedding@001

Per saperne di più sulle date di ritiro e sui modelli sostitutivi, consulta Versioni e ciclo di vita dei modelli.

Gli embedding generati da modelli diversi o da versioni diverse dello stesso modello esistono in spazi di embedding separati e sono generalmente incompatibili dal punto di vista matematico. Questa incompatibilità si applica anche quando i vettori hanno lo stesso numero di dimensioni. Il confronto di embedding di modelli diversi produce risultati di ricerca e somiglianza imprecisi.

Per eseguire la migrazione a un modello di embedding sostitutivo, completa i seguenti passaggi:

  1. Rigenera gli embedding nelle tabelle esistenti utilizzando il modello sostitutivo in modo che tutti gli embedding archiviati condividano lo stesso spazio di embedding.
    • Se utilizzi la funzione AI.EMBED o AI.GENERATE_EMBEDDING, aggiorna le query o i modelli remoti in modo da utilizzare il modello sostitutivo, quindi rigenera gli embedding della tabella.
    • Se utilizzi la generazione di embedding autonomi, elimina la colonna di embedding generata esistente e aggiungi una colonna di embedding generata che utilizza il modello sostitutivo.
  2. Aggiorna tutte le query o le pipeline che generano embedding al momento della ricerca in modo che utilizzino lo stesso modello sostitutivo degli embedding della tabella.
  3. Dopo aver rigenerato gli embedding in una tabella, ricrea o ricostruisci gli indici vettoriali nella colonna di embedding.

Prezzi

Le funzioni VECTOR_SEARCH e AI.SEARCH e l'istruzione CREATE VECTOR INDEX utilizzano i prezzi di computing di BigQuery.

  • Funzioni VECTOR_SEARCH e AI.SEARCH: ti viene addebitato il costo della ricerca per somiglianza, utilizzando i prezzi on demand o delle versioni.

    • On demand: ti viene addebitato l'importo per i byte scansionati nella tabella di base, nell'indice e nella query di ricerca.
    • Prezzi di Editions: ti vengono addebitati gli slot necessari per completare il job all'interno della versione della prenotazione. I calcoli di somiglianza più grandi e complessi comportano costi maggiori.

  • Istruzione CREATE VECTOR INDEX: non è previsto alcun addebito per l'elaborazione richiesta 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 fattore da considerare per gli embedding e gli indici. La quantità di byte archiviati come embedding e indici è soggetta ai costi di archiviazione attiva.

  • Gli indici vettoriali generano costi di archiviazione quando sono attivi.
  • Puoi trovare le dimensioni dello spazio di archiviazione dell'indice utilizzando la vista INFORMATION_SCHEMA.VECTOR_INDEXES. Se l'indice vettoriale non ha ancora una copertura del 100%, ti verranno comunque addebitati i costi per tutto ciò che è stato indicizzato. Puoi controllare la copertura dell'indice utilizzando la visualizzazione INFORMATION_SCHEMA.VECTOR_INDEXES.

Quote e limiti

Per saperne di più, consulta Limiti degli indici vettoriali e Limiti delle funzioni di AI generativa.

Limitazioni

Passaggi successivi