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.
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.
Console
Use estas instruções para criar um índice para atualizações em lote.
- Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor
- Clique em Criar novo índice para abrir o painel Índice. O painel Criar um novo índice é exibido.
- No campo Nome de exibição, insira um nome para identificar exclusivamente o índice.
- No campo Descrição, forneça uma descrição para a finalidade do índice.
- No campo Região, selecione uma região na lista suspensa.
- No campo do Cloud Storage, pesquise e selecione a pasta do Cloud Storage em que os dados vetoriais estão armazenados.
- 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.
- No campo Dimensões, insira o número de dimensões dos vetores de entrada.
- No campo Método de atualização, selecione Lote.
- No campo Tamanho do fragmento, selecione no menu suspenso o tamanho do fragmento que você quer.
- 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.
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.
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
.
- Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor
- Clique em Criar novo índice para abrir o painel Índice. O painel Criar um novo índice é exibido.
- No campo Nome de exibição, insira um nome para identificar exclusivamente o índice.
- No campo Descrição, forneça uma descrição para a finalidade do índice.
- No campo Região, selecione uma região na lista suspensa.
- No campo do Cloud Storage, pesquise e selecione a pasta do Cloud Storage em que os dados vetoriais estão armazenados.
- 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.
- No campo Dimensões, insira o número de dimensões dos vetores de entrada.
- No campo Método de atualização, selecione Transmissão.
- No campo Tamanho do fragmento, selecione no menu suspenso o tamanho do fragmento que você quer.
- 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.
Console
Use estas instruções para ver uma lista dos índices.
- Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor
- 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:
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:
|
distanceMeasureType
|
Determina o algoritmo usado para cálculo da distância entre pontos de dados e o vetor de consulta. |
As configurações de
|
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 |
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:
Diminuir o número de embeddings para cada nó de folha pode afetar o desempenho das seguintes maneiras:
|
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.
Console
Use estas instruções para excluir um ou mais índices.
- Na seção Vertex AI do console do Google Cloud, acesse a seção Implantar e usar. Selecione Pesquisa de vetor
- Uma lista dos índices ativos será exibida.
- Para excluir um índice, acesse o menu de opções que está na mesma linha do índice e selecione Excluir.
A seguir
- Saiba mais sobre os parâmetros de configuração de índice.
- Saiba como implantar e gerenciar endpoints de índice público.
- Saiba como implantar e gerenciar endpoints de índice em uma rede VPC.
- Saiba como atualizar e recriar o índice
- Saiba como monitorar um índice