Créer un data store de recommandations générique

Pour créer un datastore et ingérer des données pour des recommandations génériques, accédez à la section correspondant à la source que vous prévoyez d'utiliser :

URL des sites Web

Console

Pour utiliser la console Google Cloud afin de créer un data store et d'indexer des données à partir d'un site Web, 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 (Magasins de données).

  3. Cliquez sur Nouveau data store.

  4. Sur la page Sélectionnez une source de données, choisissez Contenu de site Web.

  5. Indiquez si vous souhaitez activer l'indexation avancée de sites Web pour ce data store. Vous ne pourrez pas désactiver cette option par la suite.

    L'indexation avancée des sites Web offre des fonctionnalités supplémentaires, telles que la synthèse de la recherche, la recherche avec des questions de suivi et les réponses extractives. L'indexation avancée de site Web entraîne des coûts supplémentaires et nécessite que vous valider la propriété du domaine pour tous les sites Web que vous indexez. Pour en savoir plus, consultez Indexation avancée de site Web et Tarification.

  6. Dans le champ Sites à inclure, spécifiez les URL des sites Web que vous que vous souhaitez indexer. Incluez une URL par ligne, sans les séparer par une virgule.

  7. Facultatif: dans le champ Sites à exclure, saisissez les sites Web à exclure. exclure de votre application.

  8. Cliquez sur Continuer.

  9. Attribuez un nom à votre datastore.

  10. Sélectionnez un emplacement pour votre data store. L'indexation avancée de site Web doit être activée pour sélectionner un emplacement.

  11. Cliquez sur Créer. Vertex AI Agent Builder crée votre data store et l'affiche sur la page Data Stores (Data stores).

  12. Pour afficher des informations sur votre data store, cliquez sur son nom. dans la colonne Nom. La page de votre data store s'affiche.

    Si vous avez activé l'indexation avancée des sites Web, un avertissement s'affiche pour vous inviter à valider la propriété de votre domaine. En cas de manque de quota le nombre de pages des sites Web que vous avez spécifié dépasse la limite de documents par projet" quota pour votre projet), une un avertissement supplémentaire vous invite à augmenter votre quota. La procédure ci-dessous vous explique comment valider la propriété d'un domaine et mettre à niveau votre quota.

  13. Pour valider la propriété de votre domaine, procédez comme suit:

    1. Cliquez sur Valider dans la Google Search Console. Le Centre d'aide Google Search Console s'affiche.
    2. Suivez les instructions à l'écran pour valider un domaine ou un préfixe d'URL, selon que vous validez un domaine entier ou un préfixe d'URL faisant partie d'un domaine. Pour en savoir plus, consultez l'article Valider votre site propriété des données l'aide de la Search Console.
    3. Une fois le workflow de validation du domaine terminé, revenez à la page Agent Builder, puis cliquez sur Data Stores (Dépôts de données) dans le menu de navigation.
    4. Cliquez sur le nom de votre data store dans la colonne Nom. Votre data store s'affiche.
    5. Cliquez sur Actualiser l'état pour mettre à jour les valeurs de la colonne État. La colonne État de votre site Web indique que l'indexation est en la progression.
    6. Répétez la procédure de validation du domaine pour chaque site Web qui nécessite la validation du domaine jusqu'à ce que tous commencent l'indexation. Lorsque la colonne État d'une URL indique Indexée, les fonctionnalités d'indexation avancée des sites Web sont disponibles pour cette URL ou ce format d'URL.
  14. Pour augmenter votre quota, procédez comme suit :

    1. Cliquez sur Mettre à niveau le quota. Le volet API Discovery Engine s'affiche, avec l'onglet Quotas sélectionné.
    2. Suivez les instructions de la section Demander une limite de quota plus élevée de la documentation Google Cloud. Le quota à augmenter est Nombre de documents.
    3. Après avoir envoyé votre demande de quota supérieur, revenez à la page Agent Builder, puis cliquez sur Data Stores (Data stores) dans le menu de navigation.
    4. Cliquez sur le nom de votre data store dans la colonne Nom. Status (État) indique que l'indexation des sites Web ayant dépassé le quota est en cours. Lorsque la colonne État d'une URL indique Indexée, les fonctionnalités d'indexation avancée des sites Web sont disponibles pour cette URL ou ce format d'URL.

Étapes suivantes

BigQuery

Pour ingérer des données à partir de BigQuery, procédez comme suit pour créer un entrepôt de données et ingérer des données à l'aide de la console Google Cloud ou de l'API.

Avant d'importer vos données, vérifiez Préparez les données pour l'ingestion.

Console

