Aggiornare i dati strutturati e non strutturati

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

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

Aggiornare i dati strutturati

Puoi aggiornare i dati in un datastore strutturati purché utilizzi uno schema uguale o compatibile con lo schema nell'datastore. Ad esempio, l'aggiunta di soli 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 datastore, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  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 poi 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 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 datastore. Se hai già l'ID del tuo datastore, vai al passaggio successivo.

    1. Nella Google Cloud console, vai alla pagina AI Applications 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 datastore, recupera l'ID datastore.

  2. Per importare i dati strutturati da BigQuery, chiama il seguente metodo. Puoi importare da BigQuery o Cloud Storage. Per importare da Cloud Storage, vai 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"
      }
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore 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. Puoi definire l'ID di ogni documento, racchiudendo tutti i dati nella stringa json_data.
      • custom: viene accettato qualsiasi schema di tabella BigQuery e AI Applications 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 vuoto questo campo per consentire ad AI Applications di creare automaticamente una directory temporanea.
    • RECONCILIATION_MODE: un campo facoltativo per specificare in che modo i documenti importati vengono riconciliati con i documenti esistenti neldatastoreti di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Provoca un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID.
      • FULL: provoca un rebase completo dei documenti nel datastore. Pertanto, i documenti nuovi e aggiornati vengono aggiunti al datastore e i documenti che non si trovano in BigQuery vengono rimossi dal datastore. 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 in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.

      Specifica autoGenerateIds solo quando bigquerySource.dataSchema è impostato su custom. In caso contrario, viene restituito un errore INVALID_ARGUMENT. 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 sono soddisfatte entrambe le condizioni, 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 di tipo stringa, deve essere compreso tra 1 e 63 caratteri e deve essere conforme allo standard RFC-1034. In caso contrario, l'importazione dei documenti non andrà a buon fine.

    Ecco lo schema BigQuery predefinito. La tabella 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 importare da BigQuery o Cloud Storage. Per importare 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"
      }
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search.
    • GCS_PATHS: un elenco di URI separati da virgole per le posizioni Cloud Storage da cui vuoi importare. Ogni URI può contenere 2000 caratteri. Gli URI possono corrispondere al percorso completo di un oggetto di archiviazione oppure 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. Puoi definire l'ID di ogni documento, racchiudendo tutti i dati nella stringa json_data.
      • custom: viene accettato qualsiasi schema di tabella BigQuery e AI Applications 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 vuoto questo campo per consentire ad AI Applications di creare automaticamente una directory temporanea.
    • RECONCILIATION_MODE: un campo facoltativo per specificare in che modo i documenti importati vengono riconciliati con i documenti esistenti neldatastoreti di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Provoca un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID.
      • FULL: provoca un rebase completo dei documenti nel datastore. Pertanto, i documenti nuovi e aggiornati vengono aggiunti al datastore e i documenti che non si trovano in BigQuery vengono rimossi dal datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta 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 i dati non strutturati

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

Console

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

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  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 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 poi 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 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 Percorso BigQuery.
    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 saperne di più sull'importazione di dati non strutturati, consulta Dati non strutturati.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta 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)