Usa Private Service Connect para acceder a un índice de Vector Search desde las instalaciones locales


Los hosts locales pueden acceder a un extremo del índice de Vector Search, ya sea a través de la Internet pública o de forma privada a través de una arquitectura de red híbrida que usa Private Service Connect a través de Cloud VPN o Cloud Interconnect. Ambas opciones ofrecen encriptación SSL/TLS. Sin embargo, la opción privada ofrece un rendimiento mucho mejor y, por lo tanto, se recomienda para aplicaciones esenciales.

En este instructivo, usarás una VPN de alta disponibilidad (VPN con alta disponibilidad) para acceder a un extremo del índice de Vector Search de forma privada, entre dos redes de nube privada virtual (VPC) que pueden funcionar como base para conectividad privada local y en la nube.

Este instructivo está dirigido a administradores de redes empresariales, investigadores y científicos de datos que estén familiarizados con Vertex AI, la nube privada virtual, la consola de Google Cloud y Cloud Shell. Contar con conocimientos de Vector Search es útil, pero no obligatorio.

Diagrama de arquitectura del uso de Private Service Connect para acceder a un índice de Vector Search desde las instalaciones locales.

Objetivos

  • Crear dos redes de VPC, como se muestra en el diagrama anterior:
    • Una (onprem-vpc) representa una red local.
    • El otro (vertex-networking-vpc) es para el extremo del índice de Vector Search.
  • Implementa puertas de enlace de VPN con alta disponibilidad, túneles de Cloud VPN y Cloud Routers para conectar vertex-networking-vpc y onprem-vpc.
  • Compilar e implementar un índice de Vector Search.
  • Crear una regla de reenvío de Private Service Connect para reenviar consultas al extremo del índice de Vector Search.
  • Configura un anuncio de ruta personalizado de Cloud Router vertex-networking-vpc para anunciar rutas para el extremo de índice a onprem-vpc.
  • Crear una instancia de VM de Compute Engine en onprem-vpc para representar una aplicación cliente que envíe solicitudes al extremo del índice de Vector Search a través de una VPN con alta disponibilidad.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Abre Cloud Shell para ejecutar los comandos detallados en este instructivo. Cloud Shell es un entorno de shell interactivo para Google Cloud que te permite administrar proyectos y recursos desde el navegador web.
  5. En Cloud Shell, configura el proyecto actual como el ID del proyecto de Google Cloud y almacénalo en la variable de shell projectid:
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    Reemplaza PROJECT_ID por el ID del proyecto. Si es necesario, puedes ubicar el ID del proyecto en la consola de Google Cloud. Para obtener más información, consulta Encuentra el ID del proyecto.
  6. Si no eres el propietario del proyecto, pídele al propietario que te otorgue el rol de administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin). Debes tener este rol para otorgar roles de IAM en el siguiente paso.
  7. Grant roles to your user account. Run the following command once for each of the following IAM roles: 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

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.
  8. Enable the DNS, IAM, Compute Engine, Notebooks, and Vertex AI APIs:

    gcloud services enable dns.googleapis.com iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com

Crea las redes de VPC

En esta sección, crearás dos redes de VPC: una para crear un índice de Vector Search y, luego, implementarlo en un extremo, la otra para el acceso privado a ese extremo.

Crea la red de VPC para el extremo del índice de Vector Search (vertex-networking-vpc)

  1. Crea la red de VPC para el extremo de índice:

    gcloud compute networks create vertex-networking-vpc --project=$projectid --subnet-mode custom
    
  2. Crea una subred llamada workbench-subnet, con un rango IPv4 principal de 172.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
    
  3. Crea una subred llamada psc-forwarding-rule-subnet, con un rango IPv4 principal de 172.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 extremo (onprem-vpc)

  1. Crea la red de VPC para simular la red local (onprem-vpc):

    gcloud compute networks create onprem-vpc \
      --subnet-mode custom
    
  2. En la red onprem-vpc, crea una subred llamada onprem-vpc-subnet1, con un rango IPv4 principal de 172.16.10.0/29:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
      --network onprem-vpc \
      --range 172.16.10.0/29 \
      --region us-central1
    

