Gerenciar índices

As seções a seguir descrevem como criar, listar e excluir índices.

Visão geral do índice

Um índice é um arquivo ou arquivos que consistem nos seus vetores de embedding. Esses vetores são feitos de grandes quantidades de dados que você quer implantar e consultar com a Vector Search. Com a Pesquisa de vetor, é possível criar dois tipos de índices, dependendo de como você planeja atualizá-los com os seus dados. É possível criar um índice projetado para atualizações em lote ou um índice projetado para transmitir suas atualizações.

Um índice em lote é usado quando você quer atualizar seu índice em lote, com dados que foram armazenados por um determinado período, como sistemas que são processados semanalmente ou mensalmente. Um índice de streaming é quando você quer que os dados do índice sejam atualizados à medida que novos dados são adicionados ao seu repositório de dados. Por exemplo, se você tem uma livraria e quer mostrar o novo inventário on-line o mais rápido possível. O tipo escolhido é importante, porque a configuração e os requisitos são diferentes.

Configurar parâmetros de índice

Antes de criar um índice, configure os parâmetros dele.

Por exemplo, crie um arquivo chamado index_metadata.json:

{
  "contentsDeltaUri": "gs://BUCKET_NAME/path",
  "config": {
    "dimensions": 100,
    "approximateNeighborsCount": 150,
    "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
    "shardSize": "SHARD_SIZE_MEDIUM",
    "algorithm_config": {
      "treeAhConfig": {
        "leafNodeEmbeddingCount": 5000,
        "fractionLeafNodesToSearch": 0.03
      }
    }
  }
}

É possível encontrar a definição de cada um desses campos nos parâmetros de configuração de índice.

Criar um índice

Tamanho do índice

Os dados do índice são divididos em partes iguais, chamadas de fragmentos para processamento. Ao criar um índice, é preciso especificar o tamanho dos fragmentos a serem usados. Os tamanhos com suporte são os seguintes:

  • SHARD_SIZE_SMALL: 2 GiB por fragmento.
  • SHARD_SIZE_MEDIUM: 20 GiB por fragmento.
  • SHARD_SIZE_LARGE: 50 GiB por fragmento.

Os tipos de máquina que podem ser usados para implantar o índice (usando endpoints públicos ou usando endpoints VPC) dependem do tamanho do fragmento do índice. A tabela a seguir mostra os tamanhos de fragmento com suporte a cada tipo de máquina:

Tipo de máquina SHARD_SIZE_SMALL SHARD_SIZE_MEDIUM SHARD_SIZE_LARGE
n1-standard-16
n1-standard-32
e2-standard-2 (padrão)
e2-standard-16 (padrão)
e2-highmem-16 (padrão)
n2d-standard-32

Para saber como o tamanho do fragmento e o tipo de máquina afetam o preço, consulte a página de preços da Vertex AI. Para saber como o tamanho do fragmento afeta o desempenho, consulte Parâmetros de configuração que afetam o desempenho.

Criar um índice para atualização em lote

Use estas instruções para criar e implantar o índice. Se você ainda não tiver os embeddings prontos, pule para Criar um índice de lote vazio. Com essa opção, não são necessários dados de embedding no momento da criação do índice.

