As secções seguintes descrevem como configurar, criar, listar e eliminar os seus índices.
Vista geral do índice
Um índice é um ficheiro ou ficheiros que consistem nos seus vetores de incorporação. Estes vetores são criados a partir de grandes quantidades de dados que quer implementar e consultar com a pesquisa vetorial. Com a pesquisa vetorial, pode criar dois tipos de índices, consoante a forma como planeia atualizá-los com os seus dados. Pode criar um índice concebido para atualizações em lote ou um índice concebido para transmitir as suas atualizações.
Um índice de lote destina-se a quando quer atualizar o seu índice num lote, com dados que foram armazenados durante um determinado período, como sistemas que são processados semanal ou mensalmente. Um índice de streaming ocorre quando quer que os dados do índice sejam atualizados à medida que são adicionados novos dados ao seu repositório de dados. Por exemplo, se tiver uma livraria e quiser apresentar o novo inventário online o mais rapidamente possível. O tipo que escolher é importante, uma vez que a configuração e os requisitos são diferentes.
Configure os parâmetros do índice
Antes de criar um índice, configure os parâmetros do índice.
Por exemplo, crie um ficheiro com o nome 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 } } } }
Pode encontrar a definição de cada um destes campos em Parâmetros de configuração do índice.
Crie um índice
Tamanho do índice
Os dados do índice são divididos em partes iguais denominadas fragmentos para processamento. Quando cria um índice, tem de especificar o tamanho dos fragmentos a usar. Os tamanhos suportados 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áquinas que pode usar para implementar o seu índice (usando pontos finais públicos ou usando pontos finais de VPC) dependem do tamanho do fragmento do índice. A tabela seguinte mostra os tamanhos dos fragmentos que cada tipo de máquina suporta:
Tipo de máquina | SHARD_SIZE_SMALL |
SHARD_SIZE_MEDIUM |
SHARD_SIZE_LARGE |
---|---|---|---|
n1-standard-16 |
|||
n1-standard-32 |
|||
e2-standard-2 |
(predefinição) | ||
e2-standard-16 |
(predefinição) | ||
e2-highmem-16 |
(predefinição) | ||
n2d-standard-32 |
Para saber como o tamanho do fragmento e o tipo de máquina afetam os preços, consulte a página de preços do Vertex AI. Para saber como o tamanho dos fragmentos afeta o desempenho, consulte o artigo Parâmetros de configuração que afetam o desempenho.
Crie um índice para a atualização em lote
Use estas instruções para criar e implementar o seu índice. Se ainda não tiver as incorporações prontas, pode avançar para Criar um índice de lotes vazio. Com esta opção, não são necessários dados de incorporações no momento da criação do índice.
Para criar um índice:
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- LOCAL_PATH_TO_METADATA_FILE: o caminho local para o ficheiro de metadados.
- INDEX_NAME: nome a apresentar 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 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
Deve receber uma resposta semelhante à seguinte:
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 qualquer um dos dados do pedido, faça as seguintes substituições:
- INPUT_DIR: O caminho do diretório do Cloud Storage do conteúdo do índice.
- INDEX_NAME: nome a apresentar 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/indexes
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 seguinte usa o recurso do Terraform google_vertex_ai_index
para criar um índice para atualizações em lote.
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
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.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Consola
Use estas instruções para criar um índice para atualizações em lote.
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- Clique em Criar novo índice para abrir o painel Índice. É apresentado o painel Criar um novo índice.
- No campo Nome a apresentar, indique um nome para identificar exclusivamente o seu índice.
- No campo Descrição, indique para que serve o índice.
- No campo Região, selecione uma região no menu pendente.
- No campo Cloud Storage, pesquise e selecione a pasta do Cloud Storage onde os seus dados vetoriais estão armazenados.
- No menu pendente Tipo de algoritmo, selecione o tipo de algoritmo que a pesquisa vetorial usa para uma pesquisa eficiente. Se selecionar o algoritmo treeAh, introduza a contagem aproximada de vizinhos.
- No campo Dimensões, introduza o número de dimensões dos seus vetores de entrada.
- No campo Método de atualização, selecione Em lote.
- No campo Tamanho do fragmento, selecione no menu pendente o tamanho do fragmento que quer.
- Clique em Criar. O novo índice aparece na sua lista de índices assim que estiver pronto. Nota: o tempo de compilação pode demorar até uma hora a ser concluído.
Crie um índice de lote vazio
Para criar e implementar o seu índice imediatamente, pode criar um índice de lote vazio. Com esta opção, não são necessários dados de incorporações no momento da criação do índice.
Para criar um índice vazio, o pedido é quase idêntico ao de criação de um índice para atualizações em lote. A diferença é que remove o campo contentsDeltaUri
, uma vez que não está a associar uma localização de dados. Segue-se um exemplo de um índice de lote vazio:
Exemplo de pedido 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, "fractionLeafNodesToSearch": 0.07 } } } } }
Crie um índice para atualizações de streaming
Use estas instruções para criar e implementar o seu índice de streaming. Se ainda não tiver os encaixes prontos, avance para Crie um índice vazio para atualizações de streaming. Com esta opção, não são necessários dados de incorporações no momento da criação do índice.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- INDEX_NAME: nome a apresentar 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 incorporação.
- PROJECT_ID: o seu Google Cloud ID do projeto.
- PROJECT_NUMBER: o número do projeto gerado automaticamente para o seu projeto.
- LOCATION: a região onde está a usar o Vertex AI.
Método HTTP e URL:
POST https://ENDPOINT-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Corpo JSON do pedido:
{ 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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 seguinte usa o recurso do Terraform google_vertex_ai_index
para criar um índice para atualizações de streaming.
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
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.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Consola
Use estas instruções para criar um índice para atualizações de streaming na Google Cloud consola.
Para criar um índice disponível
para atualizações de streaming, são necessários passos semelhantes aos da configuração de um índice de atualização em lote,
exceto que tem de definir indexUpdateMethod
como STREAM_UPDATE
.
- Na secção Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- Clique em Criar novo índice para abrir o painel Índice. É apresentado o painel Criar um novo índice.
- No campo Nome a apresentar, indique um nome para identificar exclusivamente o seu índice.
- No campo Descrição, indique a finalidade do índice.
- No campo Região, selecione uma região no menu pendente.
- No campo Cloud Storage, pesquise e selecione a pasta do Cloud Storage onde os seus dados vetoriais estão armazenados.
- No menu pendente Tipo de algoritmo, selecione o tipo de algoritmo que a pesquisa vetorial vai usar para realizar a sua pesquisa. Se selecionar o algoritmo treeAh, introduza a contagem aproximada de vizinhos.
- No campo Dimensões, introduza o número de dimensões dos seus vetores de entrada.
- No campo Método de atualização, selecione Stream.
- No campo Tamanho do fragmento, selecione no menu pendente o tamanho do fragmento pretendido.
- Clique em Criar. O novo índice aparece na sua lista de índices assim que estiver pronto. Nota: o tempo de compilação pode demorar até uma hora a ser concluído.
Crie um índice vazio para atualizações de streaming
Para criar e implementar o seu índice imediatamente, pode criar um índice vazio para streaming. Com esta opção, não são necessários dados de incorporações no momento da criação do índice.
Para criar um índice vazio, o pedido é quase idêntico ao de criar um índice para streaming. A diferença é que remove o campo contentsDeltaUri
, uma vez que não está a associar uma localização de dados. Segue-se um exemplo de um índice de streaming vazio:
Exemplo de pedido 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 qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- INDEX_NAME: nome a apresentar 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 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
Deve receber uma resposta semelhante à seguinte:
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 qualquer um dos dados do pedido, faça as seguintes substituições:
- INDEX_NAME: nome a apresentar 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:
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 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.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Consola
Siga estas instruções para ver uma lista dos seus índices.
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- É apresentada uma lista dos seus índices ativos.
Ajustar o índice
A otimização do índice requer a definição dos parâmetros de configuração que afetam o desempenho dos índices implementados, especialmente a capacidade de memorização e a latência. Estes parâmetros são definidos quando cria o índice pela primeira vez. Pode usar índices de força bruta para medir a capacidade de memorização.
Parâmetros de configuração que afetam o desempenho
Os seguintes parâmetros de configuração podem ser definidos no momento da criação do índice e podem afetar a capacidade de memorização, a latência, a disponibilidade e o custo quando usar 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.
Para ver as definições dos parâmetros, consulte o artigo Parâmetros de configuração do índice.
Parâmetro | Acerca de | Impacto no desempenho |
---|---|---|
shardSize
|
Controla a quantidade de dados em cada máquina. Quando 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 do fragmento adequado para o acomodar. Se não existir um limite superior ou se o seu exemplo de utilização for extremamente sensível à variabilidade da latência, recomendamos que escolha um tamanho de fragmento grande. |
Se configurar um número maior de fragmentos mais pequenos, é processado um número maior de resultados candidatos durante a pesquisa. Mais fragmentos podem afetar o desempenho das seguintes formas:
Se configurar um número menor de fragmentos maiores, são processados menos resultados candidatos durante a pesquisa. Um número inferior de fragmentos pode afetar o desempenho das seguintes formas:
|
distanceMeasureType
|
Determina o algoritmo usado para o cálculo da distância entre os pontos de dados e o vetor de consulta. |
As seguintes definições
|
leafNodeEmbeddingCount
|
O número de incorporações para cada nó folha. Por predefinição, este número está definido como 1000.
Geralmente, a alteração do valor de |
Aumentar o número de incorporações para cada nó folha pode reduzir a latência, mas reduz a qualidade da capacidade de memorização. Pode afetar o desempenho das seguintes formas:
Diminuir o número de incorporações para cada nó folha pode afetar o desempenho das seguintes formas:
|
Usar um índice de força bruta para medir a capacidade de memorização
Para obter os vizinhos mais próximos exatos, use índices com o algoritmo de força bruta. O algoritmo de força bruta oferece uma taxa de recolha de 100% à custa de uma latência mais elevada. Normalmente, usar um índice de força bruta para medir a capacidade de memorização não é uma boa escolha para a publicação de produção, mas pode ser útil para avaliar a capacidade de memorização de várias opções de indexação offline.
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: {} } }, }, }'
Elimine um índice
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- 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 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 qualquer um dos dados do pedido, faça as seguintes substituições:
- 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:
DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/indexes/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/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 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.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Consola
Siga estas instruções para eliminar um ou mais índices.
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- É apresentada uma lista dos seus índices ativos.
- Para eliminar um índice, aceda ao menu de opções que se encontra na mesma linha do índice e selecione Eliminar.
O que se segue?
- Saiba mais sobre os parâmetros de configuração do índice
- Saiba como implementar e gerir pontos finais de índice público
- Saiba como implementar e gerir pontos finais de índice numa rede VPC
- Saiba como atualizar e reconstruir o seu índice
- Saiba como monitorizar um índice