En esta guía, se explica cómo importar datos de índice de BigQuery a Vector Search con la API de ImportIndex, lo que optimiza el proceso de propagación de los índices de Vector Search directamente desde tus tablas de BigQuery que contienen embeddings de vectores.
Cómo preparar datos de BigQuery para la importación
Antes de importar datos de índice, tu tabla de BigQuery debe tener las siguientes columnas:
Identificadores únicos: Esta columna contiene identificadores únicos para cada punto de datos. Se asigna al campo
iden Vector Search.Embeddings de vectores: Esta columna contiene los embeddings de vectores, representados como un campo
FLOATrepetido. Se asigna al campo de embedding en Vector Search.
De manera opcional, puedes incluir las siguientes columnas:
Restricciones: Son columnas para restricciones numéricas y de cadenas, que te permiten filtrar tus datos durante las búsquedas.
Metadatos: Son columnas de metadatos que se mostrarán con los resultados de la consulta del índice de Vector Search.
Cómo preparar el índice de Vector Search para la importación
Una vez que hayas preparado tus datos de BigQuery, asegúrate de que el índice de Vector Search de destino cumpla con lo siguiente:
Existe en Vector Search dentro de tu proyecto: Este índice sirve como destino para tus datos importados. El índice debe crearse dentro de tu proyecto.
Está configurado para reemplazar o agregar datos: Durante el proceso de importación, tienes la opción de reemplazar los datos existentes dentro de tu índice de Vector Search o agregar los datos importados de BigQuery. El reemplazo reemplaza los puntos de datos actuales por los datos importados. La adición agrega los datos nuevos al índice existente.
Coincide con la dimensionalidad: La dimensionalidad de los embeddings almacenados en tus datos de BigQuery debe ser idéntica a la dimensionalidad configurada para tu índice de Vector Search.
Cómo especificar el ImportIndexRequest
Antes de importar datos de BigQuery, crea un objeto ImportIndexRequest que especifique el índice de destino, si se deben reemplazar los datos existentes y la configuración para conectarse a BigQuery. Envía este objeto de solicitud a la API de ImportIndex.
El siguiente es un ejemplo de un 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: Es el nombre completo del recurso del índice de Vector Search en el que deseas importar los datos.isCompleteOverwrite: Es un valor booleano que indica si se deben reemplazar los datos existentes en el índice. Establécelo entruepara reemplazar los datos existentes.config: Contiene la configuración de la fuente de BigQuery.bigquerySourceConfig: Especifica los detalles para conectarse a tu tabla de BigQuery.tablePath: Es la ruta de acceso completa a tu 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 Vector Search.idColumn: Es el nombre de la columna que contiene identificadores únicos.embeddingColumn: Es el nombre de la columna que contiene embeddings de vectores.restricts: (Opcional) Especifica las restricciones de cadenas.namespace: Es el espacio de nombres para la restricción.allowColumn: Es el array que contiene los nombres de las columnas para los valores permitidos de la restricción.denyColumn: Es el array que contiene los nombres de las columnas para los valores denegados de la restricción.numericRestricts: (Opcional) Especifica las restricciones numéricas.namespace: Es el espacio de nombres para la restricción numérica.value_column: Es el nombre de la columna que contiene valores numéricos.value_type: Es el tipo de valor numérico, comoINT,FLOAToDOUBLE.metadataColumns: (Opcional) Son los campos de metadatos que se incluirán con el embedding de atributos. Estos campos de metadatos se pueden recuperar de los resultados de la búsqueda de índice, pero no afectan la búsqueda en sí. Por ejemplo, no se puede realizar el filtrado en los campos de metadatos.
Cómo ejecutar la importación
Una vez que hayas creado un ImportIndexRequest, envíalo al ImportIndex API
extremo. Esto activa el proceso de importación, que exporta datos de BigQuery y los transfiere a tu índice de Vector Search. ImportIndex muestra una operación de larga duración. Puedes usar el ID de operación para supervisar el progreso de la operación de importación.
Después de que se almacenan los datos importados, residen dentro de tu índice de Vector Search y no se distinguen de los datos transferidos con otros métodos. El índice se puede seguir administrando con las APIs estándar de Vector Search.
En la siguiente muestra de código, se muestra un resultado de la consulta con return_full_datapoint establecido en verdadero y la configuración del conector de BigQuery que especifica una restricción genre, una restricción numérica year 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
}
}