Aggiornare dati strutturati e non strutturati

Questa pagina descrive l'aggiornamento dei dati strutturati e non strutturati.

Per aggiornare le app del tuo sito web, consulta Aggiornare la pagina web.

Aggiorna dati strutturati

Puoi aggiornare i dati in un data store di dati strutturati purché utilizzi uno schema uguale o compatibile con lo schema nel data store. Per Ad esempio, l'aggiunta di nuovi campi a uno schema esistente è compatibile con le versioni precedenti.

Puoi aggiornare i dati strutturati nella console Google Cloud o utilizzando l'API.

Console

Per utilizzare la console Google Cloud per aggiornare i dati strutturati da un ramo di un data store, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Agent Builder.

    Agent Builder

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Nella colonna Nome, fai clic sul datastore da modificare.

  4. Nella scheda Documenti, fai clic su Importa dati.

  5. Per aggiornare da Cloud Storage:

    1. Nel riquadro Seleziona un'origine dati, scegli Cloud Storage.
    2. Nel riquadro Importa dati da Cloud Storage, fai clic su Sfoglia. seleziona il bucket che contiene i dati aggiornati e fai clic su Seleziona. In alternativa, inserisci la località del bucket direttamente nella gs://.
    3. In Opzioni di importazione dati, seleziona un'opzione di importazione.
    4. Fai clic su Importa.
  6. Per aggiornare da BigQuery:

    1. Nel riquadro Seleziona un'origine dati, seleziona BigQuery.
    2. Nel riquadro Importa dati da BigQuery, fai clic su Sfoglia, seleziona una tabella contenente i dati aggiornati e poi fai clic su Seleziona. In alternativa, inserisci la posizione della tabella direttamente nel campo Percorso BigQuery.
    3. In Opzioni di importazione dati, seleziona un'opzione di importazione.
    4. Fai clic su Importa.

REST

Utilizza il metodo documents.import per aggiornare i dati, specificando il valore reconciliationMode appropriato.

Per aggiornare i dati strutturati da BigQuery o Cloud Storage utilizzando la riga di comando:

  1. Trova l'ID del tuo datastore. Se hai già un datastore ID, vai al passaggio successivo.

    1. Nella console Google Cloud, vai alla pagina Agent Builder e Nel menu di navigazione, fai clic su Datastore.

      Vai alla pagina Datastore

    2. Fai clic sul nome del tuo datastore.

    3. Nella pagina Dati del tuo datastore, ottieni l'ID del datastore.

  2. Per importare i dati strutturati da BigQuery, chiama il seguente metodo. Puoi importare da BigQuery o Cloud Storage. Per eseguire l'importazione da Cloud Storage, passa a al passaggio successivo.

    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: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID dello spazio dati di Vertex AI Search.
    • DATASET_ID: il nome del tuo set di dati BigQuery.
    • TABLE_ID: il nome della tabella BigQuery.
    • DATA_SCHEMA_BQ: un campo facoltativo per specificare lo schema da utilizzare durante l'analisi dei dati dall'origine BigQuery. Può avere i seguenti valori:
      • document: il valore predefinito. La tabella BigQuery che utilizzi deve essere conforme al seguente schema BigQuery predefinito. Tu puoi definire personalmente l'ID di ogni documento, raggruppando l'intero dati nella stringa json_data.
      • custom: qualsiasi schema di tabella BigQuery è accettato e Vertex AI Agent Builder genera automaticamente gli ID per ogni documento importato.
    • ERROR_DIRECTORY: un campo facoltativo per specificare una directory Cloud Storage per le informazioni sugli errori relativi all'importazione, ad esempio gs://<your-gcs-bucket>/directory/import_errors. Google consiglia di lasciare questo campo vuoto per consentire a Vertex AI Agent Builder di creare automaticamente una directory temporanea.
    • RECONCILIATION_MODE: un campo facoltativo per specificare come i documenti importati vengono riconciliati con i documenti esistenti in datastore di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Causa un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Questa operazione esegue l'upsert che aggiunge nuovi documenti e sostituisce quelli esistenti con aggiornati documenti con lo stesso ID.
      • FULL: determina un rebase completo dei documenti nel datastore. Pertanto, i documenti nuovi e aggiornati vengono aggiunti al tuo data store e quelli che non sono presenti in BigQuery vengono rimossi dal tuo data store. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.
    • AUTO_GENERATE_IDS: un campo facoltativo per specificare se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati sulla base di un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se gli ID vengono generati automaticamente in più importazioni, Google ha consiglia di impostare reconciliationMode su FULL per mantenere gli ID dei documenti coerenti.

      Specifica autoGenerateIds solo quando bigquerySource.dataSchema è impostato su custom. In caso contrario, viene restituito un errore INVALID_ARGUMENT restituito. Se non specifichi autoGenerateIds o lo imposti su false, devi specificare idField. In caso contrario, l'importazione dei documenti non andrà a buon fine.

    • ID_FIELD: un campo facoltativo per specificare quali campi sono gli ID documento. Per i file di origine BigQuery, idField indica il nome della colonna nella tabella BigQuery che contiene gli ID documento.

      Specifica idField solo quando entrambe le condizioni sono soddisfatte, altrimenti viene restituito un errore INVALID_ARGUMENT:

      • bigquerySource.dataSchema è impostato su custom
      • auto_generate_ids è impostato su false o non è specificato.

      Inoltre, il valore del nome della colonna BigQuery deve essere tipo di stringa, deve essere compreso tra 1 e 63 caratteri e deve essere conforme in RFC-1034. In caso contrario, l'importazione dei documenti non andrà a buon fine.

    Ecco lo schema BigQuery predefinito. Il tuo account BigQuery deve essere conforme a questo schema quando imposti dataSchema su document.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. Per importare i dati strutturati da Cloud Storage, chiama il seguente metodo. Puoi eseguire l'importazione da BigQuery o Cloud Storage. Importazione da BigQuery, vai al passaggio precedente.

    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: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID del datastore di Vertex AI Search.
    • GCS_PATHS: un elenco di URI separati da virgole per le località di Cloud Storage da cui vuoi eseguire l'importazione. Ogni URI può essere 2000 caratteri. Gli URI possono corrispondere al percorso completo di un oggetto di archiviazione o al pattern di uno o più oggetti. Ad esempio: gs://bucket/directory/*.json è un percorso valido.
    • DATA_SCHEMA_GCS: un campo facoltativo per specificare lo schema da utilizzare durante l'analisi dei dati dall'origine BigQuery. Può avere i seguenti valori:
      • document: il valore predefinito. La tabella BigQuery che utilizzi deve essere conforme al seguente schema BigQuery predefinito. Tu puoi definire personalmente l'ID di ogni documento, raggruppando l'intero dati nella stringa json_data.
      • custom: qualsiasi schema di tabella BigQuery è accettato e Vertex AI Agent Builder genera automaticamente gli ID per ogni documento importato.
    • ERROR_DIRECTORY: un campo facoltativo per specificare una directory Cloud Storage per le informazioni sugli errori relativi all'importazione, ad esempio gs://<your-gcs-bucket>/directory/import_errors. Google consiglia di lasciare questo campo vuoto per consentire a Vertex AI Agent Builder di creare automaticamente una directory temporanea.
    • RECONCILIATION_MODE: un campo facoltativo per specificare come i documenti importati vengono riconciliati con i documenti esistenti in datastore di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Causa un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Questa operazione esegue l'upsert che aggiunge nuovi documenti e sostituisce quelli esistenti con aggiornati documenti con lo stesso ID.
      • FULL: determina un rebase completo dei documenti nel datastore. Pertanto, i documenti nuovi e aggiornati vengono aggiunti al tuo data store e quelli che non sono presenti in BigQuery vengono rimossi dal tuo data store. La modalità FULL è utile se vuoi eliminare automaticamente documenti non più necessari.

