Criar uma instância de visualização de recursos

É possível criar uma visualização de recursos dentro de uma instância de loja on-line atual. Ao criar uma visualização de recursos, você pode associar recursos a ela das seguintes maneiras:

  • Adicione grupos de atributos e atributos do Registro de atributos: associe a grupos de atributos e atributos existentes do registro de atributos. Um grupo de recursos especifica o local da fonte de dados do BigQuery. Um recurso dentro do grupo aponta para uma coluna de atributos específica nessa fonte de dados. Você pode associar uma visualização de elemento a vários grupos de elementos.

  • Adicionar recursos de uma origem do BigQuery:associe diretamente uma fonte de dados do BigQuery, como uma tabela ou visualização do BigQuery, e especifique a coluna de ID da entidade.

Depois que você cria uma visualização de recursos, o Feature Store da Vertex AI sincroniza os valores de atributos mais recentes da fonte de dados do BigQuery. Se você definir o parâmetro de consulta run_sync_immediately=true, o Vertex AI Feature Store copiará os valores dos atributos quando você criar a visualização. Caso contrário, o Vertex AI Feature Store copia os valores dos recursos de acordo com a programação de sincronização especificada para a visualização.

Sincronizar dados de recursos em uma visualização de recursos

O Vertex AI Feature Store atualiza ou sincroniza periodicamente os valores de atributos armazenados na loja on-line do BigQuery. Ao criar uma visualização de recursos, você pode especificar a programação ou a frequência da sincronização de dados usando o parâmetro FeatureView.sync_config.

Você também tem a opção de acionar manualmente uma sincronização de dados para uma visualização de recurso. Para mais informações sobre como sincronizar manualmente dados de uma visualização de recursos, consulte Sincronizar dados de recursos com o armazenamento on-line.

Apenas uma operação de sincronização de dados pode estar ativa por vez para uma visualização de recursos. Se uma sincronização de dados estiver em andamento para uma visualização de recurso, todas as sincronizações de dados programadas dessa visualização de recurso serão ignoradas até que a sincronização seja concluída.

Otimize os custos durante a sincronização

Uma operação de sincronização de dados pode envolver custos de uso de recursos do BigQuery. Siga estas diretrizes para otimizar esses custos e melhorar o desempenho durante uma sincronização de dados:

  • Não configure a programação de sincronização para ser executada com mais frequência do que a frequência com que os dados devem ser alterados na origem do BigQuery.

  • Otimize o tamanho da fonte de dados do recurso no BigQuery. Ao criar a visualização do recurso, inclua apenas os dados necessários para a exibição on-line.

  • Evite executar agregações complexas no BigQuery. Execute uma consulta SELECT * na tabela ou visualização para estimar o volume e a duração do processamento de dados.

  • Ao definir as opções de escalonamento do armazenamento on-line, defina max_node_count como um valor alto o suficiente para cobrir cargas altas durante uma sincronização de dados.

  • Programe a sincronização para diferentes visualizações de recursos em momentos distintos na mesma loja on-line.

  • Se a tabela do BigQuery contiver dados históricos abrangentes, considere particionar a tabela usando carimbos de data/hora e especifique um período para recuperar os dados de recursos. Isso minimiza a recuperação de dados de recursos obsoletos durante a sincronização.

  • A utilização do Bigtable aumenta durante as sincronizações de dados. Para visualizações de recursos criadas em lojas on-line para veiculação on-line do Bigtable, programe jobs de sincronização durante horários de menor demanda para ter o melhor desempenho.

Configurar a conta de serviço para uma visualização de recursos

Cada visualização de recursos usa uma conta de serviço para acessar os dados de origem no BigQuery durante a sincronização. O Vertex AI Feature Store atribui o papel de Leitor de dados do BigQuery do Identity and Access Management (IAM) a essa conta de serviço.

Por padrão, a visualização de recursos usa a conta de serviço configurada para o projeto. Com essa configuração, qualquer usuário com permissão para criar uma visualização de recursos no projeto pode acessar os dados do recurso no BigQuery.

