Actualiser les données structurées et non structurées

Cette page explique comment actualiser des données structurées et non structurées.

Actualiser des données structurées

Vous pouvez actualiser les données d'un data store structuré tant que vous utilisez un schéma identique ou rétrocompatible avec celui du data store. Par exemple, l'ajout de nouveaux champs à un schéma existant est rétrocompatible.

Vous pouvez actualiser des données structurées dans la Google Cloud console ou à l'aide de l'API.

Console

Pour actualiser des données structurées à partir d'une branche d'un data store à l'aide de la Google Cloud console, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la Gemini Enterprise page.

    Gemini Enterprise

  2. Dans le menu de navigation, cliquez sur Datastores.

  3. Dans la colonne Nom, cliquez sur le data store que vous souhaitez modifier.

  4. Dans l'onglet Documents, cliquez sur Importer des données.

  5. Pour actualiser les données à partir de Cloud Storage :

    1. Dans le volet Sélectionner une source de données, sélectionnez Cloud Storage.
    2. Dans le volet Importer des données depuis Cloud Storage, cliquez sur Parcourir, sélectionnez le bucket contenant vos données actualisées, puis cliquez sur Sélectionner. Vous pouvez également saisir directement l'emplacement du bucket dans le champ gs://.
    3. Sous Options d'importation de données, sélectionnez une option d'importation.
    4. Cliquez sur Importer.
  6. Pour actualiser les données à partir de BigQuery :

    1. Dans le volet Sélectionner une source de données, sélectionnez BigQuery.
    2. Dans le volet Importer des données depuis BigQuery, cliquez sur Parcourir, sélectionnez une table contenant vos données actualisées, puis cliquez sur Sélectionner. Vous pouvez également saisir directement l'emplacement de la table dans le champ Chemin d'accès BigQuery.
    3. Sous Options d'importation de données, sélectionnez une option d'importation.
    4. Cliquez sur Importer.

REST

Utilisez la méthode documents.import pour actualiser vos données, en spécifiant la valeur reconciliationMode appropriée.

Pour actualiser des données structurées à partir de BigQuery ou de Cloud Storage à l'aide de la ligne de commande, procédez comme suit :

  1. Recherchez l'ID de votre data store. Si vous le connaissez déjà, passez à l'étape suivante.

    1. Dans la Google Cloud console, accédez à la page Gemini Enterprise, puis cliquez sur Datastores dans le menu de navigation.

      Accéder à la page "Datastores"

    2. Cliquez sur le nom de votre data store.

    3. Sur la page Données de votre data store, obtenez l'ID du data store.

  2. Pour importer vos données structurées à partir de BigQuery, appelez la méthode suivante. Vous pouvez importer des données à partir de BigQuery ou de Cloud Storage. Pour importer des données à partir de Cloud Storage, passez à l'étape suivante.

    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"
      }
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet.
    • DATA_STORE_ID : ID du data store.
    • DATASET_ID : nom de votre ensemble de données BigQuery.
    • TABLE_ID : nom de votre table BigQuery.
    • DATA_SCHEMA_BQ: champ facultatif permettant de spécifier le schéma à utiliser lors de l'analyse des données provenant de la source BigQuery. Peut avoir les valeurs suivantes :
      • document : valeur par défaut. La table BigQuery que vous utilisez doit être conforme au schéma BigQuery par défaut suivant. Vous pouvez définir vous-même l'ID de chaque document, tout en encapsulant l'ensemble des données dans la chaîne json_data.
      • custom: n'importe quel schéma de table BigQuery est accepté, et Gemini Enterprise génère automatiquement les ID de chaque document importé.
    • ERROR_DIRECTORY : champ facultatif permettant de spécifier un répertoire Cloud Storage contenant des informations sur les erreurs d'importation (par exemple, gs://<your-gcs-bucket>/directory/import_errors). Google vous recommande de laisser ce champ vide pour permettre à Gemini Enterprise de créer automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE: champ facultatif permettant de spécifier comment les documents importés sont rapprochés des documents existants dans le data store de destination. Peut avoir les valeurs suivantes :
      • INCREMENTAL : valeur par défaut. Entraîne une actualisation incrémentielle des données de BigQuery vers votre data store. Cette opération effectue une opération d'upsert, qui ajoute de nouveaux documents et remplace les documents existants par des documents modifiés portant le même ID.
      • FULL : entraîne une réinitialisation complète des documents dans votre data store. Par conséquent, les documents nouveaux et mis à jour sont ajoutés à votre data store, et les documents qui ne se trouvent pas dans BigQuery sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS: champ facultatif permettant de spécifier s'il faut générer automatiquement des ID de document. Si la valeur est définie sur true, les ID de document sont générés en fonction d'un hachage de la charge utile. Notez que les ID de document générés peuvent ne pas rester cohérents sur plusieurs importations. Si vous générez automatiquement des ID sur plusieurs importations, Google vous recommande vivement de définir reconciliationMode sur FULL pour conserver des ID de document cohérents.

      Spécifiez autoGenerateIds uniquement lorsque bigquerySource.dataSchema est défini sur custom. Dans le cas contraire, une erreur INVALID_ARGUMENT est renvoyée. Si vous ne spécifiez pas autoGenerateIds ou si vous le définissez sur false, vous devez spécifier idField. Sinon, l'importation des documents échoue.

    • ID_FIELD: champ facultatif permettant de spécifier les champs qui sont les ID de document. Pour les fichiers sources BigQuery, idField indique le nom de la colonne de la table BigQuery qui contient les ID de document.

      Spécifiez idField uniquement lorsque les deux conditions suivantes sont remplies. Sinon, une erreur INVALID_ARGUMENT est renvoyée :

      • bigquerySource.dataSchema est défini sur custom
      • auto_generate_ids est défini sur false ou n'est pas spécifié.

      De plus, la valeur du nom de la colonne BigQuery doit être de type chaîne, comporter entre 1 et 63 caractères, et être conforme à RFC-1034. Sinon, l'importation des documents échoue.

    Voici le schéma BigQuery par défaut. Votre table BigQuery doit être conforme à ce schéma lorsque vous définissez dataSchema sur document.

    [
     {
       "name": "id",
       "mode": "REQUIRED",
       "type": "STRING",
       "fields": []
     },
     {
       "name": "jsonData",
       "mode": "NULLABLE",
       "type": "STRING",
       "fields": []
     }
    ]
    
  3. Pour importer vos données structurées à partir de Cloud Storage, appelez la méthode suivante. Vous pouvez importer des données à partir de BigQuery ou de Cloud Storage. Pour importer des données à partir de BigQuery, passez à l'étape précédente.

    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"
      }
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet.
    • DATA_STORE_ID : ID du data store.
    • GCS_PATHS: liste d'URI séparées par des virgules vers les emplacements Cloud Storage à partir desquels vous souhaitez importer des données. Chaque URI peut comporter jusqu'à 2 000 caractères. Les URI peuvent correspondre au chemin d'accès complet d'un objet de stockage ou au schéma d'un ou de plusieurs objets. Par exemple, gs://bucket/directory/*.json est un chemin d'accès valide.
    • DATA_SCHEMA_GCS: champ facultatif permettant de spécifier le schéma à utiliser lors de l'analyse des données provenant de la source BigQuery. Peut avoir les valeurs suivantes :
      • document : valeur par défaut. La table BigQuery que vous utilisez doit être conforme au schéma BigQuery par défaut suivant. Vous pouvez définir vous-même l'ID de chaque document, tout en encapsulant l'ensemble des données dans la chaîne json_data.
      • custom: n'importe quel schéma de table BigQuery est accepté, et Gemini Enterprise génère automatiquement les ID de chaque document importé.
    • ERROR_DIRECTORY : champ facultatif permettant de spécifier un répertoire Cloud Storage contenant des informations sur les erreurs d'importation (par exemple, gs://<your-gcs-bucket>/directory/import_errors). Google vous recommande de laisser ce champ vide pour permettre à Gemini Enterprise de créer automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE: champ facultatif permettant de spécifier comment les documents importés sont rapprochés des documents existants dans le data store de destination. Peut avoir les valeurs suivantes :
      • INCREMENTAL : valeur par défaut. Entraîne une actualisation incrémentielle des données de BigQuery vers votre data store. Cette opération effectue une opération d'upsert, qui ajoute de nouveaux documents et remplace les documents existants par des documents modifiés portant le même ID.
      • FULL : entraîne une réinitialisation complète des documents dans votre data store. Par conséquent, les documents nouveaux et mis à jour sont ajoutés à votre data store, et les documents qui ne se trouvent pas dans BigQuery sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.

