Implemente e faça a gestão de pontos finais de índice numa rede VPC

A implementação de um índice num ponto final inclui as três tarefas seguintes:

  1. Crie um IndexEndpoint, se necessário, ou reutilize um IndexEndpoint existente.
  2. Obtenha o ID IndexEndpoint.
  3. Implemente o índice no IndexEndpoint.

Crie um IndexEndpoint na sua rede de VPC

Se estiver a implementar um Index num IndexEndpoint existente, pode ignorar este passo.

Antes de usar um índice para publicar consultas de correspondência de vetores online, tem de implementar o Index num IndexEndpoint na sua rede de intercâmbio da rede VPC. O primeiro passo é criar um IndexEndpoint. Pode implementar mais do que um índice num IndexEndpoint que partilhe a mesma rede de VPC.

gcloud

O exemplo seguinte usa o comando gcloud ai index-endpoints create.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INDEX_ENDPOINT_NAME: nome a apresentar do ponto final do índice.
  • VPC_NETWORK_NAME: o nome da rede do Google Compute Engine com a qual o ponto final do índice deve ser interligado.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai index-endpoints create \
    --display-name=INDEX_ENDPOINT_NAME \
    --network=VPC_NETWORK_NAME \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai index-endpoints create `
    --display-name=INDEX_ENDPOINT_NAME `
    --network=VPC_NETWORK_NAME `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai index-endpoints create ^
    --display-name=INDEX_ENDPOINT_NAME ^
    --network=VPC_NETWORK_NAME ^
    --region=LOCATION ^
    --project=PROJECT_ID

Deve receber uma resposta semelhante à seguinte:

The Google Cloud CLI tool might take a few minutes to create the IndexEndpoint.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INDEX_ENDPOINT_NAME: nome a apresentar do ponto final do índice.
  • VPC_NETWORK_NAME: o nome da rede do Google Compute Engine com a qual o ponto final do índice deve ser interligado.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints

Corpo JSON do pedido:

{
  "display_name": "INDEX_ENDPOINT_NAME",
  "network": "VPC_NETWORK_NAME"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-13T04:09:56.641107Z",
      "updateTime": "2022-01-13T04:09:56.641107Z"
    }
  }
}

Pode sondar o estado da operação até que a resposta inclua "done": true.

Terraform

O exemplo seguinte usa o recurso do Terraform vertex_ai_index_endpoint para criar um ponto final de índice.

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

resource "google_vertex_ai_index_endpoint" "default" {
  display_name = "sample-endpoint"
  description  = "A sample index endpoint within a VPC network"
  region       = "us-central1"
  network      = "projects/${data.google_project.project.number}/global/networks/${google_compute_network.default.name}"
  depends_on = [
    google_service_networking_connection.default
  ]
}

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.default.name]
  # Workaround to allow `terraform destroy`, see https://github.com/hashicorp/terraform-provider-google/issues/18729
  deletion_policy = "ABANDON"
}

resource "google_compute_global_address" "default" {
  name          = "sample-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_compute_network" "default" {
  name = "sample-network"
}

data "google_project" "project" {}

# Cloud Storage bucket name must be unique
resource "random_id" "default" {
  byte_length = 8
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.default.hex}"
  location                    = "us-central1"
  uniform_bucket_level_access = true
}

# Create index content
resource "google_storage_bucket_object" "data" {
  name    = "contents/data.json"
  bucket  = google_storage_bucket.bucket.name
  content = <<EOF
{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
{"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
EOF
}

resource "google_vertex_ai_index" "default" {
  region       = "us-central1"
  display_name = "sample-index-batch-update"
  description  = "A sample index for batch update"
  labels = {
    foo = "bar"
  }

  metadata {
    contents_delta_uri = "gs://${google_storage_bucket.bucket.name}/contents"
    config {
      dimensions                  = 2
      approximate_neighbors_count = 150
      distance_measure_type       = "DOT_PRODUCT_DISTANCE"
      algorithm_config {
        tree_ah_config {
          leaf_node_embedding_count    = 500
          leaf_nodes_to_search_percent = 7
        }
      }
    }
  }
  index_update_method = "BATCH_UPDATE"

  timeouts {
    create = "2h"
    update = "1h"
  }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_create_index_endpoint_vpc(
    project: str, location: str, display_name: str, network: str
) -> aiplatform.MatchingEngineIndexEndpoint:
    """Create a vector search index endpoint within a VPC network.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index endpoint display name
        network(str): Required. The VPC network name, in the format of
            projects/{project number}/global/networks/{network name}.

    Returns:
        aiplatform.MatchingEngineIndexEndpoint - The created index endpoint.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create Index Endpoint
    index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
        display_name=display_name,
        network=network,
        description="Matching Engine VPC Index Endpoint",
    )

    return index_endpoint

Consola

Siga estas instruções para criar um ponto final de índice.

  1. Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search

    Aceda a Vector Search

  2. É apresentada uma lista dos seus índices ativos.
  3. Na parte superior da página, selecione o separador Pontos finais do índice. Os seus pontos finais de índice são apresentados.
  4. Clique em Criar novo ponto final de índice. É aberto o painel Criar um novo ponto final de índice.
  5. Introduza um nome a apresentar para o ponto final do índice.
  6. No campo Região, selecione uma região no menu pendente.
  7. No campo Acesso, selecione Privado.
  8. Introduza os detalhes da rede VPC com peering. Introduza o nome completo da rede do Compute Engine com a qual a tarefa deve ser interligada. O formato deve ser projects/{project_num}/global/networks/{network_id}
  9. Clique em Criar.

Implemente um índice

gcloud

Este exemplo usa o gcloud ai index-endpoints deploy-index comando.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • DEPLOYED_INDEX_ENDPOINT_NAME: nome a apresentar do ponto final do índice implementado.
  • INDEX_ID: o ID do índice.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou 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

Deve receber uma resposta semelhante à seguinte:

The Google Cloud CLI tool might take a few minutes to create the IndexEndpoint.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • DEPLOYED_INDEX_ENDPOINT_NAME: nome a apresentar do ponto final do índice implementado.
  • INDEX_ID: o ID do índice.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

Corpo JSON do pedido:

{
 "deployedIndex": {
   "id": "DEPLOYED_INDEX_ID",
   "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
   "displayName": "DEPLOYED_INDEX_ENDPOINT_NAME"
 }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
 "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"
 }
}

Terraform

O exemplo seguinte usa o recurso do Terraform vertex_ai_index_endpoint_deployed_index para criar um ponto final do índice implementado.

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

provider "google" {
  region = "us-central1"
}

resource "google_vertex_ai_index_endpoint_deployed_index" "default" {
  depends_on        = [google_vertex_ai_index_endpoint.default]
  index_endpoint    = google_vertex_ai_index_endpoint.default.id
  index             = google_vertex_ai_index.default.id
  deployed_index_id = "deployed_index_for_vpc"
}

resource "google_vertex_ai_index_endpoint" "default" {
  display_name = "sample-endpoint"
  description  = "A sample index endpoint within a VPC network"
  region       = "us-central1"
  network      = "projects/${data.google_project.project.number}/global/networks/${google_compute_network.default.name}"
  depends_on = [
    google_service_networking_connection.default
  ]
}

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.default.name]
  # Workaround to allow `terraform destroy`, see https://github.com/hashicorp/terraform-provider-google/issues/18729
  deletion_policy = "ABANDON"
}

resource "google_compute_global_address" "default" {
  name          = "sample-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_compute_network" "default" {
  name = "sample-network"
}

data "google_project" "project" {}

# Cloud Storage bucket name must be unique
resource "random_id" "default" {
  byte_length = 8
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.default.hex}"
  location                    = "us-central1"
  uniform_bucket_level_access = true
}

# Create index content
resource "google_storage_bucket_object" "data" {
  name    = "contents/data.json"
  bucket  = google_storage_bucket.bucket.name
  content = <<EOF
{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
{"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
EOF
}

resource "google_vertex_ai_index" "default" {
  region       = "us-central1"
  display_name = "sample-index-batch-update"
  description  = "A sample index for batch update"
  labels = {
    foo = "bar"
  }

  metadata {
    contents_delta_uri = "gs://${google_storage_bucket.bucket.name}/contents"
    config {
      dimensions                  = 2
      approximate_neighbors_count = 150
      distance_measure_type       = "DOT_PRODUCT_DISTANCE"
      algorithm_config {
        tree_ah_config {
          leaf_node_embedding_count    = 500
          leaf_nodes_to_search_percent = 7
        }
      }
    }
  }
  index_update_method = "BATCH_UPDATE"

  timeouts {
    create = "2h"
    update = "1h"
  }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_deploy_index(
    project: str,
    location: str,
    index_name: str,
    index_endpoint_name: str,
    deployed_index_id: str,
) -> None:
    """Deploy a vector search index to a vector search index endpoint.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
        index_endpoint_name (str): Required. Index endpoint to deploy the index
          to.
        deployed_index_id (str): Required. The user specified ID of the
          DeployedIndex.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    # Create the index endpoint instance from an existing endpoint.
    index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Deploy Index to Endpoint
    index_endpoint = index_endpoint.deploy_index(
        index=index, deployed_index_id=deployed_index_id
    )

    print(index_endpoint.deployed_indexes)

Consola

Siga estas instruções para implementar o seu índice num ponto final.

  1. Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search

    Aceda a Vector Search

  2. É apresentada uma lista dos seus índices ativos.
  3. Selecione o nome do índice que quer implementar. É apresentada a página de detalhes do índice.
  4. Na página de detalhes do índice, clique em Implementar no ponto final. É aberto o painel de implementação do índice.
  5. Introduza um nome a apresentar. Este nome funciona como um ID e não pode ser atualizado.
  6. No menu pendente Ponto final, selecione o ponto final no qual quer implementar este índice. Nota: o ponto final não está disponível se o índice já estiver implementado no mesmo.
  7. Opcional: no campo Tipo de máquina, selecione padrão ou memória elevada.
  8. Opcional. Selecione Ativar o dimensionamento automático para redimensionar automaticamente o número de nós com base nas exigências das suas cargas de trabalho. O número predefinido de réplicas é 2 se o dimensionamento automático estiver desativado.
  9. Clique em Implementar para implementar o índice no ponto final. Nota: a implementação demora cerca de 30 minutos.

Ative o dimensionamento automático

A pesquisa vetorial suporta o dimensionamento automático, que pode redimensionar automaticamente o número de nós com base nas exigências das suas cargas de trabalho. Quando a procura é elevada, são adicionados nós ao conjunto de nós, que não excedem o tamanho máximo que designar. Quando a procura é baixa, o conjunto de nós é reduzido até um tamanho mínimo que designa. Pode verificar os nós reais em utilização e as alterações monitorizando as réplicas atuais.

Para ativar o dimensionamento automático, especifique maxReplicaCount e minReplicaCount quando implementar o índice:

gcloud

O exemplo seguinte usa o comando gcloud ai index-endpoints deploy-index.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • DEPLOYED_INDEX_NAME: nome a apresentar do índice implementado.
  • INDEX_ID: o ID do índice.
  • MIN_REPLICA_COUNT: o número mínimo de réplicas de máquinas em que o índice implementado será sempre implementado. Se especificado, o valor tem de ser igual ou superior a 1.
  • MAX_REPLICA_COUNT: número máximo de réplicas de máquinas nas quais o índice implementado pode ser implementado.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai index-endpoints deploy-index INDEX_ENDPOINT_ID \
    --deployed-index-id=DEPLOYED_INDEX_ID \
    --display-name=DEPLOYED_INDEX_NAME \
    --index=INDEX_ID \
    --min-replica-count=MIN_REPLICA_COUNT \
    --max-replica-count=MAX_REPLICA_COUNT \
    --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_NAME `
    --index=INDEX_ID `
    --min-replica-count=MIN_REPLICA_COUNT `
    --max-replica-count=MAX_REPLICA_COUNT `
    --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_NAME ^
    --index=INDEX_ID ^
    --min-replica-count=MIN_REPLICA_COUNT ^
    --max-replica-count=MAX_REPLICA_COUNT ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • DEPLOYED_INDEX_NAME: nome a apresentar do índice implementado.
  • INDEX_ID: o ID do índice.
  • MIN_REPLICA_COUNT: o número mínimo de réplicas de máquinas em que o índice implementado será sempre implementado. Se especificado, o valor tem de ser igual ou superior a 1.
  • MAX_REPLICA_COUNT: número máximo de réplicas de máquinas nas quais o índice implementado pode ser implementado.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

Corpo JSON do pedido:

{
 "deployedIndex": {
   "id": "DEPLOYED_INDEX_ID",
   "index": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID",
   "displayName": "DEPLOYED_INDEX_NAME",
   "automaticResources": {
     "minReplicaCount": MIN_REPLICA_COUNT,
     "maxReplicaCount": MAX_REPLICA_COUNT
   }
 }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
 "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": "2023-10-19T17:53:16.502088Z",
     "updateTime": "2023-10-19T17:53:16.502088Z"
   },
   "deployedIndexId": "DEPLOYED_INDEX_ID"
 }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_deploy_autoscaling_index(
    project: str,
    location: str,
    index_name: str,
    index_endpoint_name: str,
    deployed_index_id: str,
    min_replica_count: int,
    max_replica_count: int,
) -> None:
    """Deploy a vector search index to a vector search index endpoint.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_name (str): Required. The index to update. A fully-qualified index
          resource name or a index ID.  Example:
          "projects/123/locations/us-central1/indexes/my_index_id" or
          "my_index_id".
        index_endpoint_name (str): Required. Index endpoint to deploy the index
          to.
        deployed_index_id (str): Required. The user specified ID of the
          DeployedIndex.
        min_replica_count (int): Required. The minimum number of replicas to
          deploy.
        max_replica_count (int): Required. The maximum number of replicas to
          deploy.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index instance from an existing index
    index = aiplatform.MatchingEngineIndex(index_name=index_name)

    # Create the index endpoint instance from an existing endpoint.
    index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Deploy Index to Endpoint. Specifying min and max replica counts will
    # enable autoscaling.
    index_endpoint.deploy_index(
        index=index,
        deployed_index_id=deployed_index_id,
        min_replica_count=min_replica_count,
        max_replica_count=max_replica_count,
    )

Consola

Só pode ativar o ajuste de escala automático a partir da consola durante a implementação do índice.

  1. Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search

    Aceda a Vector Search

  2. É apresentada uma lista dos seus índices ativos.
  3. Selecione o nome do índice que quer implementar. É apresentada a página de detalhes do índice.
  4. Na página de detalhes do índice, clique em Implementar no ponto final. É aberto o painel de implementação do índice.
  5. Introduza um nome a apresentar. Este nome funciona como um ID e não pode ser atualizado.
  6. No menu pendente Ponto final, selecione o ponto final no qual quer implementar este índice. Nota: o ponto final não está disponível se o índice já estiver implementado no mesmo.
  7. Opcional: no campo Tipo de máquina, selecione padrão ou memória elevada.
  8. Opcional. Selecione Ativar o dimensionamento automático para redimensionar automaticamente o número de nós com base nas exigências das suas cargas de trabalho. O número predefinido de réplicas é 2 se o dimensionamento automático estiver desativado.
  • Se minReplicaCount e maxReplicaCount não estiverem definidos, são definidos como 2 por predefinição.
  • Se apenas maxReplicaCount estiver definido, minReplicaCount é definido como 2 por predefinição.
  • Se apenas minReplicaCount estiver definido, maxReplicaCount é definido como igual a minReplicaCount.

Mutação de um DeployedIndex

Pode usar a API MutateDeployedIndex para atualizar os recursos de implementação (por exemplo, minReplicaCount e maxReplicaCount) de um índice já implementado.

  • Os utilizadores não podem alterar o machineType após a implementação do índice.
  • Se maxReplicaCount não for especificado no pedido, o DeployedIndex vai continuar a usar o maxReplicaCount existente.

gcloud

O exemplo seguinte usa o comando gcloud ai index-endpoints mutate-deployed-index.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • MIN_REPLICA_COUNT: o número mínimo de réplicas de máquinas em que o índice implementado será sempre implementado. Se especificado, o valor tem de ser igual ou superior a 1.
  • MAX_REPLICA_COUNT: número máximo de réplicas de máquinas nas quais o índice implementado pode ser implementado.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai index-endpoints mutate-deployed-index INDEX_ENDPOINT_ID \
    --deployed-index-id=DEPLOYED_INDEX_ID \
    --min-replica-count=MIN_REPLICA_COUNT \
    --max-replica-count=MAX_REPLICA_COUNT \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai index-endpoints mutate-deployed-index INDEX_ENDPOINT_ID `
    --deployed-index-id=DEPLOYED_INDEX_ID `
    --min-replica-count=MIN_REPLICA_COUNT `
    --max-replica-count=MAX_REPLICA_COUNT `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai index-endpoints mutate-deployed-index INDEX_ENDPOINT_ID ^
    --deployed-index-id=DEPLOYED_INDEX_ID ^
    --min-replica-count=MIN_REPLICA_COUNT ^
    --max-replica-count=MAX_REPLICA_COUNT ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • MIN_REPLICA_COUNT: o número mínimo de réplicas de máquinas em que o índice implementado será sempre implementado. Se especificado, o valor tem de ser igual ou superior a 1.
  • MAX_REPLICA_COUNT: número máximo de réplicas de máquinas nas quais o índice implementado pode ser implementado.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:mutateDeployedIndex

Corpo JSON do pedido:

{
  "deployedIndex": {
    "id": "DEPLOYED_INDEX_ID",
    "index": "projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID",
    "displayName": "DEPLOYED_INDEX_NAME",
    "min_replica_count": "MIN_REPLICA_COUNT",
    "max_replica_count": "MAX_REPLICA_COUNT"
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
"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": "2020-10-19T17:53:16.502088Z",
    "updateTime": "2020-10-19T17:53:16.502088Z"
  },
  "deployedIndexId": "DEPLOYED_INDEX_ID"
}
}

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform. Para mais informações, consulte a Terraform documentação de referência do fornecedor.

provider "google" {
  region = "us-central1"
}

resource "google_vertex_ai_index_endpoint_deployed_index" "default" {
  depends_on        = [google_vertex_ai_index_endpoint.default]
  index_endpoint    = google_vertex_ai_index_endpoint.default.id
  index             = google_vertex_ai_index.default.id
  deployed_index_id = "deployed_index_for_mutate_vpc"
  # This example assumes the deployed index endpoint's resources configuration
  # differs from the values specified below. Terraform will mutate the deployed
  # index endpoint's resource configuration to match.
  automatic_resources {
    min_replica_count = 3
    max_replica_count = 5
  }
}

resource "google_vertex_ai_index_endpoint" "default" {
  display_name = "sample-endpoint"
  description  = "A sample index endpoint within a VPC network"
  region       = "us-central1"
  network      = "projects/${data.google_project.project.number}/global/networks/${google_compute_network.default.name}"
  depends_on = [
    google_service_networking_connection.default
  ]
}

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.default.name]
  # Workaround to allow `terraform destroy`, see https://github.com/hashicorp/terraform-provider-google/issues/18729
  deletion_policy = "ABANDON"
}

resource "google_compute_global_address" "default" {
  name          = "sample-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_compute_network" "default" {
  name = "sample-network"
}

data "google_project" "project" {}

# Cloud Storage bucket name must be unique
resource "random_id" "default" {
  byte_length = 8
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.default.hex}"
  location                    = "us-central1"
  uniform_bucket_level_access = true
}

# Create index content
resource "google_storage_bucket_object" "data" {
  name    = "contents/data.json"
  bucket  = google_storage_bucket.bucket.name
  content = <<EOF
{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
{"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
EOF
}

resource "google_vertex_ai_index" "default" {
  region       = "us-central1"
  display_name = "sample-index-batch-update"
  description  = "A sample index for batch update"
  labels = {
    foo = "bar"
  }

  metadata {
    contents_delta_uri = "gs://${google_storage_bucket.bucket.name}/contents"
    config {
      dimensions                  = 2
      approximate_neighbors_count = 150
      distance_measure_type       = "DOT_PRODUCT_DISTANCE"
      algorithm_config {
        tree_ah_config {
          leaf_node_embedding_count    = 500
          leaf_nodes_to_search_percent = 7
        }
      }
    }
  }
  index_update_method = "BATCH_UPDATE"

  timeouts {
    create = "2h"
    update = "1h"
  }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_mutate_deployed_index(
    project: str,
    location: str,
    index_endpoint_name: str,
    deployed_index_id: str,
    min_replica_count: int,
    max_replica_count: int,
) -> None:
    """Mutate the deployment resources of an already deployed index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_endpoint_name (str): Required. Index endpoint to run the query
          against.
        deployed_index_id (str): Required. The ID of the DeployedIndex to run
          the queries against.
        min_replica_count (int): Required. The minimum number of replicas to
          deploy.
        max_replica_count (int): Required. The maximum number of replicas to
          deploy.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index endpoint instance from an existing endpoint
    index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Mutate the deployed index
    index_endpoint.mutate_deployed_index(
        deployed_index_id=deployed_index_id,
        min_replica_count=min_replica_count,
        max_replica_count=max_replica_count,
    )

Definições de implementação que afetam o desempenho

As seguintes definições de implementação podem afetar a latência, a disponibilidade e o custo quando usa a pesquisa vetorial. Estas orientações aplicam-se à maioria dos casos. No entanto, experimente sempre as suas configurações para se certificar de que funcionam para o seu exemplo de utilização.

Definição Impacto no desempenho
Tipo de máquina

A seleção de hardware tem uma interação direta com o tamanho do fragmento selecionado. Consoante as opções de fragmentação especificadas no momento da criação do índice, cada tipo de máquina oferece uma compensação entre o desempenho e o custo.

Consulte a página de preços para determinar o hardware disponível e os preços. Em geral, o desempenho aumenta na seguinte ordem:

  • Norma E2
  • E2 highmem
  • N1 padrão
  • N2D padrão
Número mínimo de réplicas

minReplicaCount reserva uma capacidade mínima para a disponibilidade e a latência, de modo a garantir que o sistema não tem problemas de arranque a frio quando o tráfego aumenta rapidamente a partir de níveis baixos.

Se tiver cargas de trabalho que diminuem para níveis baixos e, em seguida, aumentam rapidamente para níveis mais elevados, considere definir minReplicaCount para um número que possa acomodar os picos iniciais de tráfego.

Número máximo de réplicas O maxReplicaCount permite-lhe controlar principalmente o custo de utilização. Pode optar por impedir o aumento dos custos acima de um determinado limite, com a desvantagem de permitir uma maior latência e reduzir a disponibilidade.

Lista IndexEndpoints

Para listar os seus recursos IndexEndpoint e ver as informações de quaisquer instâncias DeployedIndex associadas, execute o seguinte código:

gcloud

O exemplo seguinte usa o comando gcloud ai index-endpoints list.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai index-endpoints list \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai index-endpoints list `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai index-endpoints list ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
 "indexEndpoints": [
   {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID",
     "displayName": "INDEX_ENDPOINT_DISPLAY_NAME",
     "deployedIndexes": [
       {
         "id": "DEPLOYED_INDEX_ID",
         "index": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID",
         "displayName": "DEPLOYED_INDEX_DISPLAY_NAME",
         "createTime": "2021-06-04T02:23:40.178286Z",
         "privateEndpoints": {
           "matchGrpcAddress": "GRPC_ADDRESS"
         },
         "indexSyncTime": "2022-01-13T04:22:00.151916Z",
         "automaticResources": {
           "minReplicaCount": 2,
           "maxReplicaCount": 10
         }
       }
     ],
     "etag": "AMEw9yP367UitPkLo-khZ1OQvqIK8Q0vLAzZVF7QjdZ5O3l7Zow-mzBo2l6xmiuuMljV",
     "createTime": "2021-03-17T04:47:28.460373Z",
     "updateTime": "2021-06-04T02:23:40.930513Z",
     "network": "VPC_NETWORK_NAME"
   }
 ]
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_list_index_endpoint(
    project: str, location: str
) -> List[aiplatform.MatchingEngineIndexEndpoint]:
    """List vector search index endpoints.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name

    Returns:
        List of aiplatform.MatchingEngineIndexEndpoint
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # List Index Endpoints
    return aiplatform.MatchingEngineIndexEndpoint.list()

Consola

Siga estas instruções para ver uma lista dos seus pontos finais de índice.

  1. Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search

    Aceda a Vector Search

  2. Na parte superior da página, selecione o separador Ponto final do índice.
  3. São apresentados todos os pontos finais de índice existentes.

Para mais informações, consulte a documentação de referência para IndexEndpoint.

Anule a implementação de um índice

Para anular a implementação de um índice, execute o seguinte código:

gcloud

O exemplo seguinte usa o comando gcloud ai index-endpoints undeploy-index.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai index-endpoints undeploy-index INDEX_ENDPOINT_ID \
    --deployed-index-id=DEPLOYED_INDEX_ID \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai index-endpoints undeploy-index INDEX_ENDPOINT_ID `
    --deployed-index-id=DEPLOYED_INDEX_ID `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai index-endpoints undeploy-index INDEX_ENDPOINT_ID ^
    --deployed-index-id=DEPLOYED_INDEX_ID ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • DEPLOYED_INDEX_ID: uma string especificada pelo utilizador para identificar exclusivamente o índice implementado. Tem de começar com uma letra e conter apenas letras, números ou carateres de sublinhado. Consulte DeployedIndex.id para ver as diretrizes de formato.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID:undeployIndex

Corpo JSON do pedido:

{
 "deployed_index_id": "DEPLOYED_INDEX_ID"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
 "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
 "metadata": {
   "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UndeployIndexOperationMetadata",
   "genericMetadata": {
     "createTime": "2022-01-13T04:09:56.641107Z",
     "updateTime": "2022-01-13T04:09:56.641107Z"
   }
 }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_undeploy_index(
    project: str,
    location: str,
    index_endpoint_name: str,
    deployed_index_id: str,
) -> None:
    """Mutate the deployment resources of an already deployed index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_endpoint_name (str): Required. Index endpoint to run the query
          against.
        deployed_index_id (str): Required. The ID of the DeployedIndex to run
          the queries against.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index endpoint instance from an existing endpoint
    index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Undeploy the index
    index_endpoint.undeploy_index(
        deployed_index_id=deployed_index_id,
    )

