Los hosts on-premise pueden acceder a un endpoint de índice de búsqueda vectorial a través de Internet pública o de forma privada mediante una red híbrida que utilice Private Service Connect a través de Cloud VPN o Cloud Interconnect. Ambas opciones ofrecen cifrado SSL/TLS. Sin embargo, la opción privada ofrece un rendimiento mucho mejor y, por lo tanto, se recomienda para aplicaciones críticas.
En este tutorial, usarás una VPN de alta disponibilidad (HA VPN) para acceder de forma privada a un endpoint de índice de búsqueda vectorial entre dos redes de nube privada virtual (VPC) que pueden servir de base para la conectividad privada multicloud y on-premise.
Este tutorial está dirigido a administradores de redes empresariales, científicos de datos e investigadores que estén familiarizados con Vertex AI, la nube privada virtual, la consola de Google Cloud y Cloud Shell. Tener conocimientos sobre la búsqueda vectorial es útil, pero no obligatorio.
Objetivos
- Crea dos redes de VPC, tal como se muestra en el diagrama anterior:
- Una (
onprem-vpc
) representa una red local. - El otro (
vertex-networking-vpc
) es para el endpoint del índice de búsqueda vectorial.
- Una (
- Implementa pasarelas de VPN de alta disponibilidad, túneles de Cloud VPN y Cloud Routers para conectar
vertex-networking-vpc
yonprem-vpc
. - Crea y despliega un índice de búsqueda vectorial.
- Crea una regla de reenvío de Private Service Connect para reenviar consultas al endpoint del índice de búsqueda vectorial.
- Configura una ruta anunciada personalizada de Cloud Router en
vertex-networking-vpc
para anunciar rutas del endpoint de índice aonprem-vpc
. - Crea una instancia de VM de Compute Engine en
onprem-vpc
para representar una aplicación cliente que envía solicitudes al endpoint del índice de búsqueda vectorial a través de una VPN de alta disponibilidad.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Abre Cloud Shell para ejecutar los comandos que se indican en este tutorial. Cloud Shell es un entorno de shell interactivo para Google Cloud que te permite gestionar tus proyectos y recursos desde el navegador web.
- En Cloud Shell, define el proyecto actual como tu Google Cloud ID de proyecto y almacena el mismo ID de proyecto en la variable de shell
projectid
: Sustituye PROJECT_ID por el ID de tu proyecto. Si es necesario, puedes encontrar el ID de tu proyecto en la Google Cloud consola. Para obtener más información, consulta Buscar el ID de un proyecto.projectid="PROJECT_ID" gcloud config set project ${projectid}
- Si no eres el propietario del proyecto, pídele que te conceda el rol Administrador de gestión de identidades y accesos de proyectos (roles/resourcemanager.projectIamAdmin). Debes tener este rol para conceder roles de gestión de identidades y accesos en el siguiente paso.
-
Make sure that you have the following role or roles on the project: roles/aiplatform.user, roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iap.admin, roles/iap.tunnelResourceAccessor, roles/notebooks.admin, roles/servicemanagement.quotaAdmin, roles/servicedirectory.editor, roles/storage.admin, roles/aiplatform.admin, roles/aiplatform.user, roles/resourcemanager.projectIamAdmin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Conceder acceso.
-
En el campo Nuevos principales, introduce tu identificador de usuario. Normalmente, se trata de la dirección de correo de una cuenta de Google.
- En la lista Selecciona un rol, elige un rol.
- Para conceder más roles, haz clic en Añadir otro rol y añade cada rol adicional.
- Haz clic en Guardar.
Enable the DNS, IAM, Compute Engine, Notebooks, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Crear las redes de VPC
En esta sección, crearás dos redes de VPC: una para crear un índice de búsqueda vectorial y desplegarlo en un endpoint, y otra para acceder de forma privada a ese endpoint.
Crea la red de VPC para el endpoint del índice de búsqueda vectorial (vertex-networking-vpc
).
Crea la red VPC del endpoint del índice:
gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
Crea una subred llamada
workbench-subnet
con un intervalo IPv4 principal de172.16.20.0/28
:gcloud compute networks subnets create workbench-subnet \ --project=$projectid --range=172.16.20.0/28 \ --network=vertex-networking-vpc \ --region=us-central1 \ --enable-private-ip-google-access
Crea una subred llamada
psc-forwarding-rule-subnet
con un intervalo IPv4 principal de172.16.30.0/28
:gcloud compute networks subnets create psc-forwarding-rule-subnet \ --project=$projectid \ --range=172.16.30.0/28 \ --network=vertex-networking-vpc \ --region=us-central1 \ --enable-private-ip-google-access
Crea la red de VPC para el acceso privado al endpoint (onprem-vpc
).
Crea la red de VPC para simular la red local (
onprem-vpc
):gcloud compute networks create onprem-vpc \ --subnet-mode custom
En la red
onprem-vpc
, crea una subred llamadaonprem-vpc-subnet1
con un intervalo IPv4 principal de172.16.10.0/29
:gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
Verificar que las redes VPC estén configuradas correctamente
En la Google Cloud consola, ve a la pestaña Redes del proyecto actual de la página Redes de VPC.
En la lista de redes de VPC, comprueba que se hayan creado las dos redes:
vertex-networking-vpc
yonprem-vpc
.Haz clic en la pestaña Subredes del proyecto actual.
En la lista de subredes de VPC, comprueba que se hayan creado las subredes
workbench-subnet
,psc-forwarding-rule-subnet
yonprem-vpc-subnet1
.
Crear la instancia de VM de on-prem-client
En esta sección, creará una instancia de VM para representar una aplicación cliente que envíe solicitudes al endpoint del índice de búsqueda vectorial a través de una VPN de alta disponibilidad.
En Cloud Shell, crea la instancia de VM
on-prem-client
:gcloud compute instances create on-prem-client \ --zone=us-central1-a \ --image-family=debian-11 \ --image-project=debian-cloud \ --subnet=onprem-vpc-subnet1 \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address \ --shielded-secure-boot \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install tcpdump dnsutils -y"
Configurar la conectividad híbrida
En esta sección, creará dos pasarelas de VPN de alta disponibilidad que estarán conectadas entre sí. Una de ellas se encuentra en la red de vertex-networking-vpc
VPC. La otra se encuentra en la red de VPC onprem-vpc
.
Cada pasarela contiene un Cloud Router y un par de túneles VPN.
Crear las pasarelas de VPN de alta disponibilidad
En Cloud Shell, crea la pasarela de VPN de alta disponibilidad para la red de VPC
vertex-networking-vpc
:gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
Crea la pasarela de VPN de alta disponibilidad para la red VPC
onprem-vpc
:gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
En la Google Cloud consola, ve a la pestaña Pasarelas de Cloud VPN de la página VPN.
Verifica que se hayan creado las dos pasarelas (
vertex-networking-vpn-gw1
yonprem-vpn-gw1
) y que cada una tenga dos direcciones IP de interfaz.
Crear routers de Cloud Router y pasarelas de Cloud NAT
En cada una de las dos redes de VPC, crea dos routers de Cloud Router: uno general y otro regional. En cada uno de los routers de Cloud regionales, crea una pasarela de Cloud NAT. Las pasarelas Cloud NAT proporcionan conectividad saliente a las instancias de máquina virtual (VM) de Compute Engine que no tienen direcciones IP externas.
En Cloud Shell, crea un Cloud Router para la red de VPC
vertex-networking-vpc
:gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
Crea un Cloud Router para la red de VPC
onprem-vpc
:gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
Crea un router de Cloud Router regional para la red de VPC
vertex-networking-vpc
:gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
Configura una pasarela Cloud NAT en el Cloud Router regional:
gcloud compute routers nats create cloud-nat-us-central1 \ --router=cloud-router-us-central1-vertex-nat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1
Crea un router de Cloud Router regional para la red de VPC
onprem-vpc
:gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
Configura una pasarela Cloud NAT en el Cloud Router regional:
gcloud compute routers nats create cloud-nat-us-central1-on-prem \ --router=cloud-router-us-central1-onprem-nat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1
En la Google Cloud consola, ve a la página Cloud Routers.
En la lista Cloud Routers (Routers de Cloud), comprueba que se hayan creado los siguientes routers:
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
Puede que tengas que actualizar la pestaña del navegador de la consola para ver los nuevos valores. Google Cloud
En la lista Cloud Routers, haz clic en
cloud-router-us-central1-vertex-nat
.En la página Detalles del router, comprueba que se ha creado la pasarela
cloud-nat-us-central1
Cloud NAT.Haz clic en la flecha hacia atrás
para volver a la página Routers de Cloud.En la lista de routers, haz clic en
cloud-router-us-central1-onprem-nat
.En la página Detalles del router, comprueba que se haya creado la pasarela Cloud NAT
cloud-nat-us-central1-on-prem
.
Crear túneles de VPN
En Cloud Shell, en la red
vertex-networking-vpc
, crea un túnel VPN llamadovertex-networking-vpc-tunnel0
:gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 0
En la red
vertex-networking-vpc
, crea un túnel VPN llamadovertex-networking-vpc-tunnel1
:gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 1
En la red
onprem-vpc
, crea un túnel VPN llamadoonprem-vpc-tunnel0
:gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 0
En la red
onprem-vpc
, crea un túnel VPN llamadoonprem-vpc-tunnel1
:gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 1
En la Google Cloud consola, ve a la página VPN.
En la lista de túneles VPN, comprueba que se han creado los cuatro túneles VPN.
Establecer sesiones de BGP
Cloud Router usa el protocolo de pasarela fronteriza (BGP) para intercambiar rutas entre tu red de VPC (en este caso, vertex-networking-vpc
) y tu red on‐premise (representada por onprem-vpc
). En Cloud Router, configura una interfaz y un par BGP para tu router on‐premise.
La interfaz y la configuración del par de BGP forman una sesión de BGP.
En esta sección, creará dos sesiones de BGP para vertex-networking-vpc
y dos para onprem-vpc
.
Una vez que hayas configurado las interfaces y los peers de BGP entre tus routers, empezarán a intercambiar rutas automáticamente.
Establecer sesiones de BGP para vertex-networking-vpc
En Cloud Shell, en la red
vertex-networking-vpc
, crea una interfaz BGP paravertex-networking-vpc-tunnel0
:gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel0-to-onprem \ --ip-address 169.254.0.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel0 \ --region us-central1
En la red
vertex-networking-vpc
, crea un peer de BGP parabgp-onprem-tunnel0
:gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel0 \ --interface if-tunnel0-to-onprem \ --peer-ip-address 169.254.0.2 \ --peer-asn 65002 \ --region us-central1
En la red
vertex-networking-vpc
, crea una interfaz de BGP paravertex-networking-vpc-tunnel1
:gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel1-to-onprem \ --ip-address 169.254.1.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel1 \ --region us-central1
En la red
vertex-networking-vpc
, crea un peer de BGP parabgp-onprem-tunnel1
:gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel1 \ --interface if-tunnel1-to-onprem \ --peer-ip-address 169.254.1.2 \ --peer-asn 65002 \ --region us-central1
Establecer sesiones de BGP para onprem-vpc
En la red
onprem-vpc
, crea una interfaz de BGP paraonprem-vpc-tunnel0
:gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel0-to-vertex-networking-vpc \ --ip-address 169.254.0.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel0 \ --region us-central1
En la red
onprem-vpc
, crea un peer de BGP parabgp-vertex-networking-vpc-tunnel0
:gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel0 \ --interface if-tunnel0-to-vertex-networking-vpc \ --peer-ip-address 169.254.0.1 \ --peer-asn 65001 \ --region us-central1
En la red
onprem-vpc
, crea una interfaz de BGP paraonprem-vpc-tunnel1
:gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel1-to-vertex-networking-vpc \ --ip-address 169.254.1.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel1 \ --region us-central1
En la red
onprem-vpc
, crea un peer de BGP parabgp-vertex-networking-vpc-tunnel1
:gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel1 \ --interface if-tunnel1-to-vertex-networking-vpc \ --peer-ip-address 169.254.1.1 \ --peer-asn 65001 \ --region us-central1
Validar la creación de la sesión de BGP
En la Google Cloud consola, ve a la página VPN.
En la lista de túneles VPN, comprueba que el valor de la columna Estado de la sesión de BGP de cada túnel haya cambiado de Configurar sesión de BGP a BGP establecido. Puede que tengas que actualizar la pestaña del navegador de la consola Google Cloud para ver los nuevos valores.
Validar las vertex-networking-vpc
rutas aprendidas
En la Google Cloud consola, ve a la página Redes de VPC.
En la lista de redes de VPC, haz clic en
vertex-networking-vpc
.Haz clic en la pestaña Rutas.
Selecciona us-central1 (Iowa) en la lista Región y haz clic en Ver.
En la columna Intervalo de IP de destino, comprueba que el intervalo de IP de la subred (
172.16.10.0/29
) aparece dos veces.onprem-vpc-subnet1
Validar las on-prem-vpc
rutas aprendidas
Haz clic en la flecha hacia atrás
para volver a la página Redes de VPC.En la lista de redes de VPC, haz clic en
on-prem-vpc
.Haz clic en la pestaña Rutas.
Selecciona us-central1 (Iowa) en la lista Región y haz clic en Ver.
En la columna Intervalo de IP de destino, comprueba que el intervalo de IP de la
workbench-subnet
subred (172.16.20.0/28
) y el intervalo de IP de lapsc-forwarding-rule-subnet
subred (172.16.30.0/28
) aparecen dos veces.
Crear una instancia de Vertex AI Workbench
En esta sección, crearás una cuenta de servicio gestionada por el usuario y, a continuación, una instancia de Vertex AI Workbench que use tu cuenta de servicio para acceder aGoogle Cloud servicios y APIs.
Crear una cuenta de servicio
En este tutorial, crearás una cuenta de servicio gestionada por el usuario siguiendo las prácticas recomendadas de Compute Engine y de IAM.
En Cloud Shell, crea una cuenta de servicio llamada
workbench-sa
:gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
Asigna el rol de gestión de identidades y accesos Usuario de Vertex AI (
roles/aiplatform.user
) a la cuenta de servicio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
Asigna el rol de IAM Administrador de Storage (
roles/storage.admin
) a la cuenta de servicio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"
Asigna el rol de gestión de identidades y accesos Administrador de uso de servicios (
roles/serviceusage.serviceUsageAdmin
) a la cuenta de servicio:gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageAdmin"
Crear la instancia de Vertex AI Workbench
Crea una instancia de Vertex AI Workbench
especificando la workbench-sa
cuenta de servicio:
gcloud workbench instances create workbench-tutorial \
--vm-image-project=deeplearning-platform-release \
--vm-image-family=common-cpu-notebooks \
--machine-type=n1-standard-4 \
--location=us-central1-a \
--subnet-region=us-central1 \
--shielded-secure-boot=SHIELDED_SECURE_BOOT \
--subnet=workbench-subnet \
--disable-public-ip \
--service-account-email=workbench-sa@$projectid.iam.gserviceaccount.com
Crear y desplegar un índice de búsqueda vectorial
Prepara tu entorno
En la Google Cloud consola, ve a la pestaña Instancias de la página Vertex AI Workbench.
Junto al nombre de tu instancia de Vertex AI Workbench (
workbench-tutorial
), haz clic en Abrir JupyterLab.Tu instancia de Vertex AI Workbench abre JupyterLab.
Selecciona Archivo > Nuevo > Cuaderno.
En el menú Seleccionar kernel, elige Python 3 (Local) y haz clic en Seleccionar.
Cuando se abra el nuevo cuaderno, habrá una celda de código predeterminada en la que podrás introducir código. Tiene el aspecto de
[ ]:
seguido de un campo de texto. En el campo de texto es donde debes pegar el código.Para instalar el SDK de Vertex AI para Python, pega el siguiente código en la celda y haz clic en
Ejecutar las celdas seleccionadas y avanzar:!pip install --upgrade --user google-cloud-aiplatform google-cloud-storage
En este paso y en los siguientes, añade una nueva celda de código (si es necesario) haciendo clic en
Insertar una celda debajo, pega el código en la celda y, a continuación, haz clic en Ejecutar las celdas seleccionadas y avanzar.Para usar los paquetes recién instalados en este entorno de ejecución de Jupyter, debes reiniciar el entorno de ejecución:
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
Define las siguientes variables de entorno y sustituye PROJECT_ID por el ID de tu proyecto.
# set project ID and location PROJECT_ID = "PROJECT_ID" LOCATION = "us-central1" # generate a unique id for this session from datetime import datetime UID = datetime.now().strftime("%m%d%H%M")
Habilitar APIs
En tu cuaderno de JupyterLab, ejecuta el siguiente comando para habilitar las APIs de Compute Engine, Vertex AI y Cloud Storage en el cuaderno:
! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
--project {PROJECT_ID}
Preparar los datos de muestra en un segmento de Cloud Storage
En este tutorial, usamos el mismo conjunto de datos The Look que se usa en la guía de inicio rápido de búsqueda vectorial. Consulta la página de documentación de inicio rápido para obtener más información sobre este conjunto de datos.
En esta sección, creará un segmento de Cloud Storage y colocará en él el archivo de inserción del conjunto de datos. En un paso posterior, usarás este archivo para crear un índice.
En tu cuaderno de JupyterLab, crea un segmento de Cloud Storage:
BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}" ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
Copia el archivo de ejemplo en tu segmento de Cloud Storage.
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
Para usar la búsqueda de vectores y ejecutar consultas, también debe copiar el archivo de incrustaciones en un directorio local:
! gcloud storage cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
Crear el índice de búsqueda vectorial
En tu cuaderno de JupyterLab, carga las incrustaciones en Vector Search:
# init the aiplatform package from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION)
Crea un MatchingEngineIndex con su función
create_tree_ah_index
(Matching Engine es el nombre anterior de Vector Search):# create Index my_index = aiplatform.MatchingEngineIndex.create_tree_ah_index( display_name = f"vs-quickstart-index-{UID}", contents_delta_uri = BUCKET_URI, dimensions = 768, approximate_neighbors_count = 10, )
El método
MatchingEngineIndex.create_tree_ah_index()
crea un índice. En este tutorial, esta tarea lleva entre 5 y 10 minutos.En la Google Cloud consola, ve a la pestaña Índices de la página Búsqueda vectorial.
Verifica que haya un índice cuyo nombre empiece por
"vs-quickstart-index-"
y que contenga la marca de tiempo correcta.Anota el ID del índice. Necesitarás este ID cuando implementes el índice en un paso posterior.
Crear el endpoint de índice
En Cloud Shell, ejecuta los siguientes comandos y sustituye PROJECT_ID por el ID de tu proyecto:
projectid=PROJECT_ID gcloud config set project ${projectid} SERVICE_PROJECT=${projectid} REGION=us-central1 VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com DISPLAY_NAME=vector-search
Crea el endpoint del índice:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ https://$VERTEX_ENDPOINT/v1/projects/$SERVICE_PROJECT/locations/$REGION/indexEndpoints \ -d '{displayName: "'$DISPLAY_NAME'", privateServiceConnectConfig: { enablePrivateServiceConnect: true, projectAllowlist: ["'$SERVICE_PROJECT'"] }}'
Verifica que se haya creado el endpoint de índice:
gcloud ai index-endpoints list --region=us-central1
El resultado es similar al siguiente ejemplo, en el que el ID del endpoint de índice es
8151506529447575552
:Using endpoint [https://us-central1-aiplatform.googleapis.com/] --- createTime: '2023-10-10T23:55:20.526145Z' displayName: vector-search encryptionSpec: {} etag: AMEw9yN2qytNiwT73uwYpz_7N_b2-O8D1AuNoDb5QjFmkU4ye5Gzk2oQlMZBR1XeoQ11 name: projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552 privateServiceConnectConfig: enablePrivateServiceConnect: true projectAllowlist: - vertex-genai-400103 - vertex-genai-400103 updateTime: '2023-10-10T23:55:21.951394Z'
Anota el ID del endpoint de índice. Necesitará este ID cuando implemente su índice en un paso posterior.
Desplegar el índice en el endpoint
En Cloud Shell, ejecuta el siguiente comando para desplegar el índice en el endpoint:
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
--deployed-index-id=vector_one \
--display-name=vector-search \
--index=INDEX \
--project=$projectid \
--region=us-central1
Sustituye los siguientes valores:
- INDEX_ENDPOINT_ID: ID del endpoint de índice del endpoint de índice de Private Service Connect que has creado
- INDEX: el ID del índice que vas a implementar
El resultado es similar al siguiente ejemplo, en el que el ID del endpoint de índice es 8151506529447575552
:
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
The deploy index operation [projects/725264228516/locations/us-central1/indexEndpoints/8151506529447575552/operations/6271807495283408896] was submitted successfully.
La operación de implementación tarda entre 10 y 15 minutos. Cuando implementas el índice, se genera un adjunto de servicio.
Verificar que el índice se ha implementado en el endpoint de índice
En la Google Cloud consola, ve a la pestaña Index Endpoints (Endpoints de índice) de la página Vector Search (Búsqueda vectorial).
Verifica que el endpoint de índice
vector-search
tenga un índice implementado que también se llamevector-search
.Si aparece un círculo azul giratorio junto al nombre del endpoint del índice, significa que el índice aún se está implementando.
Obtener el URI de la vinculación de servicio del endpoint de índice
Una vez que el índice se haya desplegado por completo, podrás obtener el URI del adjunto de servicio.
En Cloud Shell, ejecuta el siguiente comando para obtener el URI del adjunto de servicio:
gcloud ai index-endpoints list --region=us-central1 | grep -i serviceAttachment:
En el siguiente ejemplo de salida, el URI del adjunto de servicio es
projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
serviceAttachment: projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
Anota el URI serviceAttachment
, que empieza por projects
, por ejemplo, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
.
Lo necesitarás en el siguiente paso, cuando crees una regla de reenvío.
Crear una regla de reenvío
En Cloud Shell, reserva una dirección IP para que la regla de reenvío la use para consultar el índice de Vector Search:
gcloud compute addresses create vector-search-forwarding-rule \ --region=us-central1 \ --subnet=psc-forwarding-rule-subnet
Busca la dirección IP reservada:
gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
Crea una regla de reenvío para conectar el endpoint al adjunto de servicio. Sustituye SERVICE_ATTACHMENT_URI por tu URI
serviceAttachment
.gcloud compute forwarding-rules create vector-search-forwarding-rule \ --region=us-central1 \ --network=vertex-networking-vpc \ --address=vector-search-forwarding-rule \ --target-service-attachment=SERVICE_ATTACHMENT_URI
A continuación, se muestra un ejemplo de uso de este comando:
gcloud compute forwarding-rules create vector-search-forwarding-rule \ --region=us-central1 \ --network=vertex-networking-vpc \ --address=vector-search-forwarding-rule \ --target-service-attachment=projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798
En la Google Cloud consola, ve a la pestaña Endpoints conectados de la página Private Service Connect.
Valida que el estado de
vector-search-forwarding-rule
seaAccepted
.Anota la dirección IP de la regla de reenvío de Private Service Connect. En un paso posterior, usarás este endpoint para establecer la comunicación con el índice de búsqueda vectorial implementado.
Consultar el índice implementado
Ahora que has creado una regla de reenvío de Private Service Connect conectada al endpoint de tu índice de búsqueda vectorial, puedes consultar el índice desplegado enviando las consultas desde la instancia de VM on-prem-client
a la regla de reenvío.
Para permitir que Identity-Aware Proxy (IAP) se conecte a tus instancias de VM, crea una regla de cortafuegos que haga lo siguiente:
- Se aplica a todas las instancias de VM a las que quieras acceder a través de IAP.
- Permite el tráfico TCP a través del puerto 22 desde el intervalo de IPs
35.235.240.0/20
. Este intervalo contiene todas las direcciones IP que usa IAP para el reenvío de TCP.
Una vez que hayas creado el cortafuegos, instala el cliente gRPC. En un paso posterior, usarás el cliente gRPC para enviar consultas desde la instancia de máquina virtual de on-prem-client
.
Crea la regla de cortafuegos e instala gRPC
En Cloud Shell, ejecuta los siguientes comandos y sustituye PROJECT_ID por el ID de tu proyecto:
projectid=PROJECT_ID gcloud config set project ${projectid}
Crea una regla de cortafuegos de IAP llamada
ssh-iap-vpc
:gcloud compute firewall-rules create ssh-iap-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Inicia sesión en la
on-prem-client
instancia de VM:gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a \ --tunnel-through-iap
En la instancia de VM
on-prem-client
, instala el clientegRPC
:sudo apt-get install git -y git clone https://github.com/grpc/grpc.git sudo apt-get install build-essential autoconf libtool pkg-config -y sudo apt-get install cmake -y cd grpc/ git submodule update --init mkdir -p cmake/build cd cmake/build cmake -DgRPC_BUILD_TESTS=ON ../.. make grpc_cli
La instalación tarda unos 30 minutos.
Obtener el ID de un elemento de índice
En la Google Cloud consola, ve a la pestaña Instancias de la página Vertex AI Workbench.
Junto al nombre de tu instancia de Vertex AI Workbench, haz clic en Abrir JupyterLab.
Tu instancia de Vertex AI Workbench abre JupyterLab.
Selecciona Archivo > Nuevo > Terminal.
En el terminal de JupyterLab (no en Cloud Shell), consulta la última entrada del índice:
tail -1 product-embs.json
Busca el primer par clave-valor del elemento, que contiene el número de ID del elemento, como en el siguiente ejemplo:
"id":"27452"
Anote este número de ID. La necesitarás para hacer una consulta en la siguiente sección.
Hacer una consulta de búsqueda vectorial
En la instancia de VM on-prem-client
, consulta el índice desplegado:
./grpc_cli call FORWARDING_RULE_IP:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"
Sustituye los siguientes valores:
- FORWARDING_RULE_IP: dirección IP de la regla de reenvío de Private Service Connect que has creado en la sección anterior
- ITEM_ID: el número de ID del artículo que has guardado en la sección anterior
El resultado debería ser similar al siguiente:
user@on-prem-client:~/grpc/cmake/build$ ./grpc_cli call 172.16.30.2:10000 google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"20020916"'"
connecting to 172.16.30.2:10000
neighbor {
id: "16136217"
distance: 0.99999558925628662
}
neighbor {
id: "2196405"
distance: 0.82817935943603516
}
neighbor {
id: "3796353"
distance: 0.82687419652938843
}
neighbor {
id: "815154"
distance: 0.8179466724395752
}
neighbor {
id: "16262338"
distance: 0.816785454750061
}
neighbor {
id: "31290454"
distance: 0.81560027599334717
}
neighbor {
id: "4012943"
distance: 0.80958610773086548
}
neighbor {
id: "39738359"
distance: 0.8020891547203064
}
neighbor {
id: "7691697"
distance: 0.80035769939422607
}
neighbor {
id: "6398888"
distance: 0.79880392551422119
}
Rpc succeeded with OK status
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en este tutorial, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Puedes eliminar los recursos concretos en la Google Cloud consola de la siguiente manera:
Anula la implementación y elimina el índice de búsqueda vectorial de la siguiente manera:
En la Google Cloud consola, ve a la pestaña Índices de la página Búsqueda vectorial.
Busca el índice cuyo nombre empiece por
"vs-quickstart-index-"
y contenga la marca de tiempo correcta.Haga clic en el nombre del índice.
En la página Información del índice, junto al nombre del índice de la lista Índices implementados, haz clic en
Acciones y, a continuación, en Desplegar.El proceso de anulación del despliegue del índice tarda unos minutos. Si aparece un círculo azul giratorio junto al nombre del índice o si el estado del índice es
Undeploying
, significa que el índice aún está en proceso de desimplementación. Es posible que tengas que actualizar la pestaña del navegador de la consola Google Cloud para ver que el índice ya no está desplegado.Haz clic en la flecha hacia atrás
para volver a la pestaña Índices.Junto al nombre del índice en la lista de índices, haz clic en
Acciones y, a continuación, en Eliminar para eliminar el índice.
Elimina el endpoint de índice de la siguiente manera:
En la consola, ve a la pestaña Index endpoints (Endpoints de índice) de la página Vector Search (Búsqueda vectorial). Google Cloud
Junto al nombre del endpoint en la lista de endpoints de índice, haz clic en
Acciones y, a continuación, en Eliminar para eliminar el endpoint de índice.
Elimina la instancia de Vertex AI Workbench de la siguiente manera:
En la Google Cloud consola, en la sección Vertex AI, ve a la pestaña Instancias de la página Workbench.
Selecciona la
workbench-tutorial
instancia de Vertex AI Workbench y haz clic en Eliminar.
Elimina la instancia de VM de Compute Engine de la siguiente manera:
En la Google Cloud consola, ve a la página Compute Engine.
Selecciona la instancia de VM
on-prem-client
y haz clic en Eliminar.
Elimina los túneles VPN de la siguiente manera:
En la Google Cloud consola, ve a la página VPN.
En la página VPN, haz clic en la pestaña Túneles de Cloud VPN.
En la lista de túneles VPN, selecciona los cuatro túneles VPN que has creado en este tutorial y haz clic en
Eliminar.
Elimina las pasarelas de VPN de alta disponibilidad de la siguiente manera:
En la página VPN, haz clic en la pestaña Pasarelas de Cloud VPN.
En la lista de pasarelas VPN, haz clic en
onprem-vpn-gw1
.En la página Detalles de la pasarela VPN de Cloud, haz clic en Eliminar pasarela VPN
.Haz clic en la
flecha hacia atrás si es necesario para volver a la lista de pasarelas VPN y, a continuación, haz clic envertex-networking-vpn-gw1
.En la página Detalles de la pasarela VPN de Cloud, haz clic en Eliminar pasarela VPN
.
Elimina los routers de Cloud de la siguiente manera:
Ve a la página Routers de Cloud Router.
En la lista de routers de Cloud Router, selecciona los cuatro routers que has creado en este tutorial.
Para eliminar los routers, haz clic en
Eliminar.También se eliminarán las dos pasarelas de Cloud NAT conectadas a los Cloud Routers.
Elimina la regla de reenvío
vector-search-forwarding-rule
de la red de VPCvertex-networking-vpc
de la siguiente manera:Ve a la pestaña Frontends de la página Balanceo de carga.
En la lista de reglas de reenvío, haz clic en
vector-search-forwarding-rule
.En la página Detalles de la regla de reenvío, haz clic en
Eliminar.
Elimina las redes de VPC de la siguiente manera:
Ve a la página Redes de VPC.
En la lista de redes de VPC, haz clic en
onprem-vpc
.En la página Detalles de la red de VPC, haz clic en Eliminar red de VPC
.Si eliminas una red, también se eliminan sus reglas de cortafuegos, rutas y subredes.
Vuelve a la lista de redes de VPC y haz clic en
vertex-networking-vpc
.En la página Detalles de la red de VPC, haz clic en Eliminar red de VPC
.
Elimina el segmento de almacenamiento de la siguiente manera:
En la Google Cloud consola, ve a la página Cloud Storage.
Selecciona el bucket de almacenamiento y haz clic en
Eliminar.
Elimina la cuenta de servicio
workbench-sa
de la siguiente manera:Ve a la página Cuentas de servicio.
Selecciona la cuenta de servicio
workbench-sa
y haz clic en Eliminar.
Siguientes pasos
- Consulta las opciones de redes empresariales para acceder a los endpoints y servicios de Vertex AI.
- Consulta cómo funciona Private Service Connect y por qué ofrece ventajas de rendimiento significativas.
- Consulta cómo usar Controles de Servicio de VPC para crear perímetros seguros y permitir o denegar el acceso a Vertex AI y a otras APIs de Google en el endpoint del índice de búsqueda vectorial a través de Internet público.
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.