Verifica que las redes de VPC estén configuradas de forma correcta

  1. En la consola de Google Cloud, ve a la pestaña Redes en el proyecto actual en la página Redes de VPC.

    Ir a las redes de VPC

  2. En la lista de redes de VPC, verifica que se hayan creado las dos redes: vertex-networking-vpc y onprem-vpc.

  3. Haz clic en la pestaña Subredes del proyecto actual.

  4. En la lista de subredes de VPC, verifica que se crearon las subredes workbench-subnet, psc-forwarding-rule-subnet y onprem-vpc-subnet1.

Crea la instancia de VM on-prem-client

En esta sección, crearás una instancia de VM para representar una aplicación cliente que envía solicitudes al extremo del índice de Vector Search a través de una VPN con alta disponibilidad.

  1. 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"
    
    

Configura la conectividad híbrida

En esta sección, crearás dos puertas de enlace de VPN con alta disponibilidad que están conectadas entre sí. Una reside en la red de VPC vertex-networking-vpc. La otra se encuentra en la red de VPC onprem-vpc. Cada puerta de enlace contiene un Cloud Router y un par de túneles VPN.

Crea las puertas de enlace de VPN con alta disponibilidad

  1. En Cloud Shell, crea la puerta de enlace de VPN con 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
    
  2. Crea la puerta de enlace de VPN con alta disponibilidad para la red de VPC onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. En la consola de Google Cloud, ve a la pestaña Puertas de enlace de CloudVPN en la página VPN.

    Ir a VPN

  4. Verifica que ambas puertas de enlace (vertex-networking-vpn-gw1 y onprem-vpn-gw1) se hayan creado y que cada puerta de enlace tenga dos direcciones IP de interfaz.

Crea Cloud Routers y puertas de enlace Cloud NAT

En cada una de las dos redes de VPC, debes crear dos Cloud Routers: uno general y otro regional. En cada uno de los Cloud Routers regionales, debes crear una puerta de enlace de Cloud NAT. Las puertas de enlace de Cloud NAT proporcionan conectividad saliente para las instancias de máquina virtual (VM) de Compute Engine que no tienen direcciones IP externas.

  1. 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
    
  2. 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
    
  3. Crea un 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
    
  4. Configura una puerta de enlace de 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
    
  5. Crea un 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
    
  6. Configura una puerta de enlace de 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
    
  7. En la consola de Google Cloud, ve a la página Cloud Routers.

    Ir a Cloud Routers

  8. En la lista de Cloud Routers, verifica 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

    Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver los valores nuevos.

  9. En la lista de Cloud Routers, haz clic en cloud-router-us-central1-vertex-nat.

  10. En la página Detalles del router, verifica que se haya creado la puerta de enlace de Cloud NAT cloud-nat-us-central1.

  11. Haz clic en la flecha hacia atrás para volver a la página Cloud Routers.

  12. En la lista de routers, haz clic en cloud-router-us-central1-onprem-nat.

  13. En la página Detalles del router, verifica que se haya creado la puerta de enlace de Cloud NAT cloud-nat-us-central1-on-prem.

Crea túneles VPN

  1. En Cloud Shell, en la red vertex-networking-vpc, crea un túnel VPN llamado vertex-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
    
  2. En la red vertex-networking-vpc, crea un túnel VPN llamado vertex-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
    
  3. En la red onprem-vpc, crea un túnel VPN llamado onprem-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
    
  4. En la red onprem-vpc, crea un túnel VPN llamado onprem-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
    
  5. En la consola de Google Cloud, ve a la página VPN.

    Ir a VPN

  6. En la lista de túneles VPN, verifica que se hayan creado los cuatro túneles VPN.

Establece sesiones de BGP

Cloud Router usa el protocolo de puerta de enlace fronteriza (BGP) para intercambiar rutas entre tu red de VPC (en este caso, vertex-networking-vpc) y tu red local (representada por onprem-vpc). En Cloud Router, configura una interfaz y un par de BGP para tu router local. La interfaz y la configuración de par de BGP juntas forman una sesión de BGP. En esta sección, crearás dos sesiones de BGP para vertex-networking-vpc y dos para onprem-vpc.

Una vez que hayas configurado las interfaces y los pares BGP entre tus routers, comenzarán automáticamente a intercambiar rutas.

