Atualizar dados estruturados e não estruturados

Esta página descreve como atualizar dados estruturados e não estruturados.

Para atualizar os apps do site, consulte Atualizar sua página da Web.

Atualizar dados estruturados

É possível atualizar os dados em um repositório de dados estruturados, desde que você use um esquema igual ou compatível com o esquema no repositório. Por exemplo, a adição de apenas novos campos a um esquema existente é compatível com versões anteriores.

É possível atualizar dados estruturados no console do Google Cloud ou usando a API.

Console

Para usar o console do Google Cloud e atualizar dados estruturados de uma filial de uma loja de dados, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  2. No menu de navegação, clique em Repositórios de dados.

  3. Na coluna Nome, clique no repositório de dados que você quer editar.

  4. Na guia Documentos, clique em Importar dados.

  5. Para atualizar do Cloud Storage:

    1. No painel Selecionar uma fonte de dados, escolha Cloud Storage.
    2. No painel Importar dados do Cloud Storage, clique em Procurar, selecione o bucket que contém os dados atualizados e clique em Selecionar. Como alternativa, insira o local do bucket diretamente no campo gs://.
    3. Em Opções de importação de dados, selecione uma opção de importação.
    4. Clique em Importar.
  6. Para atualizar do BigQuery:

    1. No painel Selecionar uma fonte de dados, escolha BigQuery.
    2. No painel Importar dados do BigQuery, clique em Procurar, selecione uma tabela que contenha os dados atualizados e clique em Selecionar. Como alternativa, insira o local da tabela diretamente no campo Caminho do BigQuery.
    3. Em Opções de importação de dados, selecione uma opção de importação.
    4. Clique em Importar.

REST

Use o método documents.import para atualizar seus dados, especificando o valor reconciliationMode apropriado.