Python

Avant d'essayer cet exemple, suivez les instructions de configuration Python décrites dans le guide de démarrage rapide de Gemini Enterprise à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'Python API Gemini Enterprise.

Pour vous authentifier auprès de Gemini Enterprise, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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)

Actualiser des données non structurées

Vous pouvez actualiser des données non structurées dans la Google Cloud console ou à l'aide de l'API.

Console

Pour actualiser des données non structurées à partir d'une branche d'un data store à l'aide de la Google Cloud console, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la Gemini Enterprise page.

    Gemini Enterprise

  2. Dans le menu de navigation, cliquez sur Datastores.

  3. Dans la colonne Nom, cliquez sur le data store que vous souhaitez modifier.

  4. Dans l'onglet Documents, cliquez sur Importer des données.

  5. Pour ingérer des données à partir d'un bucket Cloud Storage (avec ou sans métadonnées) :

    1. Dans le volet Sélectionner une source de données, sélectionnez Cloud Storage.
    2. Dans le volet Importer des données depuis Cloud Storage, cliquez sur Parcourir, sélectionnez le bucket contenant vos données actualisées, puis cliquez sur Sélectionner. Vous pouvez également saisir directement l'emplacement du bucket dans le champ gs://.
    3. Sous Options d'importation de données, sélectionnez une option d'importation.
    4. Cliquez sur Importer.
  6. Pour ingérer des données à partir de BigQuery :

    1. Dans le volet Sélectionner une source de données, sélectionnez BigQuery.
    2. Dans le volet Importer des données depuis BigQuery, cliquez sur Parcourir, sélectionnez une table contenant vos données actualisées, puis cliquez sur Sélectionner. Vous pouvez également saisir directement l'emplacement de la table dans le champ Chemin d'accès BigQuery.
    3. Sous Options d'importation de données, sélectionnez une option d'importation.
    4. Cliquez sur Importer.

REST

Pour actualiser des données non structurées à l'aide de l'API, réimportez-les à l'aide de la documents.import méthode, en spécifiant la valeur reconciliationMode appropriée. Pour en savoir plus sur l'importation de données non structurées, consultez la page Données non structurées.

Python

Avant d'essayer cet exemple, suivez les instructions de configuration Python décrites dans le guide de démarrage rapide de Gemini Enterprise à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'Python API Gemini Enterprise.

Pour vous authentifier auprès de Gemini Enterprise, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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)