Questa guida spiega come importare i dati degli indici da BigQuery in
Vector Search con l'API ImportIndex
, semplificando
il processo di compilazione degli indici di Vector Search direttamente dalle
tabelle BigQuery che contengono incorporamenti vettoriali.
Preparare i dati di BigQuery per l'importazione
Prima di importare i dati dell'indice, la tabella BigQuery deve avere le seguenti colonne:
Identificatori univoci: questa colonna contiene identificatori univoci per ogni punto dati. È mappato al campo
id
in Vector Search.Incorporamenti vettoriali: questa colonna contiene gli incorporamenti vettoriali, rappresentati come un campo
FLOAT
ripetuto. Viene mappato al campo embedding in Vector Search.
In via facoltativa, puoi includere le seguenti colonne:
Limitazioni: si tratta di colonne per limitazioni numeriche e di stringa, che consentono di filtrare i dati durante le ricerche.
Metadati: si tratta di colonne di metadati da restituire con i risultati della query dell'indice di ricerca vettoriale.
Preparazione dell'indice Vector Search per l'importazione
Dopo aver preparato i dati BigQuery, assicurati che l'indice di ricerca vettoriale di destinazione:
Esiste in Vector Search all'interno del progetto: questo indice funge da destinazione per i dati importati. L'indice deve essere creato all'interno del progetto.
È impostato per sovrascrivere o aggiungere dati: durante il processo di importazione, hai la possibilità di sovrascrivere i dati esistenti all'interno dell'indice di ricerca vettoriale o di aggiungere i dati importati da BigQuery. La sovrascrittura sostituisce i punti dati attuali con i dati importati. L'aggiunta dei nuovi dati all'indice esistente.
Corrispondenza della dimensionalità: la dimensionalità degli incorporamenti archiviati nei dati BigQuery deve essere identica a quella configurata per l'indice di ricerca vettoriale.
Specifica del ImportIndexRequest
Prima di importare i dati da BigQuery, crea un oggetto ImportIndexRequest
che specifichi l'indice di destinazione, se sovrascrivere i dati esistenti e la configurazione per la connessione a BigQuery. Invia questo oggetto di richiesta all'API ImportIndex
.
Di seguito è riportato un esempio di ImportIndexRequest
in formato JSON:
{
"name": "projects/[PROJECT_ID]/locations/[LOCATION]/indexes/[INDEX_ID]",
"isCompleteOverwrite": true,
"config": {
"bigQuerySourceConfig": {
"tablePath": "bq://[PROJECT_ID].[DATASET_ID].[TABLE_ID]",
"datapointFieldMapping": {
"idColumn": "[ID_COLUMN_NAME]",
"embeddingColumn": "[EMBEDDING_COLUMN_NAME]",
"restricts": [
{
"namespace": "[RESTRICT_NAMESPACE]",
"allowColumn": ["[RESTRICT_ALLOW_COLUMN_NAME]"],
"denyColumn": ["[RESTRICT_DENY_COLUMN_NAME]"]
}
],
"numericRestricts": [
{
"namespace": "[RESTRICT_NAMESPACE]",
"valueColumn": "[RESTRICT_VALUE_COLUMN_NAME]",
"valueType": "INT"
}
],
"metadataColumns": ["METADATA_COLUMN1", "METADATA_COLUMN2", ...]
}
}
}
}
name
: il nome completo della risorsa dell'indice Vector Search in cui vuoi importare i dati.isCompleteOverwrite
: un valore booleano che indica se sovrascrivere i dati esistenti nell'indice. Imposta sutrue
per sostituire i dati esistenti.config
: contiene la configurazione dell'origine BigQuery.bigquerySourceConfig
: specifica i dettagli per la connessione alla tabella BigQuery.tablePath
: il percorso completo della tabella BigQuery nel formatobq://[PROJECT_ID].[DATASET_ID].[TABLE_ID]
.datapointFieldMapping
: mappa le colonne della tabella BigQuery ai campi di Vector Search.idColumn
: il nome della colonna contenente gli identificatori univoci.embeddingColumn
: il nome della colonna contenente gli incorporamenti vettoriali.restricts
: (facoltativo) specifica le restrizioni della stringa.namespace
: lo spazio dei nomi per la limitazione.allowColumn
: l'array contenente i nomi delle colonne per i valori consentiti per la restrizione.denyColumn
: l'array contenente i nomi delle colonne per i valori negati per la limitazione.numericRestricts
: (facoltativo) specifica le limitazioni numeriche.namespace
: lo spazio dei nomi per la limitazione numerica.value_column
: il nome della colonna contenente valori numerici.value_type
: il tipo di valore numerico, ad esempioINT
,FLOAT
oDOUBLE
.metadataColumns
: (facoltativo) i campi dei metadati da includere nell'incorporamento delle funzionalità. Questi campi di metadati possono essere recuperati dai risultati di ricerca dell'indice, ma non influiscono sulla ricerca stessa. Ad esempio, non è possibile eseguire il filtraggio sui campi dei metadati.
Esecuzione dell'importazione
Una volta creato un ImportIndexRequest
, invialo all'endpoint API ImportIndex
. Viene attivato il processo di importazione, che esporta i dati da BigQuery e li inserisce nell'indice di Vector Search. ImportIndex
restituisce un'operazione a lunga esecuzione. Puoi utilizzare l'ID operazione per monitorare l'avanzamento dell'operazione di importazione.
Una volta memorizzati, i dati importati risiedono nell'indice di Vector Search e non sono distinguibili da quelli inseriti con altri metodi. L'indice può continuare a essere gestito utilizzando le API Vector Search standard.
Il seguente esempio di codice mostra un risultato della query con
return_full_datapoint
impostato su true e la configurazione del connettore BigQuery
che specifica una restrizione genre
, una restrizione numerica year
e le colonne dei metadati title
e description
.
nearest_neighbors {
neighbors {
datapoint {
datapoint_id: "4"
feature_vector: 0.7
feature_vector: 0.8
restricts {
namespace: "genre"
allow_list: "Drama"
}
embedding_metadata {
title: "A Movie"
description: "The story of A Movie..."
}
crowding_tag {
crowding_attribute: "0"
}
numeric_restricts {
namespace: "year"
value_int: 1942
}
}
distance: 0.75
}
}