Establece sesiones de BGP para vertex-networking-vpc

  1. En Cloud Shell, en la red vertex-networking-vpc, crea una interfaz de BGP para vertex-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
    
  2. En la red vertex-networking-vpc, crea un par de BGP para bgp-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
    
  3. En la red vertex-networking-vpc, crea una interfaz de BGP para vertex-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
    
  4. En la red vertex-networking-vpc, crea un par de BGP para bgp-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
    

Establece sesiones de BGP para onprem-vpc

  1. En la red onprem-vpc, crea una interfaz de BGP para onprem-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
    
  2. En la red onprem-vpc, crea un par de BGP para bgp-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
    
  3. En la red onprem-vpc, crea una interfaz de BGP para onprem-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
    
  4. En la red onprem-vpc, crea un par de BGP para bgp-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
    

Valida la creación de sesiones de BGP

  1. En la consola de Google Cloud, ve a la página VPN.

    Ir a VPN

  2. En la lista de túneles VPN, verifica que el valor en la columna Estado de la sesión de BGP para cada uno de los túneles haya cambiado de Configura la sesión de BGP a BGP establecida. Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver los valores nuevos.

Valida las rutas aprendidas de vertex-networking-vpc

  1. En la consola de Google Cloud, ve a la página Redes de VPC.

    Ir a las redes de VPC

  2. En la lista de redes de VPC, haz clic en vertex-networking-vpc.

  3. Haz clic en la pestaña Rutas.

  4. Selecciona us-central1 (Iowa) en la lista Región y haz clic en Ver.

  5. En la columna Rango de IP de destino, verifica que el rango de IP (172.16.10.0/29) de la subred onprem-vpc-subnet1 aparezca dos veces.

Valida las rutas aprendidas de on-prem-vpc

  1. Haz clic en la flecha hacia atrás para regresar a la página Redes de VPC.

  2. En la lista de redes de VPC, haz clic en on-prem-vpc.

  3. Haz clic en la pestaña Rutas.

  4. Selecciona us-central1 (Iowa) en la lista Región y haz clic en Ver.

  5. En la columna Rango de IP de destino, verifica que el rango de IP de la subred workbench-subnet (172.16.20.0/28) y el rango de IP de la subred psc-forwarding-rule-subnet (172.16.30.0/28) aparecen dos veces.

Crea una instancia de Vertex AI Workbench

En esta sección, crearás una cuenta de servicio administrada por el usuario y, luego, una instancia de Vertex AI Workbench que use tu cuenta de servicio para acceder los servicios y las APIs de Google Cloud.

Crea una cuenta de servicio