Pour utiliser la console Google Cloud afin d'ingérer des données à partir de BigQuery, procédez comme suit : procédez comme suit:

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

    Agent Builder

  2. Accédez à la page Datastores.

  3. Cliquez sur Nouveau data store.

  4. Sur la page Type, sélectionnez BigQuery.

  5. Dans le champ Chemin d'accès BigQuery, cliquez sur Parcourir, sélectionnez une table que vous vous avez préparé l'ingestion, puis cliquez sur Sélectionner. Vous pouvez également saisir l'emplacement de la table directement dans le champ Chemin d'accès BigQuery.

  6. Sélectionnez le type de données que vous importez.

  7. Cliquez sur Continuer.

  8. Si vous effectuez une importation ponctuelle de données structurées :

    1. Mappez les champs sur les propriétés clés.

    2. Si des champs importants sont manquants dans le schéma, utilisez Ajouter un champ pour les ajouter.

      Pour plus d'informations, consultez la section À propos de la détection automatique modifier.

    3. Cliquez sur Continuer.

  9. Choisissez une région pour votre data store.

  10. Attribuez un nom à votre datastore.

  11. Cliquez sur Créer.

  12. Pour vérifier que votre data store a bien été créé, accédez à la page Datastores (Datastores), puis cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (Données).

  13. Pour vérifier l'état de votre ingestion, accédez à la page Data stores , puis cliquez sur le nom de votre data store pour en afficher les détails sur la page Données. Lorsque la colonne d'état de l'onglet Activité passe de En cours à Importation terminée, l'ingestion est terminée.

    Selon la taille de vos données, l'ingestion peut prendre plusieurs minutes ou plusieurs heures.

REST

Pour créer un entrepôt de données et importer des données depuis BigQuery à l'aide de la ligne de commande, procédez comme suit :

  1. Créer un data store

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"]
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID : ID du magasin de données de recommandations que vous souhaitez créer. Cet ID ne peut contenir que des minuscules lettres, chiffres, traits de soulignement et traits d'union.
    • DATA_STORE_DISPLAY_NAME: nom à afficher pour le data store de recommandations que vous souhaitez créer.
  2. Facultatif : Si vous importez des données structurées avec votre propre schéma, vous pouvez le fournir. Lorsque vous fournissez le schéma, vous obtenez généralement de meilleurs résultats. Dans le cas contraire, le schéma est détecté automatiquement. Pour plus pour en savoir plus, consultez Fournissez ou détectez automatiquement un schéma.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store de recommandations.
    • JSON_SCHEMA_OBJECT: votre schéma JSON en tant qu'objet JSON, par exemple Exemple:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
      
  3. Importer des données depuis BigQuery

    Si vous avez défini un schéma, assurez-vous que les données y sont conformes.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/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",
      },
      "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 datastore de recommandations.
    • DATASET_ID : ID de l'ensemble de données BigQuery.
    • TABLE_ID : ID de la table BigQuery.
      • Si la table BigQuery n'est pas sous PROJECT_ID, vous devez attribuer au compte de service service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com "Lecteur de données BigQuery" l'autorisation table BigQuery. Par exemple, si vous importez une table BigQuery du projet source "123" vers le projet de destination "456", accordez des autorisations service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com pour la table BigQuery dans le projet "123".
    • DATA_SCHEMA : facultatif. Les valeurs sont document et custom. La valeur par défaut est document.
      • document: table BigQuery que vous utilisez doivent être conformes à la configuration du schéma fourni dans Préparer les données pour l'ingestion Vous pouvez définir vous-même l'ID de chaque document, tout en encapsulant toutes les données dans la chaîne jsonData.
      • custom: n'importe quelle table BigQuery schéma est accepté, et l'outil Recommandations génère les ID de chaque document importé.
    • ERROR_DIRECTORY : facultatif. Un répertoire Cloud Storage contenant des informations sur les erreurs d'importation (par exemple, gs://<your-gcs-bucket>/directory/import_errors). Ce que Google recommande laissez ce champ vide pour laisser les recommandations crée automatiquement un répertoire temporaire.
    • RECONCILIATION_MODE : facultatif. Les valeurs sont FULL et INCREMENTAL. La valeur par défaut est INCREMENTAL. Spécifier INCREMENTAL entraîne une actualisation incrémentielle des données à partir de BigQuery à votre data store. Il s'agit d'une opération upsert, qui ajoute de documents existants et remplace les documents existants par des documents mis à jour avec le même identifiant. Si vous spécifiez FULL, la classe dans votre data store. En d'autres termes, les documents nouveaux et mis à jour sont ajoutés à votre entrepôt de données, 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 : facultatif. Indique si les ID de document doivent être générés automatiquement. Si défini sur true, ID des documents sont générés à partir d'un hachage de la charge utile. Notez que la génération Les ID de document peuvent ne pas rester cohérents sur plusieurs importations. Si vous générez automatiquement des ID pour plusieurs importations, Google recommande de définir reconciliationMode sur FULL pour maintenir des ID de document cohérents.

      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, les documents l'importation.

    • ID_FIELD : facultatif. Spécifie les champs ID de document. Pour les fichiers sources BigQuery, idField indique le nom de la colonne dans la table BigQuery contenant les ID des documents.

      Spécifiez idField uniquement lorsque: (1) bigquerySource.dataSchema est défini sur custom, et (2) auto_generate_ids est défini sur false ou est non spécifié. Sinon, une erreur INVALID_ARGUMENT est renvoyée.

      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.

