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 Gemini Enterprise Agent Platform, la nube privada virtual, la Cloud de Confiance consola 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 una ruta anunciada personalizada de Cloud Router en vertex-networking-vpc para anunciar rutas del extremo del í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 Cloud de Confiance by S3NS:

Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Antes de comenzar

  1. En la consola de Cloud de Confiance , ve a la página del selector de proyectos.

    Ir al selector de proyectos

  2. Selecciona o crea un proyecto de Cloud de Confiance .

    Roles necesarios para seleccionar o crear un proyecto

    • Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (roles/resourcemanager.projectCreator), que contiene el permiso resourcemanager.projects.create. Obtén más información para otorgar roles.
  3. Verifica que la facturación esté habilitada para tu proyecto de Cloud de Confiance .

  4. Abre Cloud Shell para ejecutar los comandos detallados en este instructivo. Cloud Shell es un entorno de shell interactivo para Cloud de Confiance que te permite administrar tus proyectos y recursos desde tu navegador web.
  5. En Cloud Shell, establece el proyecto actual como tu ID del proyecto Cloud de Confiance by S3NS y almacena el mismo ID del proyecto 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 Cloud de Confiance . 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. Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM: 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:USER_IDENTIFIER" --role=ROLE

    Reemplaza lo siguiente:

  8. Habilita las APIs de DNS, IAM, Compute Engine, Notebooks y Agent Platform si alguna aún no está habilitada:

    Roles necesarios para habilitar las APIs

    Para habilitar APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

    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 del í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 Cloud de Confiance , 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 Cloud de Confiance , ve a la pestaña Puertas de enlace de Cloud VPN 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 Cloud de Confiance , 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 Cloud de Confiance by S3NS pestaña del navegador de la consola 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 Cloud de Confiance , 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 Cloud de Confiance , 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 Cloud de Confiance by S3NS pestaña del navegador de la consola para ver los valores nuevos.

Valida las rutas aprendidas de vertex-networking-vpc

  1. En la consola de Cloud de Confiance , 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 Agent Platform Workbench

En esta sección, crearás una cuenta de servicio administrada por el usuario y, luego, crearás una instancia de Agent Platform Workbench que use tu cuenta de servicio para acceder a los servicios y las APIs deCloud de Confiance .

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 Agent Platform (roles/aiplatform.user) a la cuenta de servicio:

    gcloud projects add-iam-policy-binding $projectid \
      --member="serviceAccount:workbench-sa@$projectid.s3ns.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.s3ns.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.s3ns.iam.gserviceaccount.com" \
      --role="roles/serviceusage.serviceUsageAdmin"
    

Crea la instancia de Agent Platform Workbench

Crea una instancia de Agent Platform 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.s3ns.iam.gserviceaccount.com

Compila e implementa un índice de Vector Search

Prepara el entorno

  1. En la consola de Cloud de Confiance , ve a la pestaña Instancias de la página Agent Platform Workbench.

    Ir a Agent Platform Workbench

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

    Tu instancia de Agent Platform 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.

    Para instalar el SDK de Agent Platform 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. Establece las siguientes variables de entorno y reemplaza 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")
    

Habilita las APIs

En tu notebook de Jupyterlab, ejecuta el siguiente comando para habilitar las APIs para Compute Engine, Gemini Enterprise Agent Platform 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 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 en él el archivo de incorporación del conjunto de datos. 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}"
    ! gcloud storage buckets create $BUCKET_URI --location=$LOCATION --project=$PROJECT_ID
    
  2. Copia el archivo de ejemplo en tu bucket de Cloud Storage.

    ! gcloud storage 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:

    ! gcloud storage 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 los embeddings 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 Cloud de Confiance , 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 que contenga la marca de tiempo correcta.

  5. Anota el 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 del extremo de índice. Necesitarás este ID cuando implementes tu í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 implementas.

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 Cloud de Confiance , 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, todavía se está implementando el índice.

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

Una vez que el índice esté completamente implementado, 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 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 de 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 para consultar el í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 Cloud de Confiance , 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 y, luego, 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 Cloud de Confiance , ve a la pestaña Instancias de la página Agent Platform Workbench.

    Ir a Agent Platform Workbench

  2. Junto al nombre de la instancia de Agent Platform Workbench, haz clic en Abrir JupyterLab.

    Tu instancia de Agent Platform 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 del 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

Realiza una limpieza

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 tu Cloud de Confiance by S3NS cuenta 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 Cloud de Confiance 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 Cloud de Confiance , ve a la pestaña Índices en la página Vector Search.

      Ir a Índices

    2. Busca el índice cuyo nombre comience con "vs-quickstart-index-" y contenga 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.

      La anulación de 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 Cloud de Confiance by S3NS consola 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 Cloud de Confiance , 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 Agent Platform Workbench de la siguiente manera:

    1. En la consola de Cloud de Confiance , en la sección Gemini Enterprise Agent Platform, ve a la pestaña Instancias en la página Workbench.

      Ir a Agent Platform Workbench

    2. Selecciona la instancia de Agent Platform 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 Cloud de Confiance , 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 Cloud de Confiance , 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 Cloud de Confiance consola, 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?