Para criar um índice:

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • LOCAL_PATH_TO_METADATA_FILE: o caminho local para o arquivo de metadados.
  • INDEX_NAME: nome de exibição do índice.
  • LOCATION: a região em que você está usando a Vertex AI.
  • PROJECT_ID: o ID do projeto do Google Cloud.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai indexes create \
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE \
    --display-name=INDEX_NAME \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes create `
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE `
    --display-name=INDEX_NAME `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes create ^
    --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^
    --display-name=INDEX_NAME ^
    --region=LOCATION ^
    --project=PROJECT_ID

Você receberá uma resposta semelhante a esta

You can poll for the status of the operation for the response
to include "done": true. Use the following example to poll the status.

  $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1

Consulte gcloud ai operations para saber mais sobre o comando describe.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • INPUT_DIR: o caminho do diretório do Cloud Storage do conteúdo do índice.
  • INDEX_NAME: nome de exibição do índice.
  • LOCATION: a região em que você está usando a Vertex AI.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "display_name": "INDEX_NAME",
  "metadata": {
    "contentsDeltaUri": "INPUT_DIR",
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-08T01:21:10.147035Z",
      "updateTime": "2022-01-08T01:21:10.147035Z"
    }
  }
}

Terraform

O exemplo a seguir usa o recurso google_vertex_ai_index do Terraform para criar um índice de atualizações em lote.

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

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

# Create a Cloud Storage bucket
resource "google_storage_bucket" "bucket" {
  name                        = "vertex-ai-index-bucket-${random_id.bucket_name_suffix.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 o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

def vector_search_create_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> aiplatform.MatchingEngineIndex:
    """Create a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index display name
        gcs_uri (str): Optional. The Google Cloud Storage uri for index content

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

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        contents_delta_uri=gcs_uri,
        description="Matching Engine Index",
        dimensions=100,
        approximate_neighbors_count=150,
        leaf_node_embedding_count=500,
        leaf_nodes_to_search_percent=7,
        index_update_method="BATCH_UPDATE",  # Options: STREAM_UPDATE, BATCH_UPDATE
        distance_measure_type=aiplatform.matching_engine.matching_engine_index_config.DistanceMeasureType.DOT_PRODUCT_DISTANCE,
    )

    return index

Console

Use estas instruções para criar um índice para atualizações em lote.

  1. Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor

    Acessar a Vector Search

  2. Clique em Criar novo índice para abrir o painel Índice. O painel Criar um novo índice é exibido.
  3. No campo Nome de exibição, insira um nome para identificar exclusivamente o índice.
  4. No campo Descrição, forneça uma descrição para a finalidade do índice.
  5. No campo Região, selecione uma região na lista suspensa.
  6. No campo do Cloud Storage, pesquise e selecione a pasta do Cloud Storage em que os dados vetoriais estão armazenados.
  7. No menu suspenso Tipo de algoritmo, selecione o tipo de algoritmo que a Pesquisa de vetor usa para uma pesquisa eficiente. Se você selecionar o algoritmo treeAh, insira a contagem de vizinhos aproximados.
  8. No campo Dimensões, insira o número de dimensões dos vetores de entrada.
  9. No campo Método de atualização, selecione Lote.
  10. No campo Tamanho do fragmento, selecione no menu suspenso o tamanho do fragmento que você quer.
  11. Clique em Criar. O novo índice aparece na sua lista assim que estiver pronto. Observação: o tempo de build pode levar até uma hora para ser concluído.

Criar um índice de lote vazio

Para criar e implantar o índice imediatamente, crie um índice em lote vazio. Com essa opção, não são necessários dados de embedding no momento da criação do índice.

Para criar um índice vazio, a solicitação é quase idêntica à criação de um índice para atualizações em lote. A diferença é que você remove o campo contentsDeltaUri, já que não está vinculando um local de dados. Veja um exemplo de índice de lote vazio:

Exemplo de solicitação de índice vazio

{
  "display_name": INDEX_NAME,
  "indexUpdateMethod": "BATCH_UPDATE",
  "metadata": {
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}
  

Criar um índice para atualizações de streaming

Use estas instruções para criar e implantar o índice de streaming. Se você ainda não tiver seus embeddings prontos, pule para Criar um índice vazio para atualizações de streaming. Com essa opção, não são necessários dados de embedding no momento da criação do índice.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • INDEX_NAME: nome de exibição do índice.
  • DESCRIPTION: uma descrição do índice.
  • INPUT_DIR: o caminho do diretório do Cloud Storage do conteúdo do índice.
  • DIMENSIONS: número de dimensões do vetor de embedding.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente.
  • LOCATION: a região em que você está usando a Vertex AI.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  displayName: "INDEX_NAME",
  description: "DESCRIPTION",
  metadata: {
     contentsDeltaUri: "INPUT_DIR",
     config: {
        dimensions: "DIMENSIONS",
        approximateNeighborsCount: 150,
        distanceMeasureType: "DOT_PRODUCT_DISTANCE",
        algorithmConfig: {treeAhConfig: {leafNodeEmbeddingCount: 10000, leafNodesToSearchPercent: 2}}
     },
  },
  indexUpdateMethod: "STREAM_UPDATE"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateIndexOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-12-05T23:17:45.416117Z",
      "updateTime": "2023-12-05T23:17:45.416117Z",
      "state": "RUNNING",
      "worksOn": [
        "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID"
      ]
    }
  }
}

Terraform

O exemplo a seguir usa o recurso google_vertex_ai_index do Terraform para criar um índice de atualizações de streaming.

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

# 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" "streaming_index" {
  region       = "us-central1"
  display_name = "sample-index-streaming-update"
  description  = "A sample index for streaming 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 = "STREAM_UPDATE"

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

Python

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

def vector_search_create_streaming_index(
    project: str, location: str, display_name: str, gcs_uri: Optional[str] = None
) -> aiplatform.MatchingEngineIndex:
    """Create a vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        display_name (str): Required. The index display name
        gcs_uri (str): Optional. The Google Cloud Storage uri for index content

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

    # Create Index
    index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
        display_name=display_name,
        contents_delta_uri=gcs_uri,
        description="Matching Engine Index",
        dimensions=100,
        approximate_neighbors_count=150,
        leaf_node_embedding_count=500,
        leaf_nodes_to_search_percent=7,
        index_update_method="STREAM_UPDATE",  # Options: STREAM_UPDATE, BATCH_UPDATE
        distance_measure_type=aiplatform.matching_engine.matching_engine_index_config.DistanceMeasureType.DOT_PRODUCT_DISTANCE,
    )

    return index

Console

Use estas instruções para criar um índice para atualizações de streaming no console do Google Cloud.

Para criar um índice disponível para atualizações de streaming requer etapas semelhantes para configurar um índice de atualização em lote, a menos que você precise definir indexUpdateMethod como STREAM_UPDATE.

  1. Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor

    Acesse a Vector Search

  2. Clique em Criar novo índice para abrir o painel Índice. O painel Criar um novo índice é exibido.
  3. No campo Nome de exibição, insira um nome para identificar exclusivamente o índice.
  4. No campo Descrição, forneça uma descrição para a finalidade do índice.
  5. No campo Região, selecione uma região na lista suspensa.
  6. No campo do Cloud Storage, pesquise e selecione a pasta do Cloud Storage em que os dados vetoriais estão armazenados.
  7. No menu suspenso Tipo de algoritmo, selecione o tipo de algoritmo que a Pesquisa de vetor vai usar para realizar sua pesquisa. Se você selecionar o algoritmo treeAh, insira a contagem de vizinhos aproximados.
  8. No campo Dimensões, insira o número de dimensões dos vetores de entrada.
  9. No campo Método de atualização, selecione Transmissão.
  10. No campo Tamanho do fragmento, selecione no menu suspenso o tamanho do fragmento que você quer.
  11. Clique em Criar. O novo índice aparece na sua lista assim que estiver pronto. Observação: o tempo de build pode levar até uma hora para ser concluído.

Criar um índice vazio para atualizações de streaming

Para criar e implantar seu índice imediatamente, você pode criar um índice vazio para streaming. Com essa opção, não são necessários dados de embedding no momento da criação do índice.

Para criar um índice vazio, a solicitação é quase idêntica à criação de um índice para streaming. A diferença é que você remove o campo contentsDeltaUri, já que não está vinculando um local de dados. Confira um exemplo de índice de streaming vazio:

Exemplo de solicitação de índice vazio

{
  "display_name": INDEX_NAME,
  "indexUpdateMethod": "STREAM_UPDATE",
  "metadata": {
    "config": {
      "dimensions": 100,
      "approximateNeighborsCount": 150,
      "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
      "algorithm_config": {
        "treeAhConfig": {
          "leafNodeEmbeddingCount": 500,
          "leafNodesToSearchPercent": 7
        }
      }
    }
  }
}
  

Listar índices

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • INDEX_NAME: nome de exibição do índice.
  • LOCATION: a região em que você está usando a Vertex AI.
  • PROJECT_ID: o ID do projeto do Google Cloud.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai indexes list \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes list `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes list ^
    --region=LOCATION ^
    --project=PROJECT_ID

