Aggiornare i dati strutturati e non strutturati

In questa pagina viene descritto come aggiornare i dati strutturati e non strutturati.

Aggiornare i dati strutturati

Puoi aggiornare i dati in un datastore di dati strutturati a condizione che utilizzi uno schema uguale o compatibile con le versioni precedenti dello schema nel datastore. Ad esempio, l'aggiunta di nuovi campi a uno schema esistente è compatibile con le versioni precedenti.

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

Console

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

  1. Nella Google Cloud console, vai alla pagina Gemini Enterprise.

    Gemini Enterprise

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

  3. Nella colonna Nome, fai clic sul datastore che vuoi modificare.

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

  5. Per aggiornare da Cloud Storage:

    1. Nel riquadro Seleziona un'origine dati, seleziona 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 gs:// campo.
    3. In Opzioni di importazione dei 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 che contiene 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 dei 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, segui questi passaggi:

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

    1. Nella Google Cloud console, vai alla pagina Gemini Enterprise 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 del 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 progetto.
    • DATA_STORE_ID: l'ID del datastore.
    • 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 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 json_data stringa.
      • custom: viene accettato qualsiasi schema di tabella BigQuery e Gemini Enterprise genera automaticamente gli ID per ogni documento importato.
    • ERROR_DIRECTORY: un campo facoltativo per specificare una directory Cloud Storage per informazioni sugli errori relativi all'importazione, ad esempio gs://<your-gcs-bucket>/directory/import_errors. Google consiglia di lasciare vuoto questo campo per consentire a Gemini Enterprise 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 nel datastore di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Provoca un aggiornamento incrementale dei dati da BigQuery al datastore. Questa operazione esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID.
      • FULL: provoca una riorganizzazione completa dei documenti nel datastore. Di conseguenza, i documenti nuovi e aggiornati vengono aggiunti al datastore e i documenti che non sono 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 dei documenti. Se impostato su true, gli ID dei documenti vengono generati in base a un hash del payload. Tieni presente che gli ID dei documenti 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 dei documenti 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 riesce.

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

      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 allo standard RFC-1034. In caso contrario, l'importazione dei documenti non riesce.

    Di seguito è riportato 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 progetto.
    • DATA_STORE_ID: l'ID del datastore.
    • GCS_PATHS: un elenco di URI separati da virgole per le posizioni di Cloud Storage da cui vuoi importare. Ogni URI può avere una lunghezza massima di 2000 caratteri. Gli URI possono corrispondere al percorso completo di un oggetto di archiviazione o possono corrispondere 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 json_data stringa.
      • custom: viene accettato qualsiasi schema di tabella BigQuery e Gemini Enterprise genera automaticamente gli ID per ogni documento importato.
    • ERROR_DIRECTORY: un campo facoltativo per specificare una directory Cloud Storage per informazioni sugli errori relativi all'importazione, ad esempio gs://<your-gcs-bucket>/directory/import_errors. Google consiglia di lasciare vuoto questo campo per consentire a Gemini Enterprise 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 nel datastore di destinazione. Può avere i seguenti valori:
      • INCREMENTAL: il valore predefinito. Provoca un aggiornamento incrementale dei dati da BigQuery al datastore. Questa operazione esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID.
      • FULL: provoca una riorganizzazione completa dei documenti nel datastore. Di conseguenza, i documenti nuovi e aggiornati vengono aggiunti al datastore e i documenti che non sono in BigQuery vengono rimossi dal datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.

Python

Prima di provare questo esempio, segui le istruzioni di configurazione Python nella guida rapida di Gemini Enterprise per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Gemini Enterprise Python.

Per eseguire l'autenticazione in Gemini Enterprise, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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 Google Cloud console o utilizzando l'API.

Console

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

  1. Nella Google Cloud console, vai alla pagina Gemini Enterprise.

    Gemini Enterprise

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

  3. Nella colonna Nome, fai clic sul datastore che vuoi modificare.

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

  5. Per importare da un bucket Cloud Storage (con o senza metadati):

    1. Nel riquadro Seleziona un'origine dati, seleziona 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 gs:// campo.
    3. In Opzioni di importazione dei dati, seleziona un'opzione di importazione.
    4. Fai clic su Importa.
  6. Per importare 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 che contiene 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 dei dati, seleziona un'opzione di importazione.
    4. Fai clic su Importa.

REST

Per aggiornare i dati non strutturati utilizzando l'API, reimportali utilizzando il documents.import metodo, specificando il valore reconciliationMode appropriato. Per saperne di più sull'importazione di dati non strutturati, consulta Dati non strutturati.

Python

Prima di provare questo esempio, segui le istruzioni di configurazione Python nella guida rapida di Gemini Enterprise per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Gemini Enterprise Python.

Per eseguire l'autenticazione in Gemini Enterprise, configura le Credenziali predefinite dell'applicazione. Per saperne di più, 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)