C#

Pour en savoir plus, consultez la documentation de référence de l'API C# 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.

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Pour en savoir plus, consultez la documentation de référence de l'API Go 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.

Cet exemple ingère des données non structurées provenant de BigQuery ou de Cloud Storage dans un entrepôt de données existant.


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.ImportDocumentsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#ImportDocumentsRequest.
	}
	op, err := c.ImportDocuments(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Pour en savoir plus, consultez les API Java de Vertex AI Agent Builder documentation de référence.

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.

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

  public static void main(String[] args) throws Exception {
    syncImportDocuments();
  }

  public static void syncImportDocuments() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Pour en savoir plus, consultez les API Node.js de Vertex AI Agent Builder documentation de référence.

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

Cet exemple ingère des données non structurées provenant de BigQuery ou de Cloud Storage dans un entrepôt de données existant.

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'

// Imports the Discoveryengine library
const {DocumentServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DocumentServiceClient();

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Pour en savoir plus, consultez les API Python de Vertex AI Agent Builder documentation de référence.

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.

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.



def import_documents_bigquery_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    bigquery_dataset: str,
    bigquery_table: str,
) -> str:

    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)

    return operation.operation.name


def import_documents_gcs_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    gcs_uri: str,
) -> str:
    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)

    return operation.operation.name

Ruby

Pour en savoir plus, consultez les API Ruby de Vertex AI Agent Builder documentation de référence.

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.

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::ImportDocumentsRequest.new

  # Call the import_documents method.
  result = client.import_documents request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Étapes suivantes

Cloud Storage

Pour ingérer des données à partir de Cloud Storage, procédez comme suit pour créer un entrepôt de données et ingérer des données à l'aide de la console Google Cloud ou de l'API.

Avant d'importer vos données, consultez la section Préparer les données pour l'ingestion.

Console

Pour utiliser la console pour ingérer des données à partir d'un bucket Cloud Storage, procédez comme suit :

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

    Agent Builder

  2. Accédez à la page Data stores.

  3. Cliquez sur Nouveau data store.

  4. Sur la page Type, sélectionnez Cloud Storage.

  5. Dans la section Sélectionner un dossier ou un fichier à importer, sélectionnez Dossier ou Fichier.

  6. Cliquez sur Parcourir, puis sélectionnez les données que vous avez préparées pour l'ingestion, puis cliquez sur Sélectionner. Vous pouvez également saisir l'emplacement directement dans le champ gs://.

  7. Sélectionnez le type de données que vous importez.

  8. Cliquez sur Continuer.

  9. Si vous effectuez une importation ponctuelle de données structurées :

    1. Mappez les champs sur les propriétés clés.

    2. S'il manque des champs importants dans le schéma, utilisez l'option Ajouter pour les ajouter.

      Pour plus d'informations, consultez la section À propos de la détection automatique modifier.

    3. Cliquez sur Continuer.

  10. Choisissez une région pour votre data store.

  11. Attribuez un nom à votre datastore.

  12. Cliquez sur Créer.

  13. Pour vérifier que votre data store a bien été créé, accédez à la page Datastores (Datastores), puis cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (Données).

  14. Pour vérifier l'état de votre ingestion, accédez à la page Data stores , puis cliquez sur le nom de votre data store pour en afficher les détails sur la page Données. Lorsque la colonne d'état de l'onglet Activité passe de En cours à Importation terminée, l'ingestion est terminée.

    Selon la taille de vos données, l'ingestion peut prendre plusieurs minutes ou plusieurs heures.

REST