Você receberá uma resposta semelhante a esta

You can poll for the status of the operation for the response
to include "done": true. Use the following example to poll the status.

  $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1

Consulte gcloud ai operations para saber mais sobre o comando describe.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • INDEX_NAME: nome de exibição do índice.
  • LOCATION: a região em que você está usando a Vertex AI.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente.

Método HTTP e URL:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
 "indexes": [
   {
     "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID",
     "displayName": "INDEX_NAME",
     "metadataSchemaUri": "gs://google-cloud-aiplatform/schema/matchingengine/metadata/nearest_neighbor_search_1.0.0.yaml",
     "metadata": {
       "config": {
         "dimensions": 100,
         "approximateNeighborsCount": 150,
         "distanceMeasureType": "DOT_PRODUCT_DISTANCE",
         "featureNormType": "NONE",
         "algorithmConfig": {
           "treeAhConfig": {
             "maxLeavesToSearch": 50,
             "leafNodeCount": 10000
           }
         }
       }
     },
     "etag": "AMEw9yNU8YX5IvwuINeBkVv3yNa7VGKk11GBQ8GkfRoVvO7LgRUeOo0qobYWuU9DiEc=",
     "createTime": "2020-11-08T21:56:30.558449Z",
     "updateTime": "2020-11-08T22:39:25.048623Z"
   }
 ]
}