Outra possibilidade é configurar a visualização de recursos para que use a própria conta de serviço. O Vertex AI Feature Store configura uma conta de serviço dedicada para a visualização de recursos. Com essa configuração, é possível restringir o acesso a dados de recursos no BigQuery ou conceder acesso a outros usuários. Use o parâmetro FeatureView.service_agent_type para especificar a configuração da conta de serviço.

Configurar a recuperação de vetores para uma visualização de recurso

É possível configurar a recuperação de vetores para uma visualização de recurso criada com base em um se a fonte de dados associada contiver a coluna embedding e o armazenamento on-line estiver configurado para oferecer suporte ao gerenciamento de incorporação. É possível especificar a configuração de recuperação de vetores usando o parâmetro FeatureView.vector_search_config.

Observe que só é possível configurar a recuperação de vetores e gerenciar embeddings se a visualização de recurso for criada especificando um URI de origem do BigQuery, e não de grupos de atributos e atributos do Feature Registry.

Para informações sobre como fazer com que a fonte de dados do BigQuery ofereça suporte a embeddings incluindo a coluna embedding, consulte Diretrizes de preparação de fontes de dados.

Criar uma visualização de elementos a partir de grupos de recursos

Você pode criar uma visualização de recursos com base nos dados de recursos registrados usando recursos e grupos de recursos. Para associar várias fontes de dados do BigQuery à mesma visualização de recursos, especifique vários grupos de recursos.

Se você criar uma visualização de recursos especificando grupos de recursos e recursos:

  • Sua fonte de dados precisa ter uma coluna feature_timestamp e pode conter dados históricos.

  • O Vertex AI Feature Store exibe apenas os valores de atributos mais recentes com base no carimbo de data/hora do atributo.

  • Não é possível configurar o gerenciamento de incorporação para a visualização do recurso.

Criar uma visualização de recursos com a configuração da conta de serviço padrão

Use o exemplo a seguir para criar uma visualização de recursos associando vários grupos de recursos sem especificar uma configuração de conta de serviço.

REST

Para criar um recurso FeatureView, envie uma solicitação POST usando o método featureViews.create.

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

  • LOCATION_ID: região em que você quer criar a visualização do recurso, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATUREONLINESTORE_NAME: o nome da instância da loja on-line em que você quer criar a visualização do recurso.
  • FEATUREVIEW_NAME: o nome da nova instância de visualização de recurso que você quer criar.
  • FEATUREGROUP_NAME_A e FEATUREGROUP_NAME_B: os nomes dos grupos de que você quer adicionar recursos à visualização de elementos.
  • FEATURE_ID_A1 e FEATURE_ID_A2: IDs de recursos do grupo de recursos FEATUREGROUP_NAME_A que você quer adicionar à visualização de elementos.
  • FEATURE_ID_B1 e FEATURE_ID_B2: IDs de recursos do grupo de recursos FEATUREGROUP_NAME_B que você quer adicionar à visualização de elementos.
  • CRON: expressão de programação cron que representa a frequência de sincronização de dados com a visualização do recurso. Para mais informações, consulte Cron.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

Corpo JSON da solicitação:

{
  "feature_registry_source": {
    "feature_groups": [
      {
        "feature_group_id": "FEATUREGROUP_NAME_A",
        "feature_ids": [ "FEATURE_ID_A1", "FEATURE_ID_A2" ]
      },
      {
        "feature_group_id": "FEATUREGROUP_NAME_B",
        "feature_ids": [ "FEATURE_ID_B1", "FEATURE_ID_B2" ]
      }
    ]
  },
  "sync_config": {
    "cron": "CRON"
  }
}

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

Criar uma visualização de recursos especificando uma configuração de conta de serviço

Use o exemplo a seguir para criar uma visualização de recursos baseada em grupos de recursos especificando uma configuração de conta de serviço.

REST

