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
idin Vector Search.Incorporamenti vettoriali: questa colonna contiene gli incorporamenti vettoriali, rappresentati come un campo
FLOATripetuto. 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 sutrueper 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,FLOAToDOUBLE.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
}
}