En las siguientes secciones se describe cómo configurar, crear, enumerar y eliminar tus índices.
Resumen del índice
Un índice es un archivo o archivos que contienen tus vectores de inserción. Estos vectores se crean a partir de grandes cantidades de datos que quieres implementar y consultar con Vector Search. Con la búsqueda de vectores, puedes crear dos tipos de índices, en función de cómo quieras actualizarlos con tus datos. Puede crear un índice diseñado para actualizaciones por lotes o un índice diseñado para transmitir sus actualizaciones.
Un índice de lote se usa cuando quieres actualizar tu índice en un lote con datos que se han almacenado durante un periodo determinado, como los sistemas que se procesan semanal o mensualmente. Un índice de streaming es aquel en el que quieres que los datos del índice se actualicen a medida que se añaden datos nuevos a tu almacén de datos. Por ejemplo, si tienes una librería y quieres mostrar el nuevo inventario online lo antes posible. Es importante que elijas el tipo adecuado, ya que la configuración y los requisitos son diferentes.
Configurar parámetros de índice
Antes de crear un índice, configure los parámetros del índice.
Por ejemplo, crea un archivo llamado index_metadata.json
:
{ "contentsDeltaUri": "gs://BUCKET_NAME/path", "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "shardSize": "SHARD_SIZE_MEDIUM", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 5000, "fractionLeafNodesToSearch": 0.03 } } } }
Puedes consultar la definición de cada uno de estos campos en Parámetros de configuración de índice.
Crear un índice
Tamaño del índice
Los datos de índice se dividen en partes iguales llamadas particiones para su procesamiento. Cuando creas un índice, debes especificar el tamaño de los fragmentos que se van a usar. Los tamaños admitidos son los siguientes:
SHARD_SIZE_SMALL
: 2 GiB por fragmento.SHARD_SIZE_MEDIUM
: 20 GiB por fragmento.SHARD_SIZE_LARGE
: 50 GiB por fragmento.
Los tipos de máquina que puedes usar para implementar tu índice (con endpoints públicos o con endpoints de VPC) dependen del tamaño de los fragmentos del índice. En la siguiente tabla se muestran los tamaños de partición que admite cada tipo de máquina:
Tipo de máquina | SHARD_SIZE_SMALL |
SHARD_SIZE_MEDIUM |
SHARD_SIZE_LARGE |
---|---|---|---|
n1-standard-16 |
|||
n1-standard-32 |
|||
e2-standard-2 |
(predeterminado) | ||
e2-standard-16 |
(predeterminado) | ||
e2-highmem-16 |
(predeterminado) | ||
n2d-standard-32 |
Para saber cómo afectan el tamaño de los fragmentos y el tipo de máquina a los precios, consulta la página de precios de Vertex AI. Para saber cómo influye el tamaño de los fragmentos en el rendimiento, consulta Parámetros de configuración que influyen en el rendimiento.
Crear un índice para la actualización por lotes
Sigue estas instrucciones para crear e implementar tu índice. Si aún no tienes las inserciones, puedes ir a la sección Crear un índice de lote vacío. Con esta opción, no se necesitan datos de inserciones en el momento de crear el índice.
Para crear un índice, sigue estos pasos:
gcloud
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- LOCAL_PATH_TO_METADATA_FILE: ruta local al archivo de metadatos.
- INDEX_NAME: nombre visible del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: tu Google Cloud ID de proyecto.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud ai indexes create \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --display-name=INDEX_NAME \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes create ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --display-name=INDEX_NAME ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes create ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --display-name=INDEX_NAME ^ --region=LOCATION ^ --project=PROJECT_ID
Deberías recibir una respuesta similar a la siguiente:
You can poll for the status of the operation for the response to include "done": true. Use the following example to poll the status. $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1
Consulta gcloud ai operations para obtener más información sobre el comando describe
.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- INPUT_DIR: la ruta del directorio de Cloud Storage del contenido del índice.
- INDEX_NAME: nombre visible del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: tu Google Cloud ID de proyecto.
- PROJECT_NUMBER: el número de proyecto que se genera automáticamente.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Cuerpo JSON de la solicitud:
{ "display_name": "INDEX_NAME", "metadata": { "contentsDeltaUri": "INPUT_DIR", "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 500, "leafNodesToSearchPercent": 7 } } } } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-08T01:21:10.147035Z", "updateTime": "2022-01-08T01:21:10.147035Z" } } }
Terraform
En el siguiente ejemplo se usa el recurso de Terraform google_vertex_ai_index
para crear un índice de actualizaciones por lotes.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Consola
Sigue estas instrucciones para crear un índice para las actualizaciones por lotes.
- En la sección Vertex AI de la Google Cloud consola, ve a la sección Desplegar y usar. Selecciona Vector Search.
- Haz clic en Crear índice para abrir el panel Índice. Aparecerá el panel Crear un índice.
- En el campo Nombre visible, indica un nombre único para identificar tu índice.
- En el campo Descripción, indica para qué sirve el índice.
- En el campo Región, selecciona una región en el menú desplegable.
- En el campo Cloud Storage, busca y selecciona la carpeta de Cloud Storage en la que se almacenan tus datos vectoriales.
- En el menú desplegable Tipo de algoritmo, seleccione el tipo de algoritmo que Búsqueda vectorial usa para realizar búsquedas eficientes. Si selecciona el algoritmo treeAh, introduzca el número aproximado de vecinos.
- En el campo Dimensiones, introduzca el número de dimensiones de sus vectores de entrada.
- En el campo Método de actualización, seleccione Lote.
- En el campo Tamaño de fragmento, seleccione el tamaño de fragmento que quiera en el menú desplegable.
- Haz clic en Crear. El nuevo índice aparecerá en la lista de índices cuando esté listo. Nota: El tiempo de compilación puede tardar hasta una hora en completarse.
Crear un índice de lote vacío
Para crear y desplegar tu índice de inmediato, puedes crear un índice de lote vacío. Con esta opción, no se necesitan datos de inserciones en el momento de crear el índice.
Para crear un índice vacío, la solicitud es casi idéntica a la de crear un índice para actualizaciones por lotes. La diferencia es que eliminas el campo contentsDeltaUri
, ya que no vas a vincular ninguna ubicación de datos. Aquí tienes un ejemplo de índice de lote vacío:
Ejemplo de solicitud de índice vacía
{ "display_name": INDEX_NAME, "indexUpdateMethod": "BATCH_UPDATE", "metadata": { "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 500, "fractionLeafNodesToSearch": 0.07 } } } } }
Crear un índice para las actualizaciones en streaming
Sigue estas instrucciones para crear e implementar tu índice de streaming. Si aún no tienes las inserciones, ve a Crear un índice vacío para las actualizaciones de streaming. Con esta opción, no se necesitan datos de inserciones en el momento de crear el índice.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- INDEX_NAME: nombre visible del índice.
- DESCRIPTION: una descripción del índice.
- INPUT_DIR: la ruta del directorio de Cloud Storage del contenido del índice.
- DIMENSIONS: número de dimensiones del vector de inserción.
- PROJECT_ID: tu Google Cloud ID de proyecto.
- PROJECT_NUMBER: el número de proyecto que se genera automáticamente.
- LOCATION: la región en la que usas Vertex AI.
Método HTTP y URL:
POST https://ENDPOINT-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Cuerpo JSON de la solicitud:
{ displayName: "INDEX_NAME", description: "DESCRIPTION", metadata: { contentsDeltaUri: "INPUT_DIR", config: { dimensions: "DIMENSIONS", approximateNeighborsCount: 150, distanceMeasureType: "DOT_PRODUCT_DISTANCE", algorithmConfig: {treeAhConfig: {leafNodeEmbeddingCount: 10000, leafNodesToSearchPercent: 2}} }, }, indexUpdateMethod: "STREAM_UPDATE" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateIndexOperationMetadata", "genericMetadata": { "createTime": "2023-12-05T23:17:45.416117Z", "updateTime": "2023-12-05T23:17:45.416117Z", "state": "RUNNING", "worksOn": [ "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID" ] } } }
Terraform
En el siguiente ejemplo se usa el recurso de Terraform google_vertex_ai_index
para crear un índice de actualizaciones en streaming.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Consola
Sigue estas instrucciones para crear un índice de actualizaciones en streaming en la Google Cloud consola.
Para crear un índice disponible para las actualizaciones en streaming, debes seguir los mismos pasos que para configurar un índice de actualización por lotes, pero debes definir indexUpdateMethod
como STREAM_UPDATE
.
- En la sección Vertex AI de la Google Cloud consola, ve a la sección Desplegar y usar. Selecciona Búsqueda vectorial.
- Haz clic en Crear índice para abrir el panel Índice. Aparecerá el panel Crear un índice.
- En el campo Nombre visible, indica un nombre único para identificar tu índice.
- En el campo Descripción, indica para qué sirve el índice.
- En el campo Región, selecciona una región en el menú desplegable.
- En el campo Cloud Storage, busca y selecciona la carpeta de Cloud Storage en la que se almacenan tus datos vectoriales.
- En el menú desplegable Tipo de algoritmo, selecciona el tipo de algoritmo que Vector Search usará para realizar la búsqueda. Si selecciona el algoritmo treeAh, introduzca el número aproximado de vecinos.
- En el campo Dimensiones, introduzca el número de dimensiones de los vectores de entrada.
- En el campo Método de actualización, selecciona Stream.
- En el campo Tamaño de fragmento, seleccione el tamaño que quiera en el menú desplegable.
- Haz clic en Crear. El nuevo índice aparecerá en la lista de índices cuando esté listo. Nota: El tiempo de compilación puede tardar hasta una hora en completarse.
Crear un índice vacío para las actualizaciones en streaming
Para crear y desplegar tu índice de inmediato, puedes crear un índice vacío para la transmisión. Con esta opción, no se necesitan datos de inserciones en el momento de crear el índice.
Para crear un índice vacío, la solicitud es casi idéntica a la de crear un índice para la transmisión. La diferencia es que eliminas el campo contentsDeltaUri
, ya que no vas a vincular ninguna ubicación de datos. Aquí tienes un ejemplo de índice de streaming vacío:
Ejemplo de solicitud de índice vacía
{ "display_name": INDEX_NAME, "indexUpdateMethod": "STREAM_UPDATE", "metadata": { "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 500, "leafNodesToSearchPercent": 7 } } } } }
Mostrar índices
gcloud
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- INDEX_NAME: nombre visible del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: tu Google Cloud ID de proyecto.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud ai indexes list \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes list ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes list ^ --region=LOCATION ^ --project=PROJECT_ID
Deberías recibir una respuesta similar a la siguiente:
You can poll for the status of the operation for the response to include "done": true. Use the following example to poll the status. $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1
Consulta gcloud ai operations para obtener más información sobre el comando describe
.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- INDEX_NAME: nombre visible del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: tu Google Cloud ID de proyecto.
- PROJECT_NUMBER: el número de proyecto que se genera automáticamente.
Método HTTP y URL:
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "indexes": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID", "displayName": "INDEX_NAME", "metadataSchemaUri": "gs://google-cloud-aiplatform/schema/matchingengine/metadata/nearest_neighbor_search_1.0.0.yaml", "metadata": { "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "featureNormType": "NONE", "algorithmConfig": { "treeAhConfig": { "maxLeavesToSearch": 50, "leafNodeCount": 10000 } } } }, "etag": "AMEw9yNU8YX5IvwuINeBkVv3yNa7VGKk11GBQ8GkfRoVvO7LgRUeOo0qobYWuU9DiEc=", "createTime": "2020-11-08T21:56:30.558449Z", "updateTime": "2020-11-08T22:39:25.048623Z" } ] }
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Consola
Sigue estas instrucciones para ver una lista de tus índices.
- En la sección Vertex AI de la Google Cloud consola, ve a la sección Desplegar y usar. Selecciona Vector Search.
- Se muestra una lista de tus índices activos.
Ajustar el índice
Para optimizar el índice, es necesario definir los parámetros de configuración que influyen en el rendimiento de los índices implementados, especialmente en la sensibilidad y la latencia. Estos parámetros se definen cuando crea el índice por primera vez. Puedes usar índices de fuerza bruta para medir la recuperación.
Parámetros de configuración que influyen en el rendimiento
Los siguientes parámetros de configuración se pueden definir al crear el índice y pueden influir en la sensibilidad, la latencia, la disponibilidad y el coste al usar la búsqueda vectorial. Estas directrices se aplican a la mayoría de los casos. Sin embargo, siempre debes experimentar con tus configuraciones para asegurarte de que funcionan en tu caso práctico.
Para ver las definiciones de los parámetros, consulta Parámetros de configuración de índices.
Parámetro | Información | Impacto en el rendimiento |
---|---|---|
shardSize
|
Controla la cantidad de datos de cada máquina. Cuando elijas el tamaño de los fragmentos, calcula el tamaño que tendrá tu conjunto de datos en el futuro. Si el tamaño de tu conjunto de datos tiene un límite superior, elige el tamaño de fragmento adecuado para adaptarlo. Si no hay un límite superior o si tu caso práctico es extremadamente sensible a la variabilidad de la latencia, te recomendamos que elijas un tamaño de fragmento grande. |
Si configura un número mayor de fragmentos más pequeños, se procesará un número mayor de resultados candidatos durante la búsqueda. Tener más particiones puede afectar al rendimiento de las siguientes formas:
Si configura un número menor de particiones más grandes, se procesarán menos resultados candidatos durante la búsqueda. Si hay menos particiones, el rendimiento puede verse afectado de las siguientes formas:
|
distanceMeasureType
|
Determina el algoritmo que se usa para calcular la distancia entre los puntos de datos y el vector de consulta. |
Los siguientes ajustes de
|
leafNodeEmbeddingCount
|
El número de inserciones de cada nodo hoja. De forma predeterminada, este número es 1000.
Por lo general, cambiar el valor de |
Aumentar el número de inserciones de cada nodo hoja puede reducir la latencia, pero también la calidad de la recuperación. Puede afectar al rendimiento de las siguientes formas:
Reducir el número de inserciones de cada nodo hoja puede afectar al rendimiento de las siguientes formas:
|
Usar un índice de fuerza bruta para medir el recuerdo
Para obtener los vecinos más cercanos exactos, usa índices con el algoritmo de fuerza bruta. El algoritmo de fuerza bruta proporciona una cobertura del 100% a costa de una latencia mayor. Usar un índice de fuerza bruta para medir la recuperación no suele ser una buena opción para el servicio de producción, pero puede resultarte útil para evaluar la recuperación de varias opciones de indexación sin conexión.
Para crear un índice con el algoritmo de fuerza bruta, especifica
brute_force_config
en los metadatos del índice:
curl -X POST -H "Content-Type: application/json" \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/indexes \ -d '{ displayName: "'${DISPLAY_NAME}'", description: "'${DESCRIPTION}'", metadata: { contentsDeltaUri: "'${INPUT_DIR}'", config: { dimensions: 100, approximateNeighborsCount: 150, distanceMeasureType: "DOT_PRODUCT_DISTANCE", featureNormType: "UNIT_L2_NORM", algorithmConfig: { bruteForceConfig: {} } }, }, }'
Eliminar un índice
gcloud
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- INDEX_ID: ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: tu Google Cloud ID de proyecto.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud ai indexes delete INDEX_ID \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes delete INDEX_ID ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes delete INDEX_ID ^ --region=LOCATION ^ --project=PROJECT_ID
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- INDEX_ID: ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: tu Google Cloud ID de proyecto.
- PROJECT_NUMBER: el número de proyecto que se genera automáticamente.
Método HTTP y URL:
DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata", "genericMetadata": { "createTime": "2022-01-08T02:35:56.364956Z", "updateTime": "2022-01-08T02:35:56.364956Z" } }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Consola
Sigue estas instrucciones para eliminar uno o varios índices.
- En la sección Vertex AI de la Google Cloud consola, ve a la sección Desplegar y usar. Selecciona Vector Search.
- Se muestra una lista de tus índices activos.
- Para eliminar un índice, ve al menú de opciones que está en la misma fila que el índice y selecciona Eliminar.
Siguientes pasos
- Consulta información sobre los parámetros de configuración del índice.
- Consulta cómo desplegar y gestionar endpoints de índice públicos.
- Consulta cómo desplegar y gestionar endpoints de índice en una red de VPC.
- Consulta cómo actualizar y volver a crear tu índice.
- Consulta cómo monitorizar un índice.