Python

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

def vector_search_list_index(
    project: str, location: str
) -> List[aiplatform.MatchingEngineIndex]:
    """List vector search indexes.

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

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

    # List Indexes
    return aiplatform.MatchingEngineIndex.list()

Console

Use estas instruções para ver uma lista dos índices.

  1. Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor

    Acessar a Vector Search

  2. Uma lista dos índices ativos será exibida.

Como ajustar o índice

O ajuste do índice requer a configuração dos parâmetros de configuração que afetam o desempenho dos índices implantados, especialmente o recall e a latência. Esses parâmetros são definidos na primeira criação do índice. É possível usar índices de força bruta para avaliar o recall.

Parâmetros de configuração que afetam o desempenho

Os parâmetros de configuração a seguir podem ser definidos no momento da criação do índice e podem afetar o recall, a latência, a disponibilidade e o custo ao usar a pesquisa de vetor. Essa orientação se aplica à maioria dos casos. No entanto, sempre teste suas configurações para garantir que elas funcionem para seu caso de uso.

Para definições de parâmetro, consulte Parâmetros de configuração de índice.

Parâmetro Sobre Impacto no desempenho
shardSize

Controla a quantidade de dados em cada máquina.

Ao escolher um tamanho de fragmento, estime o tamanho do conjunto de dados no futuro. Se o tamanho do conjunto de dados tiver um limite superior, escolha o tamanho de fragmento apropriado para acomodá-lo. Se não houver limite superior ou se o caso de uso for extremamente sensível à variabilidade de latência, é recomendável escolher um tamanho de fragmento grande.

Se você configurar um número maior de fragmentos menores, um número maior de resultados candidatos será processado durante a pesquisa. Mais fragmentos podem afetar o desempenho das seguintes maneiras:

  • Recall: aumento
  • Latência: potencialmente aumentada, mais variabilidade
  • Disponibilidade: as interrupções de fragmentação afetam uma porcentagem menor dos dados
  • Custo: pode aumentar se o mesmo tipo de máquina for usado com mais fragmentos

Se você configurar um número menor de fragmentos maiores, menos resultados candidatos serão processados durante a pesquisa. Menos fragmentos podem afetar o desempenho das seguintes maneiras:

  • Recall: diminuído
  • Latência: reduzida, menos variabilidade
  • Disponibilidade: as interrupções de fragmentação afetam uma porcentagem maior dos dados
  • Custo: pode diminuir se o mesmo tipo de máquina for usado com menos fragmentos
distanceMeasureType

Determina o algoritmo usado para cálculo da distância entre pontos de dados e o vetor de consulta.

As configurações de distanceMeasureType a seguir podem ajudar a reduzir a latência da consulta.

  • O DOT_PRODUCT_DISTANCE é mais otimizado para reduzir a latência.
  • A combinação de DOT_PRODUCT_DISTANCE com a configuração FeatureNormType como UNIT_L2_NORM é recomendada para a similaridade de cossenos
leafNodeEmbeddingCount

O número de embeddings para cada nó de folha. Por padrão, esse número é definido como 1000.

Geralmente, alterar o valor de leafNodeEmbeddingCount tem menos efeito do que alterar o valor de outros parâmetros.

Aumentar o número de embeddings para cada nó de folha pode reduzir a latência, mas também a qualidade do recall. Isso pode afetar o desempenho das seguintes maneiras:

  • Recall: diminuiu devido à pesquisa menos segmentada
  • Latência: reduzida, contanto que o valor não seja maior do que 15.000 na maioria dos casos de uso
  • Disponibilidade: sem impacto
  • Custo: pode diminuir porque são necessárias menos réplicas para o mesmo QPS

Diminuir o número de embeddings para cada nó de folha pode afetar o desempenho das seguintes maneiras:

  • Recall: pode aumentar porque folhas mais segmentadas são coletadas
  • Latência: aumentada
  • Disponibilidade: sem impacto
  • Custo: pode aumentar porque são necessárias mais réplicas para o mesmo QPS

Como usar um índice de força bruta para medir o recall

Para ver os vizinhos mais próximos, use índices com o algoritmo de força bruta. O algoritmo de força bruta fornece 100% de recall em detrimento da maior latência. Usar um índice de força bruta para medir o recall geralmente não é uma boa escolha para a exibição de produção, mas pode ser útil avaliar o recall de várias opções de indexação off-line.

Para criar um índice com o algoritmo de força bruta, especifique brute_force_config nos metadados do índice:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/indexes \
-d '{
    displayName: "'${DISPLAY_NAME}'",
    description: "'${DESCRIPTION}'",
    metadata: {
       contentsDeltaUri: "'${INPUT_DIR}'",
       config: {
          dimensions: 100,
          approximateNeighborsCount: 150,
          distanceMeasureType: "DOT_PRODUCT_DISTANCE",
          featureNormType: "UNIT_L2_NORM",
          algorithmConfig: {
             bruteForceConfig: {}
          }
       },
    },
}'

Excluir um índice

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • INDEX_ID: o ID do índice.
  • LOCATION: a região em que você está usando a Vertex AI.
  • PROJECT_ID: o ID do projeto do Google Cloud.

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud ai indexes delete INDEX_ID \
    --region=LOCATION \
    --project=PROJECT_ID

Windows (PowerShell)

gcloud ai indexes delete INDEX_ID `
    --region=LOCATION `
    --project=PROJECT_ID

Windows (cmd.exe)

gcloud ai indexes delete INDEX_ID ^
    --region=LOCATION ^
    --project=PROJECT_ID

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • INDEX_ID: o ID do índice.
  • LOCATION: a região em que você está usando a Vertex AI.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • PROJECT_NUMBER: o número do projeto gerado automaticamente.

Método HTTP e URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2022-01-08T02:35:56.364956Z",
      "updateTime": "2022-01-08T02:35:56.364956Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

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

def vector_search_delete_index(
    project: str, location: str, index_name: str
) -> None:
    """Delete a vector search index.

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

    # Delete the index
    index.delete()

Console

Use estas instruções para excluir um ou mais índices.

  1. Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor

    Acessar a Vector Search

  2. Uma lista dos índices ativos será exibida.
  3. Para excluir um índice, acesse o menu de opções que está na mesma linha do índice e selecione Excluir.

A seguir