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.

Pour actualiser les applications de votre site Web, consultez Actualiser votre page Web.

Actualiser les données structurées

Vous pouvez actualiser les données d'un data store structuré à condition d'utiliser 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 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 data store à l'aide de la console Google Cloud , procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page AI Applications.

    AI Applications

  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, 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 directement l'emplacement du bucket 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 à 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 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 Cloud Storage à l'aide de la ligne de commande, procédez comme suit :

  1. Trouvez 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 Applications d'IA, puis cliquez sur Data stores dans le menu de navigation.

      Accéder à la page "Data stores"

    2. Cliquez sur le nom de votre data store.

    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 : ID de votre projet Google Cloud .
    • DATA_STORE_ID : ID du data store Vertex AI Search.
    • 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. Les valeurs suivantes sont possibles :
      • document : valeur par défaut. La table BigQuery que vous utilisez doit respecter le 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 : tout schéma de table BigQuery est accepté, et les applications d'IA génèrent automatiquement les ID pour 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 recommande de laisser ce champ vide pour permettre aux applications d'IA de créer automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE : champ facultatif permettant de spécifier comment les documents importés sont réconciliés avec les documents existants dans le data store de destination. Les valeurs suivantes sont possibles :
      • INCREMENTAL : valeur par défaut. Provoque une actualisation incrémentielle des données de BigQuery vers votre data store. Cette opération d'upsert 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 modifiés sont ajoutés à votre data store, et les documents qui ne se trouvent pas dans BigQuery en sont supprimés. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS : champ facultatif permettant d'indiquer 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 lors de plusieurs importations. Si vous générez automatiquement des ID lors de 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 échouera.

    • 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 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 échouera.

    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 : ID de votre projet Google Cloud .
    • DATA_STORE_ID : ID du data store Vertex AI Search.
    • GCS_PATHS : liste d'URI séparés par une virgule 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 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 provenant de la source BigQuery. Les valeurs suivantes sont possibles :
      • document : valeur par défaut. La table BigQuery que vous utilisez doit respecter le 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 : tout schéma de table BigQuery est accepté, et les applications d'IA génèrent automatiquement les ID pour 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 recommande de laisser ce champ vide pour permettre aux applications d'IA de créer automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE : champ facultatif permettant de spécifier comment les documents importés sont réconciliés avec les documents existants dans le data store de destination. Les valeurs suivantes sont possibles :
      • INCREMENTAL : valeur par défaut. Provoque une actualisation incrémentielle des données de BigQuery vers votre data store. Cette opération d'upsert 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 modifiés sont ajoutés à votre data store, et les documents qui ne se trouvent pas dans BigQuery en sont supprimés. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.

Python

Pour en savoir plus, consultez la documentation de référence de l'API AI Applications Python.

Pour vous authentifier auprès des applications d'IA, 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 les données non structurées d'une branche d'un data store à l'aide de la console Google Cloud , procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page AI Applications.

    AI Applications

  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 directement l'emplacement du bucket 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, 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 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

Pour en savoir plus, consultez la documentation de référence de l'API AI Applications Python.

Pour vous authentifier auprès des applications d'IA, 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)