Pour créer un datastore et ingérer des données à partir de Cloud Storage à l'aide de la ligne de commande, procédez comme suit :

  1. Créez un data store.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"],
      "contentConfig": "CONTENT_REQUIRED"
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID : ID du magasin de données de recommandations que vous souhaitez créer. Cet ID ne peut contenir que des minuscules lettres, chiffres, traits de soulignement et traits d'union.
    • DATA_STORE_DISPLAY_NAME : nom à afficher du magasin de données de recommandations que vous souhaitez créer.
  2. Importez des données depuis Cloud Storage.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "gcsSource": {
          "inputUris": ["INPUT_FILE_PATTERN_1", "INPUT_FILE_PATTERN_2"],
          "dataSchema": "DATA_SCHEMA",
        },
        "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 datastore de recommandations.
    • INPUT_FILE_PATTERN: format de fichier dans Cloud Storage contenant vos documents.

      Pour les données structurées ou pour les données non structurées avec des métadonnées pour documents non structurés, un exemple de modèle de fichier d'entrée est gs://<your-gcs-bucket>/directory/object.json ou un schéma correspondant à un ou plusieurs fichiers, gs://<your-gcs-bucket>/directory/*.json

      Pour les documents non structurés, gs://<your-gcs-bucket>/directory/*.pdf est un exemple. Chaque fichier auquel une correspondance est trouvée par le modèle devient un document.

      Si <your-gcs-bucket> ne se trouve pas sous PROJECT_ID, vous devez accorder au compte de service service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com les autorisations "Lecteur des objets de l'espace de stockage" pour le bucket Cloud Storage. Pour par exemple, si vous importez un bucket Cloud Storage depuis Projet source "123" au projet de destination "456", attribuez service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com sur le bucket Cloud Storage du projet "123".

    • DATA_SCHEMA : facultatif. Les valeurs sont document, custom, csv et content. La valeur par défaut est document.

      • document : importez des données non structurées avec des métadonnées pour les documents non structurés. Chaque ligne du fichier doit suivre une des formats suivants. Vous pouvez définir l'ID de chaque document :

        • { "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
        • { "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
      • custom: importez des fichiers JSON pour les documents structurés. Les données sont organisées selon un schéma. Vous pouvez spécifier le schéma. sinon elle est détectée automatiquement. Vous pouvez mettre la chaîne JSON du document dans un format cohérent directement dans chaque ligne, et les recommandations génèrent automatiquement les ID pour chaque document importé.

      • content: importez des documents non structurés (PDF, HTML, DOC, TXT, PPTX). L'ID de chaque document est généré automatiquement en tant que les 128 premiers bits de l'encodage SHA256(GCS_URI) sous forme de chaîne hexadécimale. Vous pouvez spécifier plusieurs formats de fichiers d'entrée, à condition que les fichiers correspondants ne dépassent pas la limite de 100 000 fichiers.

      • csv : incluez une ligne d'en-tête dans votre fichier CSV, avec chaque en-tête mappé à un champ de document. Spécifiez le chemin d'accès au fichier CSV à l'aide du champ inputUris.

    • ERROR_DIRECTORY : facultatif. Un répertoire Cloud Storage pour obtenir 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 à Recommendations de créer automatiquement un répertoire temporaire.

    • RECONCILIATION_MODE : facultatif. Les valeurs sont FULL et INCREMENTAL. La valeur par défaut est INCREMENTAL. Spécifier INCREMENTAL entraîne une actualisation incrémentielle des données de Cloud Storage vers votre magasin de données. Cela effectue une opération upsert, qui ajoute de nouveaux documents et remplace les documents existants par des documents mis à jour ID. Spécifier FULL entraîne une rebase complète des documents de votre datastore. En d'autres termes, les documents nouveaux et mis à jour sont ajoutés votre data store et les documents qui ne sont pas dans Cloud Storage supprimés de votre data store. Le mode FULL est utile si vous le souhaitez pour supprimer automatiquement les documents dont vous n'avez plus besoin.

    • AUTO_GENERATE_IDS : facultatif. Indique si les ID de document doivent être générés automatiquement. Si défini sur true, ID des documents sont générés à partir d'un hachage de la charge utile. Notez que la génération Les ID de document peuvent ne pas rester cohérents sur 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.

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

    • ID_FIELD : facultatif. Spécifie les champs ID de document. Pour les documents sources Cloud Storage, idField spécifie le nom dans les champs JSON qui sont des ID de document. Par exemple, si {"my_id":"some_uuid"} est le champ d'ID de document dans l'un de vos documents, spécifiez "idField":"my_id". Cela permet d'identifier Champs JSON dont le nom est "my_id" en tant qu'ID de document.

      Spécifiez ce champ uniquement si: (1) gcsSource.dataSchema est défini sur custom ou csv, et (2) auto_generate_ids est défini sur false ou ; n'est pas spécifiée. Sinon, une erreur INVALID_ARGUMENT est renvoyée.

      Notez que la valeur du champ JSON Cloud Storage doit être de chaîne de caractères, doit comporter de 1 à 63 caractères et doit être conforme au RFC-1034. Dans le cas contraire, lors de l'importation des documents.

      Notez que le nom du champ JSON spécifié par id_field doit être le suivant : doit comporter entre 1 et 63 caractères, et doit être conforme à la norme RFC-1034. Sinon, l'importation des documents échoue.

C#

Pour en savoir plus, consultez les API C# de Vertex AI Agent Builder documentation de référence.

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

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Pour en savoir plus, consultez la documentation de référence de l'API Go 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.

Cet exemple ingère des données non structurées provenant de BigQuery ou de Cloud Storage dans un entrepôt de données existant.


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.ImportDocumentsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#ImportDocumentsRequest.
	}
	op, err := c.ImportDocuments(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Java 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.

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

  public static void main(String[] args) throws Exception {
    syncImportDocuments();
  }

  public static void syncImportDocuments() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Pour en savoir plus, consultez les API Node.js de Vertex AI Agent Builder documentation de référence.

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.

Cet exemple ingère des données non structurées provenant de BigQuery ou de Cloud Storage dans un entrepôt de données existant.

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'

// Imports the Discoveryengine library
const {DocumentServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DocumentServiceClient();

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Pour en savoir plus, consultez la documentation de référence de l'API Python 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.

Cet exemple ingère des données non structurées provenant de BigQuery ou de Cloud Storage dans un entrepôt de données existant.



def import_documents_bigquery_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    bigquery_dataset: str,
    bigquery_table: str,
) -> str:

    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)

    return operation.operation.name


def import_documents_gcs_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    gcs_uri: str,
) -> str:
    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)

    return operation.operation.name

