Atualizar dados estruturados e não estruturados

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

Para atualizar os apps do seu site, consulte Atualizar a 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 versões anteriores do esquema no repositório de dados. Por exemplo, adicionar apenas novos campos a um esquema atual é compatível com versões anteriores.

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

Console

Para usar o Google Cloud console e atualizar dados estruturados de uma ramificação de um repositório de dados, siga estas etapas:

  1. No Google Cloud console, acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, selecione 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 contém 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 os dados, especificando o valor reconciliationMode adequado.

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 Google Cloud console, acesse a página Aplicativos de IA e no menu de navegação, clique em Repositórios de dados.

      Acessar 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 os dados estruturados do BigQuery, chame o método a seguir. É 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"
      }
    }'
    

    Substitua:

    • PROJECT_ID: o ID do Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Pesquisa de agentes.
    • 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 fonte 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. É possível definir o ID de cada documento, enquanto envolve todos os dados na string json_data.
      • custom: qualquer esquema de tabela do BigQuery é aceito, e a Pesquisa de agentes 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 que a Pesquisa de agentes crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: um campo opcional para especificar como os documentos importados são reconciliados com os documentos atuais 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 atuais por documentos atualizados com o mesmo ID.
      • FULL: causa uma nova base completa dos documentos no repositório de dados. Portanto, documentos novos e atualizados são adicionados ao repositório de dados, e os documentos que não estão no BigQuery são removidos do repositório de dados. 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 serão gerados com base em um hash do payload. Os IDs de documentos 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 IDs de documentos consistentes.

      Especifique autoGenerateIds apenas quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, um erro INVALID_ARGUMENT será retornado. Se você não especificar autoGenerateIds ou defini-lo como false, será necessário especificar idField. Caso contrário, os documentos não serão importados.

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

      Especifique idField apenas quando essas duas condições forem atendidas. Caso contrário, um erro INVALID_ARGUMENT será retornado:

      • bigquerySource.dataSchema está definido 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 RFC-1034. Caso contrário, os documentos não serão importados.

    Confira o esquema padrão do BigQuery. A 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 os 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"
      }
    }'
    

    Substitua:

    • PROJECT_ID: o ID do Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Pesquisa de agentes.
    • GCS_PATHS: uma lista de URIs separados por vírgulas para locais do Cloud Storage de onde você quer importar. Cada URI pode ter até 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 fonte 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. É possível definir o ID de cada documento, enquanto envolve todos os dados na string json_data.
      • custom: qualquer esquema de tabela do BigQuery é aceito, e a Pesquisa de agentes 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 que a Pesquisa de agentes crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: um campo opcional para especificar como os documentos importados são reconciliados com os documentos atuais 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 atuais por documentos atualizados com o mesmo ID.
      • FULL: causa uma nova base completa dos documentos no repositório de dados. Portanto, documentos novos e atualizados são adicionados ao repositório de dados, e os documentos que não estão no BigQuery são removidos do repositório de dados. 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 da Pesquisa de agentes.Python

Para autenticar na Pesquisa de agentes, configure o Application Default Credentials. Se quiser 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 Google Cloud console ou usando a API.

Console

Para usar o Google Cloud console e atualizar dados não estruturados de uma ramificação de um repositório de dados, siga estas etapas:

  1. No Google Cloud console, acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, selecione 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 ingerir 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 ingerir 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 contém 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 documents.import método, especificando o reconciliationMode valor 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 da Pesquisa de agentes.Python

Para autenticar na Pesquisa de agentes, configure o Application Default Credentials. Se quiser 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)