En este instructivo, crearás una cuenta de servicio administrada por el usuario según las prácticas recomendadas de IAM y Compute Engine.

  1. En Cloud Shell, crea una cuenta de servicio llamada workbench-sa:

    gcloud iam service-accounts create workbench-sa \
       --display-name="workbench-sa"
    
  2. Asigna el rol de IAM de 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"
    
  3. Asigna el rol de IAM de administrador de almacenamiento (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"
    
  4. Asigna el rol de IAM de administrador de Service Usage (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"
    

Crea la instancia de Vertex AI Workbench

Crea una instancia de Vertex AI Workbench y especifica la cuenta de servicio workbench-sa:

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

Compila e implementa un índice de Vector Search

Prepare el entorno

  1. En la consola de Google Cloud, ve a la pestaña Instancias de la página Vertex AI Workbench.

    Ir a Vertex AI Workbench

  2. Junto al nombre de la instancia de Vertex AI Workbench (workbench-tutorial), haz clic en Abrir JupyterLab.

    Tu instancia de Vertex AI Workbench abre JupyterLab.

  3. Select Archivo > Nuevo > Notebook.

  4. En el menú Seleccionar kernel, selecciona Python 3 (local) y haz clic en Seleccionar.

  5. Cuando se abre tu notebook nuevo, hay una celda de código predeterminada en la que puedes ingresar código. Parece [ ]: seguido de un campo de texto. El campo de texto es donde pegas tu código.

    Si deseas 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
    
  6. En este paso y cada uno de los siguientes, agrega una nueva celda de código (si fuera necesario) haciendo clic en Insertar una celda a continuación, pega el código en la celda y 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)
    
  7. Configura las siguientes variables de entorno y reemplaza PROJECT_ID por el ID del 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")
    

Habilita las APIs

En tu notebook de Jupyterlab, ejecuta el siguiente comando para habilitar las APIs para Compute Engine, Vertex AI y Cloud Storage en el notebook:

! gcloud services enable compute.googleapis.com aiplatform.googleapis.com storage.googleapis.com \
  --project {PROJECT_ID}

Prepara la muestra de datos en un bucket de Cloud Storage

En este instructivo, usamos el mismo conjunto de datos de TheLook que se usa en la guía de inicio rápido de Vector Search. Consulta la página de documentación de la guía de inicio rápido para obtener más información sobre este conjunto de datos.

En esta sección, crearás un bucket de Cloud Storage y colocarás el archivo de incorporación del conjunto de datos en él. En un paso posterior, usarás este archivo para compilar un índice.

  1. En tu notebook de Jupyterlab, crea un bucket de Cloud Storage:

    BUCKET_URI = f"gs://{PROJECT_ID}-vs-quickstart-{UID}"
    ! gsutil mb -l $LOCATION -p $PROJECT_ID $BUCKET_URI
    
  2. Copia el archivo de ejemplo en tu bucket de Cloud Storage.

    ! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" $BUCKET_URI
    
  3. Si quieres usar Vector Search para ejecutar consultas, también debes copiar el archivo de incorporación en un directorio local:

    ! gsutil cp "gs://github-repo/data/vs-quickstart/product-embs.json" . # for query tests
    

Crea el índice de Vector Search

  1. En tu notebook de Jupyterlab, carga las incorporaciones en Vector Search:

    # init the aiplatform package
    from google.cloud import aiplatform
    aiplatform.init(project=PROJECT_ID, location=LOCATION)
    
  2. Crea un índice de Matching Engine 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() compila un índice. En este instructivo, esta tarea tarda entre 5 y 10 minutos.

  3. En la consola de Google Cloud, ve a la pestaña Índices en la página Vector Search.

    Ir a Índices

  4. Verifica que haya un índice cuyo nombre comience con "vs-quickstart-index-" y contenga la marca de tiempo correcta.

  5. Toma nota del ID del índice. Necesitarás este ID cuando implementes el índice en un paso posterior.

Crea el extremo del índice

  1. En Cloud Shell, ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del 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
    
  2. Crea el extremo 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'"] }}'
    
  3. Verifica que se haya creado el extremo del índice:

    gcloud ai index-endpoints list --region=us-central1
    

    El resultado es similar al siguiente ejemplo, en el que el ID del extremo del í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'
    
  4. Toma nota del ID de extremo de índice. Necesitarás este ID cuando implementes el índice en un paso posterior.

Implementa el índice en el extremo

En Cloud Shell, ejecuta el siguiente comando para implementar el índice en el extremo:

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

Reemplaza los siguientes valores:

  • INDEX_ENDPOINT_ID: El ID del extremo de índice para el extremo de índice de Private Service Connect que creaste
  • INDEX: es el ID del índice que estás implementando

El resultado es similar al siguiente ejemplo, en el que el ID del extremo del í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.

Verifica que el índice se haya implementado en el extremo del índice

  1. En la consola de Google Cloud, ve a la pestaña Extremos de índice en la página Vector Search.

    Ir a Extremos del índice

  2. Verifica que el extremo del índice vector-search tenga un índice implementado que también se llame vector-search.

    Si aparece un círculo azul giratorio junto al nombre del extremo del índice, el índice aún está en proceso de implementación.

Obtén el URI del adjunto de servicio para el extremo del índice

Una vez que el índice esté completamente implementado, puedes 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 resultado de ejemplo, 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

Toma nota del URI serviceAttachment, que comienza con projects, por ejemplo, projects/je84d1de50cd8bddb-tp/regions/us-central1/serviceAttachments/sa-gkedpm-527af280e65971fd786aaf6163e798. Lo necesitarás en el próximo paso, cuando crees una regla de reenvío.

Cree una regla de reenvío.

  1. En Cloud Shell, reserva una dirección IP para que la regla de reenvío la use en la consulta del índice de Vector Search:

    gcloud compute addresses create vector-search-forwarding-rule \
      --region=us-central1 \
      --subnet=psc-forwarding-rule-subnet
    
  2. Busca la dirección IP reservada:

    gcloud compute addresses list --filter="name=vector-search-forwarding-rule"
    
  3. Crea una regla de reenvío para conectar el extremo con el adjunto de servicio y reemplazalo SERVICE_ATTACHMENT_URI por tu URI de 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
    
  4. En la consola de Google Cloud, ve a la pestaña Extremos conectados en la página Private Service Connect.

    Ir a Extremos conectados

  5. Valida que el estado de vector-search-forwarding-rule sea Accepted.

  6. Toma nota de la dirección IP de la regla de reenvío de Private Service Connect. En un paso posterior, usarás este extremo para establecer la comunicación con el índice de Vector Search implementado.

Consulta el índice implementado

Ahora que estableciste una regla de envío de Private Service Connect que está conectada a tu extremo del índice de Vector Search, puedes consultar el índice implementado mediante el envío de las consultas desde la instancia de VM on-prem-client a la regla de envío.

Para permitir que Identity-Aware Proxy (IAP) se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:

  • Se aplica a todas las instancias de VM que deseas que sean accesibles a través de IAP.
  • Permite el tráfico de TCP a través del puerto 22 desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.

Después de crear el firewall, instala el cliente de gRPC. En un paso posterior, usarás el cliente de gRPC para enviar consultas desde la instancia de VM on-prem-client.

Crea la regla de firewall e instala gRPC

  1. En Cloud Shell, ejecuta los siguientes comandos y reemplaza PROJECT_ID por el ID del proyecto:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. Crea una regla de firewall 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
    
  3. Accede a la instancia de VM on-prem-client:

    gcloud compute ssh on-prem-client \
      --project=$projectid \
      --zone=us-central1-a \
      --tunnel-through-iap
    
  4. En la instancia de VM on-prem-client, instala el cliente gRPC:

    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 alrededor de 30 minutos.

Obtén un ID para un elemento del índice existente

  1. En la consola de Google Cloud, ve a la pestañaInstancias de la página Vertex AI Workbench.

    Ir a Vertex AI Workbench

  2. Junto al nombre de la instancia de Vertex AI Workbench, haz clic en Abrir JupyterLab.

    Tu instancia de Vertex AI Workbench abre JupyterLab.

  3. Selecciona Archivo > Nuevo > Terminal.

  4. En la terminal de JupyterLab (no en Cloud Shell), visualiza la última entrada en el índice:

    tail -1 product-embs.json
    
  5. Busca el primer par clave-valor en el elemento, que contiene el número de ID del elemento, como en el siguiente ejemplo:

    "id":"27452"
    

    Toma nota de este número de ID. Lo necesitarás para realizar una consulta en la siguiente sección.

Realiza una consulta de Vector Search

En la instancia de VM on-prem-client, consulta el índice implementado:

./grpc_cli call  FORWARDING_RULE_IP:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"vector_one"',embedding_id: '"ITEM_ID"'"

Reemplaza los siguientes valores:

  • FORWARDING_RULE_IP: La dirección IP de la regla de reenvío de Private Service Connect que creaste en la sección anterior
  • ITEM_ID: Es el número de ID del elemento que guardaste en la sección anterior.

El resultado es 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

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Para evitar que se apliquen cargos a su cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Puedes borrar los recursos individuales en la consola de Google Cloud de la siguiente manera:

  1. Anula la implementación y borra el índice de Vector Search de la siguiente manera:

    1. En la consola de Google Cloud, ve a la pestaña Índices en la página Vector Search.

      Ir a Índices

    2. Ubica el índice cuyo nombre comienza con "vs-quickstart-index-" y contiene la marca de tiempo correcta.

    3. Haz clic en el nombre del índice.

    4. En la página Información del índice, junto al nombre del índice en la lista Índices implementados, haz clic en Acciones y, luego, haz clic en Anular la implementación.

      Anular la implementación del índice tarda unos minutos. Si un círculo azul giratorio aparece junto al nombre del índice o si el estado del índice aparece como Undeploying, todavía se está anulando la implementación del índice. Es posible que debas actualizar la pestaña del navegador de la consola de Google Cloud para ver que el índice ya no está implementado.

    5. Haz clic en la flecha hacia atrás para volver a la pestaña Índices.

    6. Junto al nombre de tu índice en la lista de índices, haz clic en Acciones y, luego, en Borrar para borrar el índice.

  2. Borra el extremo del índice de la siguiente manera:

    1. En la consola de Google Cloud, ve a la pestaña Extremos de índice en la página Vector Search.

      Ir a Extremos del índice

    2. Junto al nombre de tu extremo en la lista de extremos de índice, haz clic en Acciones y, luego, en Borrar para borrar el extremo de índice.

  3. Borra la instancia de Vertex AI Workbench de la siguiente manera:

    1. En la sección Vertex AI de la consola de Google Cloud, ve a la pestaña Instancias en la página Workbench.

      Ir a Vertex AI Workbench

    2. Selecciona la instancia de Vertex AI Workbench workbench-tutorial y haz clic en Borrar.

  4. Borra la instancia de VM de Compute Engine de la siguiente manera:

    1. En la consola de Google Cloud, ve a la página Compute Engine.

      Ir a Compute Engine

    2. Selecciona la instancia de VM on-prem-client y haz clic en Borrar.

  5. Borra los túneles VPN de la siguiente manera:

    1. En la consola de Google Cloud, ve a la página VPN.

      Ir a VPN

    2. En la página VPN, haz clic en la pestaña Túneles de Cloud VPN.

    3. En la lista de túneles VPN, selecciona los cuatro túneles VPN que creaste en este instructivo y haz clic en Borrar.

  6. Borra las puertas de enlace de VPN con alta disponibilidad de la siguiente manera:

    1. En la página VPN, haz clic en la pestaña Puertas de enlace de Cloud VPN.

      Ir a Puertas de enlace de Cloud VPN

    2. En la lista de puertas de enlace de VPN, haz clic en onprem-vpn-gw1.

    3. En la página Detalles de la puerta de enlace de Cloud VPN, haz clic en Borrar puerta de enlace de VPN.

    4. Haz clic en la flecha hacia atrás si es necesario para regresa a la lista de puertas de enlace de VPN y, luego, haz clic en vertex-networking-vpn-gw1

    5. En la página Detalles de la puerta de enlace de Cloud VPN, haz clic en Borrar puerta de enlace de VPN.

  7. Borra los Cloud Routers de la siguiente manera:

    1. Ve a la página Cloud Routers.

      Ir a Cloud Routers

    2. En la lista de Cloud Routers, selecciona los cuatro routers que creaste en este instructivo.

    3. Para borrar los routers, haz clic en Borrar.

      Esta acción también borrará las dos puertas de enlace de Cloud NAT que están conectadas a los Cloud Routers.

  8. Borra la regla de reenvío vector-search-forwarding-rule para la red de VPC vertex-networking-vpc de la siguiente manera:

    1. Ve a la pestaña Frontends de la página Balanceo de cargas.

      Ir a Frontends

    2. En la lista de reglas de reenvío, haz clic en vector-search-forwarding-rule.

    3. En la página Detalles de la regla de reenvío, haz clic en Borrar.

  9. Borra las redes de VPC de la siguiente manera:

    1. Ir a la página de redes de VPC

      Ir a las redes de VPC

    2. En la lista de redes de VPC, haz clic en onprem-vpc.

    3. En la página Detalles de la red de VPC, haz clic en Borrar la red de VPC.

      Borrar cada red también borra sus subredes, rutas y reglas de firewall.

    4. Regresa a la lista de redes de VPC y haz clic en vertex-networking-vpc.

    5. En la página Detalles de la red de VPC, haz clic en Borrar la red de VPC.

  10. Borra el bucket de almacenamiento de la siguiente manera:

    1. En la consola de Google Cloud, ve a la página de Cloud Storage.

      Ir a Cloud Storage

    2. Selecciona tu bucket de almacenamiento y haz clic en Borrar.

  11. Borra la cuenta de servicio workbench-sa de la siguiente manera:

    1. Ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    2. Selecciona la cuenta de servicio workbench-sa y haz clic en Borrar.

¿Qué sigue?