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ées à condition d'utiliser un schéma identique ou rétrocompatible avec celui de l'data store. Par exemple, l'ajout de nouveaux champs uniquement à 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 utiliser la console Google Cloud afin d'actualiser les données structurées à partir d'une branche d'un entrepôt de données, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Agent Builder.

    Agent Builder

  2. Dans le menu de navigation, cliquez sur Data stores (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 à 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 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 Agent Builder et cliquez sur Data Stores 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 depuis BigQuery, appelez la méthode suivante. Vous pouvez importer des données à partir de BigQuery ou de Cloud Storage. Pour importer à 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"
      }
    }'
    
    • 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 de la source BigQuery. Peut avoir les valeurs suivantes :
      • 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 l'outil de création d'agents Vertex AI 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 recommande de laisser ce champ vide pour permettre à Vertex AI Agent Builder de créer automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE: champ facultatif permettant de spécifier comment les documents importés sont mis en correspondance avec les documents existants dans le data store de destination. Peut avoir les valeurs suivantes :
      • INCREMENTAL: valeur par défaut. Permet d'actualiser de manière incrémentielle les données de BigQuery vers votre data store. Une opération d'insertion et de mise à jour est effectuée, qui ajoute de nouveaux documents et remplace les documents existants par des documents mis à jour portant le même ID.
      • FULL: entraîne une rebase complète des documents de votre data store. Par conséquent, des documents nouveaux et modifiés sont ajoutés à votre data store, et les documents qui ne figurent pas dans BigQuery sont supprimés de votre entrepôt de données. 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 ce paramètre est défini 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 pour plusieurs importations, Google vous recommande vivement de définir reconciliationMode sur FULL afin de maintenir la cohérence des ID de document.

      Indiquez 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 correspondant aux ID de document. Pour les fichiers sources BigQuery, idField indique le nom de la colonne de la table BigQuery contenant 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é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 à partir de Cloud Storage, appelez la méthode suivante. Vous pouvez importer des données depuis BigQuery ou Cloud Storage. Pour importer à partir de BigQuery, revenez à 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"
      }
    }'
    
    • 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 des emplacements Cloud Storage à partir desquels vous souhaitez importer. 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 format d'un ou de plusieurs objets. Par exemple, gs://bucket/directory/*.json est un chemin 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 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 l'outil de création d'agents Vertex AI 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 recommande de laisser ce champ vide pour permettre à Vertex AI Agent Builder de créer automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE: champ facultatif permettant de spécifier comment les documents importés sont mis en correspondance avec les documents existants dans le data store de destination. Peut avoir les valeurs suivantes :
      • INCREMENTAL: valeur par défaut. Permet d'actualiser de manière incrémentielle les données de BigQuery vers votre data store. Une opération d'insertion et de mise à jour est effectuée, qui ajoute de nouveaux documents et remplace les documents existants par des documents mis à jour portant le même ID.
      • FULL: entraîne une rebase complète des documents de votre data store. Par conséquent, des documents nouveaux et modifiés sont ajoutés à votre data store, et les documents qui ne figurent pas dans BigQuery sont supprimés de votre entrepôt de données. 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 Python de Vertex AI Agent Builder.

Pour vous authentifier auprès de Vertex AI Agent Builder, 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 utiliser la console Google Cloud afin d'actualiser les données non structurées à partir d'une branche d'un entrepôt de données, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Agent Builder.

    Agent Builder

  2. Dans le menu de navigation, cliquez sur Data stores (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 insé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 Python de Vertex AI Agent Builder.

Pour vous authentifier auprès de Vertex AI Agent Builder, 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)