Para criar um recurso FeatureView, envie uma solicitação POST usando o método featureViews.create.

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

  • LOCATION_ID: região em que você quer criar a visualização do recurso, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATUREONLINESTORE_NAME: o nome da instância da loja on-line em que você quer criar a visualização do recurso.
  • FEATUREVIEW_NAME: o nome da nova instância de visualização de recurso que você quer criar.
  • FEATUREGROUP_NAME_A e FEATUREGROUP_NAME_B: os nomes dos grupos de que você quer adicionar recursos à visualização de elementos.
  • FEATURE_ID_A1 e FEATURE_ID_A2: IDs de recursos do grupo de recursos FEATUREGROUP_NAME_A que você quer adicionar à visualização de elementos.
  • FEATURE_ID_B1 e FEATURE_ID_B2: IDs de recursos do grupo de recursos FEATUREGROUP_NAME_B que você quer adicionar à visualização de elementos.
  • CRON: expressão de programação cron que representa a frequência de sincronização de dados com a visualização do recurso. Para mais informações, consulte Cron.
  • SERVICE_AGENT_TYPE (opcional): configuração da conta de serviço para a visualização de recursos. Os tipos de agente de serviço compatíveis incluem:
    • SERVICE_AGENT_TYPE_PROJECT: use a conta de serviço para envolvidos no projeto para a visualização de recursos. Essa é a configuração padrão.
    • SERVICE_AGENT_TYPE_FEATURE_VIEW: configure e use uma conta de serviço dedicada para a visualização de recursos.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

Corpo JSON da solicitação:

{
  "feature_registry_source": {
    "feature_groups": [
      {
        "feature_group_id": "FEATUREGROUP_NAME_A",
        "feature_ids": [ "FEATURE_ID_A1", "FEATURE_ID_A2" ]
      },
      {
        "feature_group_id": "FEATUREGROUP_NAME_B",
        "feature_ids": [ "FEATURE_ID_B1", "FEATURE_ID_B2" ]
      }
    ]
  },
  "sync_config": {
    "cron": "CRON"
  },
  "service_agent_type": "SERVICE_AGENT_TYPE"
}

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

Criar uma visualização de recursos a partir de uma origem do BigQuery

Se você quiser disponibilizar recursos on-line sem registrar a fonte de dados do BigQuery usando recursos e grupos de recursos, crie uma visualização de recursos especificando o URI da fonte de dados do BigQuery.

Se você criar uma visualização de recursos especificando a fonte de dados:

  • Não é possível incluir uma coluna feature_timestamp na tabela ou visualização do BigQuery.

  • Não é possível incluir valores históricos de elementos na fonte de dados. Cada linha precisa conter um ID de entidade exclusivo.

Criar uma visualização de recursos com a configuração da conta de serviço padrão

Use o exemplo a seguir para criar uma visualização de recursos com suporte a embedding associando diretamente uma fonte de dados do BigQuery e sem especificar uma configuração de conta de serviço.

REST

Para criar um recurso FeatureView, envie uma solicitação POST usando o método featureViews.create.

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

  • LOCATION_ID: região em que você quer criar a visualização do recurso, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATUREONLINESTORE_NAME: o nome da instância da loja on-line em que você quer criar a visualização do recurso.
  • FEATUREVIEW_NAME: o nome da nova visualização de recursos que você quer criar.
  • PROJECT_NAME: o nome do seu projeto.
  • DATASET_NAME: nome do seu conjunto de dados do BigQuery.
  • TABLE_NAME: o nome da tabela do seu conjunto de dados do BigQuery.
  • ENTITY_ID_COLUMN: o nome da coluna que contém os IDs da entidade.
  • CRON: expressão de programação cron que representa a frequência de sincronização de dados com a visualização do recurso. Para mais informações, consulte Cron.
  • EMBEDDING_COLUMN: o nome da coluna que contém os dados de origem para criar o índice de pesquisa vetorial. É necessário fazer isso apenas se você quiser gerenciar incorporações com a visualização de recursos.
  • FILTER_COLUMN_1 e FILTER_COLUMN_2: os nomes das colunas usadas para filtrar os resultados da pesquisa de vetor.
  • CROWDING_COLUMN Opcional: os nomes da coluna que contém os atributos de agrupamento.
  • EMBEDDING_DIMENSION: opcional: o tamanho, expresso como número de dimensões, de um embedding na coluna de embedding.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