Consola

Siga estas instruções para anular a implementação de um índice.

  1. Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search

    Aceda a Vector Search

  2. É apresentada uma lista dos seus índices ativos.
  3. Selecione o índice que quer anular a implementação. É apresentada a página de detalhes do índice.
  4. Na secção Índices implementados, identifique o ponto final do índice que quer anular a implementação.
  5. Clique no menu opções que se encontra na mesma linha que o ponto final do índice e selecione Anular implementação.
  6. É apresentado um ecrã de confirmação. Clique em Anular implementação. Nota: a anulação da implementação pode demorar até 30 minutos.

Elimine um IndexEndpoint

Antes de eliminar um IndexEndpoint, tem de undeploy de todos os índices implementados no ponto final.

gcloud

O exemplo seguinte usa o comando gcloud ai index-endpoints delete.

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai index-endpoints delete INDEX_ENDPOINT_ID \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai index-endpoints delete INDEX_ENDPOINT_ID `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai index-endpoints delete INDEX_ENDPOINT_ID ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INDEX_ENDPOINT_ID: o ID do ponto final do índice.
  • LOCATION: a região onde está a usar o Vertex AI.
  • PROJECT_ID: o seu Google Cloud ID do projeto.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.

Método HTTP e URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
 "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
 "metadata": {
   "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
   "genericMetadata": {
     "createTime": "2022-01-13T04:36:19.142203Z",
     "updateTime": "2022-01-13T04:36:19.142203Z"
   }
 },
 "done": true,
 "response": {
   "@type": "type.googleapis.com/google.protobuf.Empty"
 }
}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def vector_search_delete_index_endpoint(
    project: str, location: str, index_endpoint_name: str, force: bool = False
) -> None:
    """Delete a vector search index endpoint.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_endpoint_name (str): Required. Index endpoint to run the query
          against.
        force (bool): Required. If true, undeploy any deployed indexes on this
          endpoint before deletion.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index endpoint instance from an existing endpoint
    index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Delete the index endpoint
    index_endpoint.delete(force=force)

Consola

Siga estas instruções para eliminar um ponto final do índice.

  1. Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search

    Aceda a Vector Search

  2. Na parte superior da página, selecione o separador Pontos finais do índice.
  3. São apresentados todos os pontos finais de índice existentes.
  4. Clique no menu de opções que se encontra na mesma linha que o ponto final do índice que quer eliminar e selecione Eliminar.
  5. É apresentado um ecrã de confirmação. Clique em Eliminar. O seu ponto final de índice foi eliminado.