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, consulta Aggiornare la pagina web.

Aggiornare i dati strutturati

Puoi aggiornare i dati in un data datastore strutturati purché utilizzi uno schema uguale o compatibile con lo schema nel datastore. Ad esempio, l'aggiunta di solo 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 contenente 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 eseguire l'aggiornamento 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 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à l'ID del tuo datastore, vai al passaggio successivo.

    1. Nella console Google Cloud, vai alla pagina Agent Builder e nel menu di navigazione fai clic su Data Store.

      Vai alla pagina Datastore

    2. Fai clic sul nome del tuo datastore.

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

  2. Per importare i dati strutturati da BigQuery, chiama il seguente metodo. Puoi eseguire l'importazione da BigQuery o Cloud Storage. Per eseguire l'importazione 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"
      }
    }'
    
    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • DATA_STORE_ID: l'ID dello datastore di Vertex AI Search.
    • DATASET_ID: il nome del 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 dell'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 autonomamente l'ID di ogni documento, inserendo contemporaneamente l'intera stringa di 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 in che modo i documenti importati vengono riconciliati con i documenti esistenti nello datastore di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Causa un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Viene eseguita un'operazione upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID.
      • FULL: provoca un rebase completo dei documenti nel tuo datastore. Pertanto, i documenti nuovi e aggiornati vengono aggiunti al tuo datastore 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 in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente gli 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 entrambe queste 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 di tipo stringa, deve essere compreso tra 1 e 63 caratteri e deve essere conforme a 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 eseguire l'importazione da BigQuery o Cloud Storage. Per eseguire l'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 dello datastore di Vertex AI Search.
    • GCS_PATHS: un elenco di URI separati da virgola per le posizioni Cloud Storage da cui vuoi eseguire l'importazione. Ogni URI può essere costituito da un massimo di 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 dell'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 autonomamente l'ID di ogni documento, inserendo contemporaneamente l'intera stringa di 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 in che modo i documenti importati vengono riconciliati con i documenti esistenti nello datastore di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Causa un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Viene eseguita un'operazione upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID.
      • FULL: provoca un rebase completo dei documenti nel tuo datastore. Pertanto, i documenti nuovi e aggiornati vengono aggiunti al tuo datastore 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ù.

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, consulta Configurare 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 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 importare i dati 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 contenente 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 importare i dati 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 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, consulta Configurare 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)