Corpo JSON da solicitação:

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMN"
  },
  "sync_config": {
    "cron": "CRON"
  },
  "vector_search_config": {
    "embedding_column": "EMBEDDING_COLUMN",
    "filter_columns": ["FILTER_COLUMN_1", "FILTER_COLUMN_2"],
    "crowding_column": "CROWDING_COLUMN",
    "embedding_dimension": EMBEDDING_DIMENSION
    "tree_ah_config": {}
  }
}

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

Criar uma visualização de recursos com gerenciamento de embeddings especificando uma configuração de conta de serviço

Use o exemplo a seguir para criar uma visualização de recursos com suporte a embedding associando diretamente uma fonte de dados do BigQuery e especificando uma configuração de conta de serviço.

REST

Para criar um recurso FeatureView com suporte a embeddings, envie uma solicitação POST usando o método featureViews.create e especificando a configuração da pesquisa vetorial.

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

  • LOCATION_ID: região em que você quer criar a visualização do recurso, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATUREONLINESTORE_NAME: o nome da instância da loja on-line em que você quer criar a visualização do recurso.
  • FEATUREVIEW_NAME: o nome da nova visualização de recursos que você quer criar.
  • PROJECT_NAME: o nome do seu projeto.
  • DATASET_NAME: nome do seu conjunto de dados do BigQuery.
  • TABLE_NAME: o nome da tabela do seu conjunto de dados do BigQuery.
  • ENTITY_ID_COLUMNS: os nomes das colunas que contêm os IDs das entidades. É possível especificar uma ou várias colunas.
    • Para especificar apenas uma coluna de IDs das entidades, especifique o nome da coluna no seguinte formato:
      "entity_id_column_name".
    • Para especificar várias colunas de IDs das entidades, especifique os nomes das colunas no seguinte formato:
      ["entity_id_column_1_name", "entity_id_column_2_name", ...].
  • CRON: expressão de programação cron que representa a frequência de sincronização de dados com a visualização do recurso. Para mais informações, consulte Cron.
  • SERVICE_AGENT_TYPE: configuração da conta de serviço para a visualização de recursos. Os tipos de agente de serviço compatíveis incluem:
    • SERVICE_AGENT_TYPE_PROJECT: use a conta de serviço para envolvidos no projeto para a visualização de recursos. Essa é a configuração padrão.
    • SERVICE_AGENT_TYPE_FEATURE_VIEW: configure e use uma conta de serviço dedicada para a visualização de recursos.
  • EMBEDDING_COLUMN: o nome da coluna que contém os dados de origem para criar o índice de pesquisa vetorial. É necessário fazer isso apenas se você quiser gerenciar incorporações com a visualização de recursos.
  • FILTER_COLUMN_1 e FILTER_COLUMN_2: os nomes das colunas usadas para filtrar os resultados da pesquisa de vetor.
  • CROWDING_COLUMN Opcional: os nomes da coluna que contém os atributos de agrupamento.
  • EMBEDDING_DIMENSION: opcional: o tamanho, expresso como número de dimensões, de um embedding na coluna de embedding.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

Corpo JSON da solicitação:

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMNS"
  },
  "sync_config": {
    "cron": "CRON"
  },
  "service_agent_type": "SERVICE_AGENT_TYPE",
  "vector_search_config": {
    "embedding_column": "EMBEDDING_COLUMN",
    "filter_columns": ["FILTER_COLUMN_1", "FILTER_COLUMN_2"],
    "crowding_column": "CROWDING_COLUMN",
    "embedding_dimension": EMBEDDING_DIMENSION
    "tree_ah_config": {}
  }
}

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

A seguir