Private Service Connect permite el consumo privado de servicios en las redes de VPC que pertenecen a distintos grupos, equipos, proyectos u organizaciones. Puedes publicar y consumir servicios usando direcciones IP que definas y que sean internas a tu red de VPC, y para que los extremos de Vector Search realicen búsquedas de similitud de vectores.
La habilitación de Private Service Connect en un extremo de Vector Search es adecuada para casos de uso que tienen las siguientes características:
- Requieren latencia baja y una conexión segura con los backends de entrega de Vector Search.
- Tienen espacio de IP limitado para la reserva de intercambio de tráfico de VPC exclusiva.
- Deben acceder a los backends activos desde varias redes de VPC de usuario.
Para obtener más información sobre cómo configurar Private Service Connect, consulta la Descripción general de Private Service Connect en la documentación de la nube privada virtual (VPC).
Crea el extremo del índice
Para crear un extremo con Private Service Connect habilitado, debes definirlo cuando crees el extremo. Esto es similar a crear otros extremos en Vertex AI.
REST
PROJECT=<your-service-project>
VPC_PROJECT=<your-vpc-project>
REGION=us-central1
VERTEX_ENDPOINT=$REGION-aiplatform.googleapis.com
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
https://$VERTEX_ENDPOINT/v1/projects/$PROJECT/locations/$REGION/indexEndpoints \
-d '{displayName: "<your-index-endpoint-name>", privateServiceConnectConfig:
{ enablePrivateServiceConnect: true, projectAllowlist: ["'$VPC_PROJECT'", "'$PROJECT'"] }}'
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Acerca de las opciones de implementación de índices
Puedes implementar tu índice con conectividad de servicio automática o manual.
- Implementa con la automatización de Private Service Connect: Configura una política de conexión de servicio y, luego, implementa tus índices. Configurar una política de conexión de servicio te permite implementar en una red específica sin crear una dirección de procesamiento y una regla de reenvío cada vez.
- Implementación con conexión manual: Implementa tu índice y crea manualmente una dirección de procesamiento y una regla de reenvío. Puedes elegir esta opción si necesitas usar varias direcciones IP.
Implementa con la automatización de Private Service Connect
Puedes configurar una política de conexión de servicio para que no tengas que crear manualmente una dirección de procesamiento y una regla de reenvío después de cada implementación de índice.
- Primero, crea una política de conexión de servicio que especifique la red, la clase de servicio y la región en la que se implementarán los índices. Esta es una configuración que solo deberás realizar una vez. Si ya lo hiciste, ve al siguiente procedimiento.
- Implementa el índice.
Limitaciones
La automatización solo permite una dirección IP por proyecto y por red. Si necesitas usar varias direcciones IP, consulta Cómo implementar el índice de forma manual.
Crea una política de conexión de servicio
Debes ser administrador de red para crear una política de conexión de servicio que automatice la implementación de índices.
Para automatizar la implementación de índices, sigue estos pasos:
Crea tu política de conexión de servicio.
- PROJECT: Es el proyecto de servicio en el que creas recursos de Vertex AI.
- VPC_PROJECT: El proyecto en el que reside tu VPC cliente. Para la configuración de una sola VPC, será igual a $PROJECT. Para la configuración de la VPC compartida, este es el proyecto host de VPC.
-
NETWORK_NAME: Es el nombre de la red en la que se implementará, con el formato
projects/
./global/networks/ - REGION: Es la región de la red.
- PSC_SUBNETS: Es la subred de Private Service Connect que se usará.
gcloud network-connectivity service-connection-policies create <policy_name> \ --project=<vpc_project> --network=<network_name> # in the format projects/<project_id>/global/networks/<network_name> \ --service-class=gcp-vertexai --region=<region> --subnets=<psc subnets>
Consulta tu política de conexión de servicio.
gcloud network-connectivity service-connection-policies list --project=<vpc_project> -–region=<region>
Implementa el índice
gcloud
En este ejemplo, se usa el comando gcloud ai index-endpoints deploy-index
.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- INDEX_ENDPOINT_ID: Es el ID del extremo del índice.
- DEPLOYED_INDEX_ID: Una cadena especificada por el usuario para identificar de forma inequívoca el índice implementado. Debe comenzar con una letra y contener solo letras, números o guiones bajos. Consulta DeployedIndex.id para obtener lineamientos de formato.
- DEPLOYED_INDEX_ENDPOINT_NAME: nombre visible del extremo de índice implementado.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
- NETWORK_1: Es el nombre de la red de Compute Engine en la que se implementará este extremo de índice.
- NETWORK_2: Es un nombre de red adicional de Compute Engine para implementar este extremo (opcional).
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \ --deployed-index-id=DEPLOYED_INDEX_ID \ --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \ --index=INDEX_ID \ --region=LOCATION \ --project=PROJECT_ID \ --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_1 \ --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_2
Windows (PowerShell)
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ` --deployed-index-id=DEPLOYED_INDEX_ID ` --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ` --index=INDEX_ID ` --region=LOCATION ` --project=PROJECT_ID ` --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_1 ` --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_2
Windows (cmd.exe)
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^ --deployed-index-id=DEPLOYED_INDEX_ID ^ --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^ --index=INDEX_ID ^ --region=LOCATION ^ --project=PROJECT_ID ^ --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_1 ^ --psc-automation-configs=project-id=PROJECT_ID,network=NETWORK_2
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- INDEX_ENDPOINT_ID: Es el ID del extremo del índice.
- DEPLOYED_INDEX_ID: Una cadena especificada por el usuario para identificar de forma inequívoca el índice implementado. Debe comenzar con una letra y contener solo letras, números o guiones bajos. Consulta DeployedIndex.id para obtener lineamientos de formato.
- DEPLOYED_INDEX_ENDPOINT_NAME: nombre visible del extremo de índice implementado.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
- NETWORK_1: Es el nombre de la red de Compute Engine en la que se implementará este extremo de índice.
- NETWORK_2: Es un nombre de red adicional de Compute Engine para implementar este extremo (opcional).
- PROJECT_NUMBER: El número de proyecto de tu proyecto generado de forma automática.
HTTP method and URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex
Cuerpo JSON de la solicitud:
{ "deployedIndex": { "id": "DEPLOYED_INDEX_ID", "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID", "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME" "psc_automation_configs": [ {"project_id": "PROJECT_ID", "network": "NETWORK_1"}, {"project_id": "PROJECT_ID", "network": "NETWORK_2" }] } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata", "genericMetadata": { "createTime": "2022-10-19T17:53:16.502088Z", "updateTime": "2022-10-19T17:53:16.502088Z" }, "deployedIndexId": "DEPLOYED_INDEX_ID" } }
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Borra la política de conexión de servicio
Si necesitas borrar la política de conexión de servicio, ejecuta el siguiente comando:
gcloud network-connectivity service-connection-policies delete --project=<vpc_project> –-region=<region> <policy_name>
Implementa con conexión manual
Implementa el índice y crea una regla de reenvío en tu proyecto de VPC.
Implementa el índice
Ahora que el índice está listo, en este paso, implementarás el índice en el extremo que creaste con Private Service Connect habilitado.
gcloud
En este ejemplo, se usa el comandogcloud ai index-endpoints deploy-index
.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- INDEX_ENDPOINT_ID: Es el ID del extremo del índice.
- DEPLOYED_INDEX_ID: Una cadena especificada por el usuario para identificar de forma inequívoca el índice implementado. Debe comenzar con una letra y contener solo letras, números o guiones bajos. Consulta DeployedIndex.id para obtener lineamientos de formato.
- DEPLOYED_INDEX_ENDPOINT_NAME: nombre visible del extremo de índice implementado.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \ --deployed-index-id=DEPLOYED_INDEX_ID \ --display-name=DEPLOYED_INDEX_ENDPOINT_NAME \ --index=INDEX_ID \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ` --deployed-index-id=DEPLOYED_INDEX_ID ` --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ` --index=INDEX_ID ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID ^ --deployed-index-id=DEPLOYED_INDEX_ID ^ --display-name=DEPLOYED_INDEX_ENDPOINT_NAME ^ --index=INDEX_ID ^ --region=LOCATION ^ --project=PROJECT_ID
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- INDEX_ENDPOINT_ID: Es el ID del extremo del índice.
- DEPLOYED_INDEX_ID: Una cadena especificada por el usuario para identificar de forma inequívoca el índice implementado. Debe comenzar con una letra y contener solo letras, números o guiones bajos. Consulta DeployedIndex.id para obtener lineamientos de formato.
- DEPLOYED_INDEX_ENDPOINT_NAME: nombre visible del extremo de índice implementado.
- INDEX_ID: Es el ID del índice.
- LOCATION: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto de Google Cloud.
- PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
HTTP method and URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex
Cuerpo JSON de la solicitud:
{ "deployedIndex": { "id": "DEPLOYED_INDEX_ID", "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID", "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployIndexOperationMetadata", "genericMetadata": { "createTime": "2022-10-19T17:53:16.502088Z", "updateTime": "2022-10-19T17:53:16.502088Z" }, "deployedIndexId": "DEPLOYED_INDEX_ID" } }
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Console
Usa estas instrucciones para implementar tu índice.
- En la sección de Vertex AI de la consola de Google Cloud, ve a la sección Implementación y uso. Elige Vector Search
- Aparecerá una lista de los índices activos.
- Selecciona el nombre del índice que deseas implementar. Se abrirá la página de detalles del índice.
- En la página de detalles del índice, haz clic en Implementar en el extremo. Se abrirá el panel de implementación de índices.
- Ingresa un nombre visible. Este nombre actúa como un ID y no se puede actualizar.
- En el menú desplegable Extremo, selecciona el extremo en el que deseas implementar este índice. Nota: El extremo no estará disponible si el índice ya se implementó en él.
- Opcional: en el campo Tipo de máquina, selecciona estándar o capacidad de memoria alta.
- Opcional. Selecciona Habilitar ajuste de escala automático para cambiar el tamaño de la cantidad de nodos automáticamente según las demandas de tus cargas de trabajo. La cantidad predeterminada de réplicas es 2 si el ajuste de escala automático está inhabilitado.
- Haz clic en Implementar para implementar el modelo en el extremo. Nota: La implementación demora alrededor de 30 minutos.
Crea una regla de reenvío en el proyecto de VPC
Una vez completada la implementación del índice, el extremo del índice muestra un URI de adjunto del servicio en lugar de una dirección IP. Debes crear una dirección de procesamiento y una regla de reenvío en el proyecto de VPC que se oriente al adjunto de servicio mediante la dirección de procesamiento creada. Para crear una dirección de procesamiento, usa el siguiente ejemplo:
gcloud compute addresses create ${ADDRESS_NAME:?} \
--region=${REGION:?} \
--subnet=${SUBNET_NAME:?} \
--project=${VPC_PROJECT:?}
Para crear una regla de reenvío que se oriente al URI del adjunto de servicio mediante la dirección de procesamiento creada, usa el siguiente ejemplo:
SERVICE_ATTACHMENT_URI=`gcloud ai index-endpoints describe {INDEX_ENDPOINT_ID}
--format="value(deployedIndexes.privateEndpoints.serviceAttachment)"`
gcloud compute forwarding-rules create ${ENDPOINT_NAME:?} \
--network=${NETWORK_NAME:?} \
--address=${ADDRESS_NAME:?} \
--target-service-attachment=${SERVICE_ATTACHMENT_URI:?} \
--project=${VPC_PROJECT:?} \
--region=${REGION:?}
(Opcional) Crea un registro DNS para la dirección IP
Si deseas conectarte y cargar sin memorizar la dirección IP real, puedes crear un registro DNS. Este paso es opcional.
DNS_NAME_SUFFIX=matchingengine.vertexai.goog. # Don't forget the "." in the end.
DNS_NAME=${INDEX_ENDPOINT_ID:?}.${REGION:?}.${DNS_NAME_SUFFIX:?}
gcloud dns managed-zones create ${DNS_ZONE_NAME:?} \
--dns-name=${DNS_NAME_SUFFIX:?} \
--visibility=private \
--project=${VPC_PROJECT:?} \
--region=${REGION:?}
gcloud dns record-sets create ${DNS_NAME:?} \
--rrdatas=${IP_ADDRESS:?} \
--type=A --ttl=60 \
--zone=${DNS_ZONE_NAME:?} \
--project=${VPC_PROJECT:?} \
--region=${REGION:?}
Envía consultas al extremo del índice
Ahora que creaste un extremo con Private Service Connect y creaste el índice, puedes comenzar a ejecutar consultas.
Para consultar tu índice, consulta Índices de consulta para obtener los vecinos más cercanos.
¿Qué sigue?
- Obtén más información sobre cómo actualizar y volver a compilar el índice.
- Obtén más información sobre cómo supervisar el extremo del índice.