Implemente e faça a gestão de pontos finais de índice públicos

São necessários alguns passos antes de poder consultar um índice:

  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

gcloud

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.
  • 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 \
    --public-endpoint-enabled \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai index-endpoints create `
    --display-name=INDEX_ENDPOINT_NAME `
    --public-endpoint-enabled `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai index-endpoints create ^
    --display-name=INDEX_ENDPOINT_NAME ^
    --public-endpoint-enabled ^
    --region=LOCATION ^
    --project=PROJECT_ID

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.
  • 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",
 "publicEndpointEnabled": "true"
}

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é a resposta incluir "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 with a public endpoint"
  region                  = "us-central1"
  public_endpoint_enabled = true
}

# 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(
    project: str, location: str, display_name: str
) -> None:
    """Create a vector search index endpoint.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index endpoint display name
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

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

    print(index_endpoint.name)

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 Padrão.
  8. Clique em Criar.

Implemente um índice num ponto final

gcloud

Este exemplo 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_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

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

resource "google_vertex_ai_index_endpoint" "default" {
  display_name            = "sample-endpoint"
  description             = "A sample index endpoint with a public endpoint"
  region                  = "us-central1"
  public_endpoint_enabled = true
}

# 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.

Obtenha o nome do domínio do índice

Após a implementação do índice, precisa do nome do domínio para poder usar o índice para uma consulta online. O valor está disponível em publicEndpointDomainName.

curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`"  ${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/${REGION}/indexEndpoints/${INDEX_ENDPOINT_ID}

Exemplo de resposta

{
  "name": "projects/181224308459/locations/us-central1/indexEndpoints/3370566089086861312",
  "displayName": "public-endpoint-test1",
  "deployedIndexes": [
    {
      "id": "test_index_public1",
      "index": "projects/181224308459/locations/us-central1/indexes/7733428228102029312",
      "displayName": "test_index_public1",
      "createTime": "2023-02-08T23:19:58.026843Z",
      "indexSyncTime": "2023-02-09T05:26:19.309417Z",
      "automaticResources": {
        "minReplicaCount": 2,
        "maxReplicaCount": 2
      },
      "deploymentGroup": "default"
    }
  ],
  "etag": "AMEw9yNkXQcSke8iqW9SYxfhj_hT9GCwPt1XlxVwJRSCxiXOYnG4CKrZM_X0oH-XN8tR",
  "createTime": "2023-02-08T22:44:20.285382Z",
  "updateTime": "2023-02-08T22:44:26.515162Z",
  "publicEndpointDomainName": "1957880287.us-central1-181224308459.vdb.vertexai.goog"
}

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 depois de o índice ser implementado.
  • Se maxReplicaCount não for especificado no pedido, o DeployedIndex continua 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"
  # 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 with a public endpoint"
  region                  = "us-central1"
  public_endpoint_enabled = true
}

# 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 a partir do ponto final, 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 a partir de um 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 índice que quer anular a implementação. É apresentada a página de detalhes do índice.
  4. Na secção Índices implementados, identifique a versão do índice que quer anular a implementação.
  5. Clique no menu de opções que se encontra na mesma linha que o í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 Ponto final 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 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.