Ruby

Pour en savoir plus, consultez les API Ruby de Vertex AI Agent Builder documentation de référence.

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.

Cet exemple ingère des données non structurées à partir de BigQuery ou Cloud Storage dans un data store existant.

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::ImportDocumentsRequest.new

  # Call the import_documents method.
  result = client.import_documents request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Étapes suivantes

Importer des données JSON structurées avec l'API

Pour importer directement un document ou un objet JSON à l'aide de l'API, procédez comme suit.

Avant d'importer vos données, Préparez les données pour l'ingestion.

REST

Pour créer un data store et importer des données JSON structurées à l'aide de la ligne de commande, procédez comme suit : procédez comme suit:

  1. Créez un data store.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"]
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID : ID du magasin de données de recommandations que vous souhaitez créer. Cet ID ne peut contenir que des minuscules lettres, chiffres, traits de soulignement et traits d'union.
    • DATA_STORE_DISPLAY_NAME: nom à afficher pour le data store de recommandations que vous souhaitez créer.
  2. Facultatif: Fournissez votre propre schéma. Lorsque vous fournissez un schéma, vous obtenez généralement de meilleurs résultats. Pour en savoir plus, consultez Fournissez ou détectez automatiquement un schéma.

    curl -X PATCH \
    -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/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store de recommandations.
    • JSON_SCHEMA_OBJECT: votre schéma JSON en tant qu'objet JSON, par exemple Exemple:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
      
  3. Importez des données structurées conformes au schéma défini.

    Il existe plusieurs méthodes pour importer des données:

    • Importez un document JSON.

      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?documentId=DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      

      Remplacez JSON_DOCUMENT_STRING par le document JSON sous forme de chaîne unique. Il doit être conforme au schéma JSON que vous fournies à l'étape précédente, par exemple:

      ```none
      { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
      ```
      
    • Importez un objet JSON.

      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?documentId=DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

      Remplacez JSON_DOCUMENT_OBJECT par le document JSON en tant que JSON. Il doit respecter le schéma JSON que vous avez fourni à l'étape précédente, par exemple :

      ```json
      {
        "title": "test title",
        "categories": [
          "cat_1",
          "cat_2"
        ],
        "uri": "test uri"
      }
      ```
      
    • Mettez à jour avec un document JSON.

      curl -X PATCH \
      -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/DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      
    • Effectuez la mise à jour avec un objet JSON.

      curl -X PATCH \
      -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/DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

Étapes suivantes

Créer un magasin de données à l'aide de Terraform

Vous pouvez utiliser Terraform pour créer un data store vide. Après le data store vide vous pouvez ingérer des données dans le data store à l'aide de la console Google Cloud ou des commandes d'API.

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Pour créer un magasin de données vide à l'aide de Terraform, consultez google_discovery_engine_data_store.