Python

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python Vertex AI Agent Builder.

Per autenticarti in Vertex AI Agent Builder, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.


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)

Aggiornare dati non strutturati

Puoi aggiornare i dati non strutturati nella console Google Cloud o utilizzando l'API.

Console

Utilizzare la console Google Cloud per aggiornare i dati non strutturati da un ramo di un dato store, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Agent Builder.

    Agent Builder

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Nella colonna Nome, fai clic sul datastore da modificare.

  4. Nella scheda Documenti, fai clic su Importa dati.

  5. Per eseguire l'importazione da un bucket Cloud Storage (con o senza metadati):

    1. Nel riquadro Seleziona un'origine dati, scegli Cloud Storage.
    2. Nel riquadro Importa dati da Cloud Storage, fai clic su Sfoglia. seleziona il bucket che contiene i dati aggiornati e fai clic su Seleziona. In alternativa, inserisci la posizione del bucket direttamente nel campo gs://.
    3. In Opzioni di importazione dati, seleziona un'opzione di importazione.
    4. Fai clic su Importa.
  6. Per eseguire l'importazione da BigQuery:

    1. Nel riquadro Seleziona un'origine dati, seleziona BigQuery.
    2. Nel riquadro Importa dati da BigQuery, fai clic su Sfoglia, seleziona una tabella contenente i dati aggiornati e poi fai clic su Seleziona. In alternativa, inserisci la posizione della tabella direttamente nel campo BigQuery path.
    3. In Opzioni di importazione dati, seleziona un'opzione di importazione.
    4. Fai clic su Importa.

REST

Per aggiornare i dati non strutturati utilizzando l'API, importali di nuovo utilizzando il metodo documents.import, specificando il valore reconciliationMode appropriato. Per ulteriori informazioni sull'importazione di dati non strutturati, Consulta Dati non strutturati.

Python

Per ulteriori informazioni, consulta API Python di Vertex AI Agent Builder documentazione di riferimento.

Per autenticarti in Vertex AI Agent Builder, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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)