Com consultas de pesquisa grandes, a atualização dos seus índices é importante para ter sempre as informações mais precisas. Pode atualizar os seus índices de pesquisa vetorial de várias formas:
- Substitua um índice completo
- Atualize parcialmente um índice de lote
- Atualize parcialmente um índice de streaming
- Atualize os metadados do índice
Substitua um índice completo
Para substituir o conteúdo de uma atualização em lote ou de streaming existente, Index
use o método IndexService.UpdateIndex
.
- Defina
Index.metadata.contentsDeltaUri
para o URI do Cloud Storage que inclui os vetores que quer atualizar. - Defina
Index.metadata.isCompleteOverwrite
como verdadeiro. Quando definido como verdadeiro, o índice completo é completamente substituído pelo novo ficheiro de metadados que fornecer.
gcloud
- Atualize o ficheiro de metadados do índice para definir
contentsDeltaUri
eisCompleteOverwrite=true
. - Use o comando
gcloud ai indexes update
.
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_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 update INDEX_ID \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes update INDEX_ID ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes update INDEX_ID ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --region=LOCATION ^ --project=PROJECT_ID
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_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:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Corpo JSON do pedido:
{ "metadata": { "contentsDeltaUri": "INPUT_DIR", "isCompleteOverwrite": true } }
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.UpdateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-12T23:56:14.480948Z", "updateTime": "2022-01-12T23:56:14.480948Z" } } }
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.
Quando invocar o método abaixo, defina is_complete_overwrite=True
para substituir totalmente o conteúdo do índice.
Consola
Use estas instruções para atualizar o conteúdo de um índice de lote.
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- Selecione o índice que quer atualizar. É apresentada a página Informações do índice.
- Selecione Editar índice. É aberto um painel de edição do índice.
- No campo Cloud Storage, pesquise e selecione a pasta do Cloud Storage onde os seus dados vetoriais estão armazenados.
- Selecione a caixa de substituição completa para substituir todos os dados existentes.
- Clique em Atualizar
- Clique em Concluído para fechar o painel.
Atualize parcialmente um índice em lote
Para atualizar as incorporações de um lote existente Index
, use o método IndexService.UpdateIndex
.
- Defina
Index.metadata.contentsDeltaUri
para o URI do Cloud Storage que inclui os vetores que quer atualizar. - Defina
Index.metadata.isCompleteOverwrite
como falso.
Apenas os vetores especificados em Index.metadata.contentsDeltaUri
são atualizados,
inseridos ou eliminados. As outras incorporações existentes no índice permanecem.
gcloud
- Atualize o ficheiro de metadados do índice para definir
contentsDeltaUri
. - Use o comando
gcloud ai indexes update
.
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_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 update INDEX_ID \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes update INDEX_ID ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes update INDEX_ID ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --region=LOCATION ^ --project=PROJECT_ID
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_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:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Corpo JSON do pedido:
{ "metadata": { "contentsDeltaUri": "INPUT_DIR", "isCompleteOverwrite": false } }
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.UpdateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-12T23:56:14.480948Z", "updateTime": "2022-01-12T23:56:14.480948Z" } } }
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.
Quando invocar o método abaixo, defina is_complete_overwrite=False
.
Consola
Use estas instruções para atualizar o conteúdo de um índice de lote.
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- Selecione o índice que quer atualizar. É apresentada a página Informações do índice.
- Selecione Editar índice. É aberto um painel de edição do índice.
- No campo Cloud Storage, pesquise e selecione a pasta do Cloud Storage onde os seus dados vetoriais estão armazenados.
- Certifique-se de que a caixa de substituição completa não está selecionada.
- Clique em Atualizar
- Clique em Concluído para fechar o painel.
Se o Index
tiver implementações associadas (consulte o campo Index.deployed_indexes
), quando são feitas determinadas alterações ao Index
original, o DeployedIndex
é atualizado automaticamente de forma assíncrona em segundo plano para refletir essas alterações.
Para verificar se a alteração foi propagada, compare a hora de conclusão da operação de atualização e o DeployedIndex.index_sync_time
.
Atualize parcialmente um índice de streaming
Com as atualizações de streaming, pode atualizar e consultar o seu índice em poucos segundos. Neste momento, não pode usar atualizações de streaming num índice de atualização em lote existente. Tem de criar um novo índice. Consulte o artigo Crie um índice para a atualização de streaming para saber mais.
É-lhe cobrado o valor de 0,45 $por GB usado para atualizações de streaming. Para saber mais sobre os preços, consulte a página de preços da Vertex AI. As atualizações de streaming são aplicadas diretamente aos índices implementados na memória, que são, em seguida, refletidos nos resultados da consulta após um breve atraso.
Inserir ou atualizar pontos de dados
Use estes exemplos para ver como inserir ou atualizar um ponto de dados. Lembre-se de que upsert-datapoints
aceita apenas JSON no formato de matriz.
Python
Python
Curl
O limite de quota de débito está relacionado com a quantidade de dados incluídos numa inserção/atualização. Se o ID do ponto de dados existir no índice, a incorporação é atualizada. Caso contrário, é adicionada uma nova incorporação.
DATAPOINT_ID_1=
DATAPOINT_ID_2=
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{datapoints: [{datapoint_id: "'${DATAPOINT_ID_1}'", feature_vector: [...]},
{datapoint_id: "'${DATAPOINT_ID_2}'", feature_vector: [...]}]}'
Com a pesquisa híbrida, são suportadas representações de incorporação esparsas e densas para um ponto de dados. Numa operação de upsert, a omissão de uma incorporação densa elimina a representação densa e a omissão de uma incorporação esparsa elimina a representação esparsa.
Este exemplo atualiza as incorporações densas e as incorporações esparsas.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", feature_vector: [0.111, 0.111], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}}]}'
Este exemplo atualiza as incorporações densas e remove as incorporações esparsas.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", feature_vector: [0.111, 0.111]}]}'
Este exemplo atualiza as incorporações esparsas e remove as incorporações densas.
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints -d '{datapoints: [{datapoint_id: "111", "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}}]}'
Consola
Consola
Siga estas instruções para atualizar o conteúdo para um índice de streaming.
- Na Google Cloud consola, aceda à página Vector Search.
- Selecione o índice que quer atualizar. É apresentada a página Informações do índice.
- Clique em Editar índice. É aberto um painel de edição do índice.
- No painel, selecione o separador Inserir/atualizar ponto de dados para adicionar conteúdo.
- Introduza o ID do ponto de dados.
- Introduza, pelo menos, um tipo de incorporação:
- Incorporação densa: introduza uma matriz de valores de vírgula flutuante separados por vírgulas. O número de valores tem de corresponder às dimensões do índice.
- Incorporação esparsa:
- Introduza as dimensões da incorporação esparsa como uma matriz de números inteiros separados por vírgulas. O número de valores não tem de corresponder às dimensões do índice.
- Introduza os valores como uma matriz de valores de ponto flutuante separados por vírgulas. O número de valores tem de corresponder ao número de dimensões de incorporação esparsas.
- Opcional: para ativar a filtragem por restrições de tokens neste ponto de dados, clique em Adicionar restrição de token e, de seguida, introduza um espaço de nomes e strings separadas por vírgulas como tokens.
- Opcional: para ativar a filtragem por restrições numéricas neste ponto de dados, clique em Adicionar restrição numérica, introduza um espaço de nomes, selecione um tipo de número e introduza um valor.
- Opcional: para ajudar a evitar muitos resultados semelhantes, introduza uma string de etiqueta de multidão.
- Clique em Upsert.
- Clique em Concluído para fechar o painel.
O limite de quota de débito está relacionado com a quantidade de dados incluídos numa inserção/atualização. Se o ID do ponto de dados existir no índice, a incorporação é atualizada. Caso contrário, é adicionada uma nova incorporação.
Atualize os metadados de incorporação
Existem vários motivos pelos quais pode ter de atualizar as restrições de streaming ou as restrições numéricas. Por exemplo, quando lida com dados de grande volume e rápidos, pode querer dar prioridade a determinadas streams de dados. A atualização direta de restrições ou restrições numéricas permite-lhe refinar o foco em tempo real, garantindo que os dados mais importantes são processados ou realçados imediatamente.
Pode atualizar diretamente as restrições de pontos de dados e as restrições numéricas num índice de streaming sem o custo de compactação da atualização completa.
Para fazer estas atualizações apenas de metadados, tem de adicionar o campo update_mask
ao pedido. O valor de update_mask
tem de estar definido como all_restricts
.
Os valores de restrição e restrição numérica definidos nos pontos de dados devem ser os novos valores que quer aplicar na atualização.
O exemplo seguinte mostra como adicionar restrições a dois pontos de dados existentes.
DATAPOINT_ID_1=
DATAPOINT_ID_2=
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{datapoints:
[{datapoint_id: "'${DATAPOINT_ID_1}'", feature_vector: [...], restricts:[{namespace: "color", allow_list: ["red"]}]},
{datapoint_id: "'${DATAPOINT_ID_2}'", feature_vector: [...], restricts:[{namespace: "color", allow_list: ["red"]}]}
], update_mask: "all_restricts"}'
Remova pontos de dados
Pode ter de remover pontos de dados do seu índice de streaming. Pode fazê-lo através do curl ou da Google Cloud consola.
Um exemplo de utilização importante para eliminar um ponto de dados de um índice é manter a paridade entre o índice e a respetiva origem no mundo real. Considere um livreiro que usa uma incorporação vetorial para representar o respetivo inventário de livros para fins de pesquisa e recomendação. Quando um livro está esgotado ou é removido do stock, a eliminação do respetivo ponto de dados do índice garante que os resultados da pesquisa e as recomendações permanecem precisos e atualizados.
Curl
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{REGION}/indexes/{INDEX_ID}:removeDatapoints -d '{datapoint_ids: ["'{DATAPOINT_ID_1}'", "'{DATAPOINT_ID_2}'"]}'
Consola
Consola
Siga estas instruções para eliminar um ponto de dados do índice de streaming.
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- Selecione o índice de streaming que quer atualizar. É apresentada a página Informações do índice.
- Selecione Editar índice. É aberto um painel de edição do índice.
- No painel, selecione o separador Remover pontos de dados.
- Adicione até 20 pontos de dados fornecendo uma lista de IDs de pontos de dados delimitada por vírgulas
- Clique em Remover.
- Clique em Concluído para fechar o painel.
Python
Python
Atualize os metadados do índice
IndexService.UpdateIndex
também pode ser usado para atualizar os campos de metadados
display_name
, description
e labels
para índices de streaming e em lote. Tenha em atenção que uma única chamada para UpdateIndex
pode atualizar as incorporações de índice ou estes campos de metadados, mas não ambos em simultâneo.
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_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 update INDEX_ID \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes update INDEX_ID ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes update INDEX_ID ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --region=LOCATION ^ --project=PROJECT_ID
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_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:
PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes/INDEX_ID
Corpo JSON do pedido:
{ "metadata": { "description": "Updated description", "display_name": "Updated display name" } }
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.UpdateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-12T23:56:14.480948Z", "updateTime": "2022-01-12T23:56:14.480948Z" } } }
Python
Consola
Siga estas instruções para atualizar os metadados do índice (a consola está limitada à atualização de display_name
e description
).
- Na secção do Vertex AI da Google Cloud consola, aceda à secção Implementar e usar. Selecione Vector Search
- Selecione o índice que quer atualizar. É apresentada a página Informações do índice.
- Selecione Editar índice. É aberto um painel de edição do índice.
- Atualize os campos de metadados pretendidos.
- Clique em Atualizar
- Clique em Concluído para fechar o painel.
Compactação
Periodicamente, o seu índice é reconstruído para ter em conta todas as novas atualizações desde a última reconstrução. Esta reconstrução, ou "compactação", melhora o desempenho das consultas e a fiabilidade. As compactações ocorrem para atualizações de streaming e atualizações em lote.
Atualização de streaming: a pesquisa vetorial usa métricas baseadas em heurísticas para determinar quando acionar a compactação. Se os dados não compactados mais antigos tiverem cinco dias, a compactação é sempre acionada. O custo de reconstrução do índice é-lhe cobrado à mesma taxa de uma atualização em lote, além dos custos de atualização com streaming.
Atualização em lote: ocorre quando o tamanho do conjunto de dados incremental é superior a 20% do tamanho do conjunto de dados base.
Reconstrua e consulte o seu índice
Pode enviar pedidos de correspondência ou de correspondência em lote como habitualmente com a CLI grpc, a biblioteca cliente ou o SDK Vertex AI para Python. Quando recria a consulta, pode esperar ver as atualizações em alguns segundos. Para saber como consultar um índice, consulte o artigo Consulte índices para obter os vizinhos mais próximos.
Campos opcionais
Quando cria um índice, existem alguns campos opcionais que pode usar para ajustar as suas consultas.
Inserção/atualização com restrições
A inserção/atualização do índice e a adição de uma restrição são uma forma de etiquetar os pontos de dados para que já estejam identificados para filtragem no momento da consulta. Recomendamos que adicione etiquetas de restrição para limitar os resultados apresentados nos seus dados antes de enviar uma consulta. Por exemplo, um cliente quer executar uma consulta num índice, mas quer certificar-se de que os resultados apenas apresentam artigos que correspondam a "vermelho" numa pesquisa de calçado. No exemplo seguinte, o índice está a ser atualizado/inserido e está a filtrar todos os sapatos vermelhos, mas a recusar os azuis. Isto garante que os filtros de pesquisa selecionam as melhores opções específicas de um índice grande e variado antes da execução.
Além das restrições de tokens, o exemplo usa restrições numéricas. Neste caso, o ponto de dados está associado a um preço de 20, um comprimento de 0,3 e uma largura de 0,5. No momento da consulta, pode usar estas restrições numéricas para filtrar os resultados e limitar os resultados da consulta nos valores de preço, comprimento e largura. Por exemplo, este ponto de dados apareceria numa consulta que filtra por preço > 25, comprimento < 1 e largura < 1.
Para saber mais sobre a filtragem, consulte o artigo Pesquisa vetorial para indexação.
Python
# Upsert datapoints
_TEST_DATAPOINT_1 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="3",
feature_vector=[0.00526886899, -0.0198396724],
restricts=[
aiplatform_v1.types.index.IndexDatapoint.Restriction(namespace="Color", allow_list=["red"])
],
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_int=1,
)
],
)
_TEST_DATAPOINT_2 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="4",
feature_vector=[0.00526886899, -0.0198396724],
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_double=0.1,
)
],
crowding_tag=aiplatform_v1.types.index.IndexDatapoint.CrowdingTag(crowding_attribute="crowding"),
)
_TEST_DATAPOINT_3 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="5",
feature_vector=[0.00526886899, -0.0198396724],
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_float=1.1,
)
],
)
_TEST_DATAPOINTS = [_TEST_DATAPOINT_1, _TEST_DATAPOINT_2, _TEST_DATAPOINT_3]
my_streaming_index = my_streaming_index.upsert_datapoints(datapoints=_TEST_DATAPOINTS)
# Dynamic metadata update
_TEST_DATAPOINT_4 = aiplatform_v1.types.index.IndexDatapoint(
datapoint_id="-2",
numeric_restricts=[
aiplatform_v1.types.index.IndexDatapoint.NumericRestriction(
namespace="cost",
value_float=1.1,
)
],
)
my_streaming_index = my_streaming_index.upsert_datapoints(datapoints=[_TEST_DATAPOINT4], update_mask=["all_restricts"])
curl
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints: [
{
datapoint_id: "'${DATAPOINT_ID_1}'",
feature_vector: [...],
restricts: { namespace: "color", allow_list: ["red"], deny_list: ["blue"]},
numeric_restricts: [{namespace: "price", value_int: 20}, {namespace: "length", value_float: 0.3}, {namespace: "width", value_double: 0.5}]
}
]}'
Inserção/atualização com multidões
A etiqueta de aglomeração limita os resultados semelhantes, melhorando a diversidade dos resultados.
A sobreposição é uma restrição numa lista de vizinhos produzida por uma pesquisa de vizinhos mais próximos que exige que não mais do que algum valor, de um grupo de resultados, devolva o mesmo valor de crowding_attribute
. Por exemplo, suponha que voltou a fazer compras online
de sapatos. Quer ver uma grande variedade de cores nos resultados, mas talvez
as queira num único estilo, como chuteiras de futebol. Pode pedir que sejam devolvidos no máximo 3 pares de sapatos com a mesma cor definindo per_crowding_attribute_num_neighbors
= 3 na sua consulta, partindo do princípio de que definiu o atributo crowding_attribute para a cor dos sapatos quando inseriu o ponto de dados.
Este campo representa o número máximo permitido de correspondências com a mesma etiqueta de multidão.
curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${ENDPOINT}/v1/projects/${PROJECT_ID}/locations/us-central1/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints: [
{
datapoint_id: "'${DATAPOINT_ID_1}'",
feature_vector: [...],
restricts: { namespace: "type", allow_list: ["cleats"]}
crowding_tag: { crowding_attribute: "red-shoe"},
}
]}'
O que se segue?
- Saiba mais acerca dos parâmetros de configuração do índice.
- Saiba como monitorizar um índice.