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

Cette page décrit l'actualisation des données structurées et non structurées.

Actualiser les 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 le schéma du data store. Par exemple, l'ajout de nouveaux champs à un schéma existant est rétrocompatible.

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

Console

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

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

    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 à partir de Cloud Storage :

    1. Dans le volet Sélectionner une source de données, choisissez 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 l'emplacement du bucket directement dans le champ gs://.
    3. Sous Options d'importation des données, sélectionnez une option d'importation.
    4. Cliquez sur Importer.
  6. Pour actualiser les données depuis BigQuery :

    1. Dans le volet Sélectionner une source de données, choisissez 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 l'emplacement de la table directement dans le champ Chemin d'accès BigQuery.
    3. Sous Options d'importation des 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 disposez déjà de l'ID de votre data store, passez à l'étape suivante.

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

      Accéder à la page "Datastores"

    2. Cliquez sur le nom de votre datastore.

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

  2. Pour importer vos données structurées depuis BigQuery, appelez la méthode suivante. Vous pouvez importer des données depuis BigQuery ou Cloud Storage. Pour importer des données depuis 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 : par l'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 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'intégralité des données dans la chaîne json_data.
      • custom : tous les schémas de table BigQuery sont acceptés, 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 pour les informations d'erreur concernant l'importation, par exemple gs://<your-gcs-bucket>/directory/import_errors. Google 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. Provoque une actualisation incrémentielle des données de BigQuery vers votre data store. Cette opération effectue un upsert, qui ajoute de nouveaux documents et remplace les documents existants par des documents mis à jour portant le même ID.
      • FULL : entraîne un rebasage complet des documents de 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 si les ID de document doivent être générés automatiquement. 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.

      Ne spécifiez autoGenerateIds que lorsque bigquerySource.dataSchema est défini sur custom. Sinon, 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.

      Ne spécifiez idField que lorsque ces deux conditions sont remplies. Sinon, une erreur INVALID_ARGUMENT est renvoyée :

      • bigquerySource.dataSchema est définie 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 à la norme 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 depuis Cloud Storage, appelez la méthode suivante. Vous pouvez importer des données depuis BigQuery ou Cloud Storage. Pour importer des données depuis 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 : par l'ID du projet.
    • DATA_STORE_ID : ID du data store.
    • GCS_PATHS : liste d'URI séparés par une virgule vers les emplacements Cloud Storage à partir desquels vous souhaitez effectuer l'importation. Chaque URI peut comporter 2 000 caractères. Les URI peuvent correspondre au chemin d'accès complet d'un objet de stockage ou au modèle 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 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'intégralité des données dans la chaîne json_data.
      • custom : tous les schémas de table BigQuery sont acceptés, 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 pour les informations d'erreur concernant l'importation, par exemple gs://<your-gcs-bucket>/directory/import_errors. Google 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. Provoque une actualisation incrémentielle des données de BigQuery vers votre data store. Cette opération effectue un upsert, qui ajoute de nouveaux documents et remplace les documents existants par des documents mis à jour portant le même ID.
      • FULL : entraîne un rebasage complet des documents de 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 pour 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'API Gemini Enterprise en langage Python.

Pour vous authentifier auprès de Gemini Enterprise, configurez les 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 les données non structurées

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

Console

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

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

    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, choisissez 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 l'emplacement du bucket directement dans le champ gs://.
    3. Sous Options d'importation des données, sélectionnez une option d'importation.
    4. Cliquez sur Importer.
  6. Pour ingérer des données depuis BigQuery :

    1. Dans le volet Sélectionner une source de données, choisissez 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 l'emplacement de la table directement dans le champ Chemin d'accès BigQuery.
    3. Sous Options d'importation des 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 méthode documents.import, en spécifiant la valeur reconciliationMode appropriée. Pour en savoir plus sur l'importation de données non structurées, consultez Données non structurées.

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour 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'API Gemini Enterprise en langage Python.

Pour vous authentifier auprès de Gemini Enterprise, configurez les 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)