En esta guía se explica cómo importar datos de índice de BigQuery a la búsqueda de vectores con la API ImportIndex
, lo que agiliza el proceso de rellenar los índices de búsqueda de vectores directamente desde las tablas de BigQuery que contienen incrustaciones de vectores.
Preparar datos de BigQuery para importarlos
Antes de importar datos de índice, tu tabla de BigQuery debe tener las siguientes columnas:
Identificadores únicos: esta columna contiene identificadores únicos de cada punto de datos. Se asigna al campo
id
en la búsqueda vectorial.Inserciones de vectores: esta columna contiene las inserciones de vectores, representadas como un campo
FLOAT
repetido. Se asigna al campo de incrustación en la búsqueda de vectores.
También puede incluir las siguientes columnas:
Restricciones: se trata de columnas de restricciones de cadena y numéricas que te permiten filtrar los datos durante las búsquedas.
Metadatos: se trata de columnas de metadatos que se devuelven con los resultados de las consultas de índice de búsqueda vectorial.
Preparar un índice de Vector Search para importarlo
Una vez que hayas preparado tus datos de BigQuery, asegúrate de que el índice de búsqueda de vectores de destino:
Existe en la búsqueda vectorial de tu proyecto: este índice sirve como destino de los datos importados. El índice debe crearse en tu proyecto.
Se ha configurado para sobrescribir o añadir datos: durante el proceso de importación, puede sobrescribir los datos que ya haya en su índice de búsqueda vectorial o añadir los datos importados de BigQuery. Si sobrescribes los datos, los puntos de datos actuales se sustituirán por los importados. Al añadir datos, estos se incorporan al índice.
Coincide con la dimensionalidad: la dimensionalidad de las inserciones almacenadas en los datos de BigQuery debe ser idéntica a la dimensionalidad configurada para el índice de búsqueda de vectores.
Especificar el ImportIndexRequest
Antes de importar datos de BigQuery, crea un objeto ImportIndexRequest
que especifique el índice de destino, si quieres sobrescribir los datos y la configuración para conectarte a BigQuery. Envía este objeto de solicitud a la API ImportIndex
.
A continuación se muestra un ejemplo de ImportIndexRequest
en 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
: nombre completo del recurso del índice de búsqueda vectorial en el que quieras importar los datos.isCompleteOverwrite
: valor booleano que indica si se deben sobrescribir los datos del índice. Defina el valortrue
para sustituir los datos.config
: contiene la configuración de la fuente de BigQuery.bigquerySourceConfig
: especifica los detalles para conectarse a su tabla de BigQuery.tablePath
: ruta completa a la tabla de BigQuery en el formatobq://[PROJECT_ID].[DATASET_ID].[TABLE_ID]
.datapointFieldMapping
: asigna las columnas de tu tabla de BigQuery a los campos de la búsqueda vectorial.idColumn
: nombre de la columna que contiene los identificadores únicos.embeddingColumn
: nombre de la columna que contiene las inserciones de vectores.restricts
: (opcional) especifica las restricciones de cadena.namespace
: el espacio de nombres de la restricción.allowColumn
: la matriz que contiene los nombres de las columnas con los valores permitidos para la restricción.denyColumn
: la matriz que contiene los nombres de las columnas de los valores denegados de la restricción.numericRestricts
: (opcional) especifica restricciones numéricas.namespace
: el espacio de nombres de la restricción numérica.value_column
: nombre de la columna que contiene valores numéricos.value_type
: el tipo de valor numérico, comoINT
,FLOAT
oDOUBLE
.metadataColumns
: (opcional) campos de metadatos que se incluirán con la inserción de características. Estos campos de metadatos se pueden obtener de los resultados de búsqueda del índice, pero no afectan a la búsqueda en sí. Por ejemplo, no se pueden filtrar campos de metadatos.
Ejecutar la importación
Una vez que hayas creado un ImportIndexRequest
, envíalo al endpoint de la API ImportIndex
. De esta forma, se activa el proceso de importación, que exporta los datos de BigQuery y los inserta en tu índice de búsqueda vectorial. ImportIndex
devuelve una operación de larga duración. Puedes usar el ID de operación para monitorizar el progreso de la operación de importación.
Una vez que se almacenan los datos importados, se encuentran en tu índice de búsqueda vectorial y no se distinguen de los datos insertados con otros métodos. El índice se puede seguir gestionando con las APIs de búsqueda vectorial estándar.
En el siguiente ejemplo de código se muestra un resultado de consulta con return_full_datapoint
definido como true y la configuración del conector de BigQuery que especifica un genre
restrict, un year
numeric restrict y las columnas de metadatos title
y 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
}
}