Para atualizar dados estruturados do BigQuery ou do Cloud Storage usando a linha de comando, siga estas etapas:

  1. Encontre o ID do repositório de dados. Se você já tiver o ID do repositório de dados, pule para a próxima etapa.

    1. No console do Google Cloud, acesse a página Criador de agentes e, no menu de navegação, clique em Repositórios de dados.

      Acesse a página "Repositórios de dados"

    2. Clique no nome do seu repositório de dados.

    3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

  2. Para importar dados estruturados do BigQuery, chame o seguinte método. É possível importar do BigQuery ou do Cloud Storage. Para importar do Cloud Storage, pule para a próxima etapa.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA_BQ",
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": AUTO_GENERATE_IDS,
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • DATASET_ID: o nome do conjunto de dados do BigQuery.
    • TABLE_ID: o nome da tabela do BigQuery.
    • DATA_SCHEMA_BQ: um campo opcional para especificar o esquema a ser usado ao analisar dados da origem do BigQuery. Pode ter os seguintes valores:
      • document: o valor padrão. A tabela do BigQuery que você usa precisa estar em conformidade com o esquema padrão do BigQuery a seguir. Você pode definir o ID de cada documento, agrupando todos os dados na string json_data.
      • custom: qualquer esquema de tabela do BigQuery é aceito, e o Vertex AI Agent Builder gera automaticamente os IDs de cada documento importado.
    • ERROR_DIRECTORY: um campo opcional para especificar um diretório do Cloud Storage para informações de erro sobre a importação, por exemplo, gs://<your-gcs-bucket>/directory/import_errors. O Google recomenda deixar esse campo em branco para permitir que o Vertex AI Agent Builder crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: um campo opcional para especificar como os documentos importados são reconciliados com os documentos existentes no repositório de dados de destino. Pode ter os seguintes valores:
      • INCREMENTAL: o valor padrão. Causa uma atualização incremental de dados do BigQuery para o repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID.
      • FULL: causa uma rebase completa dos documentos no repositório de dados. Portanto, documentos novos e atualizados são adicionados ao repositório de dados, e aqueles que não estão no BigQuery são removidos dele. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.
    • AUTO_GENERATE_IDS: um campo opcional para especificar se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documentos são gerados com base em um hash do payload. Os IDs de documento gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter os IDs de documentos consistentes.

      Especifique autoGenerateIds somente quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, um erro INVALID_ARGUMENT é retornado. Se você não especificar autoGenerateIds ou definir como false, será necessário especificar idField. Caso contrário, a importação dos documentos vai falhar.

    • ID_FIELD: um campo opcional para especificar quais campos são os IDs do documento. Para arquivos de origem do BigQuery, idField indica o nome da coluna na tabela do BigQuery que contém os IDs dos documentos.

      Especifique idField somente quando ambas as condições forem atendidas. Caso contrário, um erro INVALID_ARGUMENT será retornado:

      • bigquerySource.dataSchema é definida como custom;
      • auto_generate_ids está definido como false ou não está especificado.

      Além disso, o valor do nome da coluna do BigQuery precisa ser do tipo string, ter entre 1 e 63 caracteres e estar em conformidade com o RFC-1034. Caso contrário, a importação dos documentos vai falhar.

    Este é o esquema padrão do BigQuery. Sua tabela do BigQuery precisa estar em conformidade com esse esquema quando você define dataSchema como document.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. Para importar dados estruturados do Cloud Storage, chame o método a seguir. É possível importar do BigQuery ou do Cloud Storage. Para importar do BigQuery, acesse a etapa anterior.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
      "gcsSource": {
        "inputUris": ["GCS_PATHS"],
        "dataSchema": "DATA_SCHEMA_GCS",
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    
    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • GCS_PATHS: uma lista de URIs separados por vírgulas para locais do Cloud Storage de onde você quer importar. Cada URI pode ter 2.000 caracteres. Os URIs podem corresponder ao caminho completo de um objeto de armazenamento ou ao padrão de um ou mais objetos. Por exemplo, gs://bucket/directory/*.json é um caminho válido.
    • DATA_SCHEMA_GCS: um campo opcional para especificar o esquema a ser usado ao analisar dados da origem do BigQuery. Pode ter os seguintes valores:
      • document: o valor padrão. A tabela do BigQuery que você usa precisa estar em conformidade com o esquema padrão do BigQuery a seguir. Você pode definir o ID de cada documento, agrupando todos os dados na string json_data.
      • custom: qualquer esquema de tabela do BigQuery é aceito, e o Vertex AI Agent Builder gera automaticamente os IDs de cada documento importado.
    • ERROR_DIRECTORY: um campo opcional para especificar um diretório do Cloud Storage para informações de erro sobre a importação, por exemplo, gs://<your-gcs-bucket>/directory/import_errors. O Google recomenda deixar esse campo em branco para permitir que o Vertex AI Agent Builder crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: um campo opcional para especificar como os documentos importados são reconciliados com os documentos existentes no repositório de dados de destino. Pode ter os seguintes valores:
      • INCREMENTAL: o valor padrão. Causa uma atualização incremental de dados do BigQuery para o repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID.
      • FULL: causa uma rebase completa dos documentos no repositório de dados. Portanto, documentos novos e atualizados são adicionados ao repositório de dados, e aqueles que não estão no BigQuery são removidos dele. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.

Python

Para mais informações, consulte a documentação de referência da API Python do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigquery_dataset = "YOUR_BIGQUERY_DATASET"
# bigquery_table = "YOUR_BIGQUERY_TABLE"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigquery_source=discoveryengine.BigQuerySource(
        project_id=project_id,
        dataset_id=bigquery_dataset,
        table_id=bigquery_table,
        data_schema="custom",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Atualizar dados não estruturados

É possível atualizar dados não estruturados no console do Google Cloud ou usando a API.

Console

Para usar o console do Google Cloud e atualizar dados não estruturados de uma filial de uma loja de dados, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  2. No menu de navegação, clique em Repositórios de dados.

  3. Na coluna Nome, clique no repositório de dados que você quer editar.

  4. Na guia Documentos, clique em Importar dados.

  5. Para fazer a ingestão de um bucket do Cloud Storage (com ou sem metadados):

    1. No painel Selecionar uma fonte de dados, escolha Cloud Storage.
    2. No painel Importar dados do Cloud Storage, clique em Procurar, selecione o bucket que contém os dados atualizados e clique em Selecionar. Como alternativa, insira o local do bucket diretamente no campo gs://.
    3. Em Opções de importação de dados, selecione uma opção de importação.
    4. Clique em Importar.
  6. Para fazer a transferência do BigQuery:

    1. No painel Selecionar uma fonte de dados, escolha BigQuery.
    2. No painel Importar dados do BigQuery, clique em Procurar, selecione uma tabela que contenha os dados atualizados e clique em Selecionar. Como alternativa, insira o local da tabela diretamente no campo Caminho do BigQuery.
    3. Em Opções de importação de dados, selecione uma opção de importação.
    4. Clique em Importar.

REST

Para atualizar dados não estruturados usando a API, importe-os novamente usando o método documents.import, especificando o valor reconciliationMode adequado. Para mais informações sobre como importar dados não estruturados, consulte Dados não estruturados.

Python

Para mais informações, consulte a documentação de referência da API Python do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"

# Examples:
# - Unstructured documents
#   - `gs://bucket/directory/file.pdf`
#   - `gs://bucket/directory/*.pdf`
# - Unstructured documents with JSONL Metadata
#   - `gs://bucket/directory/file.json`
# - Unstructured documents with CSV Metadata
#   - `gs://bucket/directory/file.csv`
# gcs_uri = "YOUR_GCS_PATH"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    gcs_source=discoveryengine.GcsSource(
        # Multiple URIs are supported
        input_uris=[gcs_uri],
        # Options:
        # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
        # - `custom` - Unstructured documents with custom JSONL metadata
        # - `document` - Structured documents in the discoveryengine.Document format.
        # - `csv` - Unstructured documents with CSV metadata
        data_schema="content",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)