Créer un data store de recherche

Pour créer un data store et ingérer des données à des fins de recherche, accédez à la section de la source que vous prévoyez d'utiliser:

Pour synchroniser les données à partir d'une source de données tierce, consultez Connecter une source de données tierce.

Limites

Si vous disposez de règles d'administration CMEK, vous devez créer des magasins de données à l'aide de l'API, et non de la console Google Cloud. La création de magasins de données à l'aide de la console Google Cloud échoue si les règles d'administration CMEK sont activées. Pour en savoir plus sur la prise en charge des CMEK pour la recherche Vertex AI, consultez la section Clés de chiffrement gérées par le client.

Créer un data store à l'aide du contenu d'un site Web

Suivez la procédure ci-dessous pour créer un data store et indexer des sites Web.

Pour utiliser un data store de site Web après l'avoir créé, vous devez l'associer à une application pour laquelle les fonctionnalités Enterprise sont activées. Vous pouvez activer l'édition Enterprise pour une application lorsque vous la créez. Cela entraîne des coûts supplémentaires. Consultez les pages Créer une application de recherche et À propos des fonctionnalités avancées.

Console

Pour créer un data store et indexer des sites Web à l'aide de la console Google Cloud, 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. Cliquez sur Créer un datastore.

  4. Sur la page Source, sélectionnez Contenu de site Web.

  5. Indiquez si vous souhaitez activer l'indexation avancée de sites Web pour ce data store. Vous ne pourrez plus activer ou 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 sites Web entraîne des coûts supplémentaires et vous devez valider la propriété du domaine de chaque site Web que vous indexez. Pour en savoir plus, consultez les pages Indexation avancée de sites Web et Tarifs.

  6. Dans le champ Sites à inclure, saisissez les formats d'URL correspondant aux sites Web que vous souhaitez inclure dans votre data store. Incluez un format d'URL par ligne, sans les séparer par une virgule. Par exemple, www.example.com/docs/*.

  7. Facultatif: Dans le champ Sites à exclure, saisissez les modèles d'URL que vous souhaitez exclure de votre data store.

    Pour connaître le nombre de formats d'URL que vous pouvez inclure ou exclure, consultez Données sur le site Web.

  8. Cliquez sur Continuer.

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

  10. Attribuez un nom à votre datastore.

  11. Cliquez sur Créer. Vertex AI Search crée votre data store et l'affiche sur la page Datastores (Datastores).

  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 de sites Web, un avertissement s'affiche pour vous inviter à valider les domaines de votre data store.
    • Si vous ne disposez pas de suffisamment de quota (le nombre de pages des sites Web que vous avez spécifiés dépasse le quota "Nombre de documents par projet" de votre projet), un avertissement supplémentaire s'affiche pour vous inviter à augmenter votre quota.
  13. Pour valider les domaines des modèles d'URL dans votre data store, suivez les instructions de la page Valider les domaines des sites Web.

  14. Pour augmenter votre quota, procédez comme suit:

    1. Cliquez sur Mettre à niveau le quota. La page IAM et administration de la console Google Cloud s'affiche.
    2. Suivez les instructions de la section Demander une limite de quota supérieure de la documentation Google Cloud. Le quota à augmenter est Nombre de documents dans le service de l'API Discovery Engine.
    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. La colonne État indique que l'indexation est en cours pour les sites Web ayant dépassé le quota. 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.

    Pour en savoir plus, consultez la section Quota d'indexation des pages Web sur la page "Quotas et limites".

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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des sites Web

from google.api_core.client_options import ClientOptions

from google.cloud import discoveryengine_v1 as 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"
# NOTE: Do not include http or https protocol in the URI pattern
# uri_pattern = "cloud.google.com/generative-ai-app-builder/docs/*"

#  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.SiteSearchEngineServiceClient(
    client_options=client_options
)

# The full resource name of the data store
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}
site_search_engine = client.site_search_engine_path(
    project=project_id, location=location, data_store=data_store_id
)

# Target Site to index
target_site = discoveryengine.TargetSite(
    provided_uri_pattern=uri_pattern,
    # Options: INCLUDE, EXCLUDE
    type_=discoveryengine.TargetSite.Type.INCLUDE,
    exact_match=False,
)

# Make the request
operation = client.create_target_site(
    parent=site_search_engine,
    target_site=target_site,
)

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.CreateTargetSiteMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Étapes suivantes

  • Pour associer le data store de votre site Web à une application, créez une application avec les fonctionnalités Enterprise activées, puis sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer des données depuis BigQuery

Vous pouvez créer des datastores à partir de tables BigQuery de deux manières:

  • Ingestion unique: vous importez des données d'une table BigQuery dans un data store. Les données du data store ne changent pas, sauf si vous actualisez manuellement les données.

  • Ingestion périodique: vous importez des données à partir d'une ou de plusieurs tables BigQuery, puis vous définissez une fréquence de synchronisation qui détermine la fréquence à laquelle les magasins de données sont mis à jour avec les données les plus récentes de l'ensemble de données BigQuery.

Le tableau suivant compare les deux méthodes d'importation de données BigQuery dans des datastores Vertex AI Search.

Ingestion unique Ingestion périodique
Disponibilité générale (DG). Version Preview publique.
Les données doivent être actualisées manuellement. Les données sont mises à jour automatiquement tous les 1, 3 ou 5 jours. Les données ne peuvent pas être actualisées manuellement.
Vertex AI Search crée un seul data store à partir d'une seule table dans BigQuery. Vertex AI Search crée un connecteur de données pour un ensemble de données BigQuery et un data store (appelé data store entité) pour chaque table spécifiée. Pour chaque connecteur de données, les tables doivent avoir le même type de données (par exemple, structurées) et se trouver dans le même ensemble de données BigQuery.
Vous pouvez combiner les données de plusieurs tables dans un même data store en insérant d'abord les données d'une table, puis d'autres données provenant d'une autre source ou d'une autre table BigQuery. Étant donné que l'importation manuelle de données n'est pas prise en charge, les données d'un data store d'entités ne peuvent provenir que d'une seule table BigQuery.
Le contrôle des accès aux sources de données est pris en charge. Le contrôle des accès aux sources de données n'est pas accepté. Les données importées peuvent contenir des contrôles d'accès, mais ces contrôles ne seront pas respectés.
Vous pouvez créer un data store à l'aide de la console Google Cloud ou de l'API. Vous devez utiliser la console pour créer des connecteurs de données et leurs entrepôts de données d'entités.
Compatible avec CMEK. Non compatible avec les CMEK.

Importer une fois depuis BigQuery

Pour ingérer des données à partir d'une table BigQuery, procédez comme suit pour créer un data store 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 Google Cloud pour ingérer des données à partir de BigQuery, 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 Source, sélectionnez BigQuery.

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

  6. Cliquez sur Une seule fois.

  7. Dans le champ Chemin d'accès BigQuery, cliquez sur Parcourir, sélectionnez une table que vous avez préparée pour 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.

  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. Si des champs importants sont manquants dans le schéma, utilisez Ajouter un champ pour les ajouter.

      Pour en savoir plus, consultez la section À propos de la détection et de la modification automatiques.

    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 l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (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 de quelques minutes à plusieurs heures.

REST

Pour créer un data store et importer des données depuis BigQuery à 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/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store Vertex AI Search que vous souhaitez créer. Cet identifiant ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DATA_STORE_DISPLAY_NAME: nom à afficher du data store Vertex AI Search que vous souhaitez créer.

    Facultatif: Si vous importez des données non structurées et que vous souhaitez configurer l'analyse des documents ou activer le fractionnement des documents pour RAG, spécifiez l'objet documentProcessingConfig et incluez-le dans votre requête de création de data store. Nous vous recommandons de configurer un analyseur OCR pour les PDF si vous ingérez des PDF numérisés. Pour savoir comment configurer les options d'analyse ou de segmentation, consultez la section Analyser et segmenter des documents.

  2. 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",
        "aclEnabled": "BOOLEAN"
      },
      "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: ID de l'ensemble de données BigQuery.
    • TABLE_ID: ID de la table BigQuery.
      • Si la table BigQuery ne se trouve pas sous PROJECT_ID, vous devez accorder au compte de service service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com l'autorisation "Lecteur de données BigQuery" pour la table BigQuery. Par exemple, si vous importez une table BigQuery du projet source "123" vers le projet de destination "456", attribuez des autorisations service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com à la table BigQuery sous le projet "123".
    • DATA_SCHEMA : facultatif. Les valeurs sont document et custom. La valeur par défaut est document.
      • document: la table BigQuery que vous utilisez doit respecter le schéma BigQuery par défaut fourni dans la section Préparer les données à 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: tout schéma de table BigQuery est accepté, et Vertex AI Search génère automatiquement 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). Google recommande de laisser ce champ vide pour permettre à Vertex AI Search 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 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, les documents nouveaux et mis à jour sont ajoutés à votre data store, et les documents qui ne figurent pas dans BigQuery sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS : facultatif. Indique 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 : facultatif. Spécifie 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: (1) bigquerySource.dataSchema est défini sur custom et (2) auto_generate_ids est défini sur false ou n'est pas 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# 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.

Créer un data store

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

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</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 CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore 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<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Importer des documents

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 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.

Créer un data store


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.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

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

Importer des documents


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 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.

Créer un data store

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

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

  public static void syncCreateDataStore() 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 (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Importer des documents

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 la documentation de référence de l'API Node.js 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.

Créer un data store

/**
 * 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.
 */
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

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

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

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

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

callCreateDataStore();

Importer des documents

/**
 * 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 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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents


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)

Ruby

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

Créer un data store

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService 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::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

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

  # Call the create_data_store method.
  result = client.create_data_store 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

Importer des documents

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

Se connecter à BigQuery avec une synchronisation périodique

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

La procédure suivante décrit comment créer un connecteur de données qui associe un ensemble de données BigQuery à un connecteur de données Vertex AI Search, et comment spécifier une table sur l'ensemble de données pour chaque data store que vous souhaitez créer. Les data stores enfants de connecteurs de données sont appelés data stores d'entité.

Les données du jeu de données sont synchronisées régulièrement avec les entrepôts de données d'entité. Vous pouvez spécifier une synchronisation quotidienne, toutes les trois jours ou toutes les cinq jours.

Console

Pour créer un connecteur qui synchronise régulièrement les données d'un ensemble de données BigQuery avec Vertex AI Search à l'aide de la console Google Cloud, 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. Cliquez sur Créer un datastore.

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

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

  6. Cliquez sur Périodique.

  7. Sélectionnez la fréquence de synchronisation, c'est-à-dire la fréquence à laquelle vous souhaitez que le connecteur Vertex AI Search se synchronise avec l'ensemble de données BigQuery. Vous pourrez modifier la fréquence ultérieurement.

  8. Dans le champ Chemin de l'ensemble de données BigQuery, cliquez sur Parcourir, puis sélectionnez l'ensemble de données contenant les tables que vous avez préparées à l'ingestion. Vous pouvez également saisir l'emplacement de la table directement dans le champ Chemin d'accès BigQuery. Le format du chemin d'accès est projectname.datasetname.

  9. Dans le champ Tables à synchroniser, cliquez sur Parcourir, puis sélectionnez une table contenant les données souhaitées pour votre data store.

  10. Si l'ensemble de données contient d'autres tables que vous souhaitez utiliser pour les magasins de données, cliquez sur Ajouter un tableau et spécifiez-les également.

  11. Cliquez sur Continuer.

  12. Choisissez une région pour votre data store, saisissez un nom pour votre connecteur de données, puis cliquez sur Créer.

    Vous avez maintenant créé un connecteur de données, qui synchronisera régulièrement les données avec l'ensemble de données BigQuery. Vous avez également créé un ou plusieurs datastores de données d'entités. Les magasins de données portent les mêmes noms que les tables BigQuery.

  13. Pour vérifier l'état de votre ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre connecteur de données pour afficher des informations à son sujet sur la page Data (Données) > onglet Data ingestion activity (Activité d'ingestion de données). Lorsque la colonne d'état de l'onglet Activité passe de En cours à Réussie, la première ingestion est terminée.

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

Une fois que vous avez configuré votre source de données et importé des données pour la première fois, le data store synchronise les données de cette source à une fréquence que vous sélectionnez lors de la configuration. La première synchronisation a lieu environ une heure après la création du connecteur de données. La prochaine synchronisation a ensuite lieu environ 24, 72 ou 120 heures plus tard.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer depuis Cloud Storage

Vous pouvez créer des entrepôts de données à partir de tables Cloud Storage de deux manières:

  • Ingestion unique: vous importez des données à partir d'un dossier ou d'un fichier Cloud Storage dans un data store. Les données du data store ne changent que si vous actualisez manuellement les données.

  • Ingestion périodique: vous importez des données à partir d'un dossier ou d'un fichier Cloud Storage, puis vous définissez une fréquence de synchronisation qui détermine la fréquence à laquelle le magasin de données est mis à jour avec les données les plus récentes de cet emplacement Cloud Storage.

Le tableau suivant compare les deux méthodes d'importation de données Cloud Storage dans les data stores Vertex AI Search.

Ingestion unique Ingestion périodique
Disponibilité générale (DG). Version Preview publique.
Les données doivent être actualisées manuellement. Les données sont mises à jour automatiquement tous les un, trois ou cinq jours. Les données ne peuvent pas être actualisées manuellement.
Vertex AI Search crée un seul data store à partir d'un seul dossier ou fichier dans Cloud Storage. Vertex AI Search crée un connecteur de données et lui associe un data store (appelé data store entité) pour le fichier ou le dossier spécifié. Chaque connecteur de données Cloud Storage peut avoir un seul data store d'entité.
Vous pouvez combiner les données de plusieurs fichiers, dossiers et buckets dans un même data store en ingurgitant d'abord les données d'un emplacement Cloud Storage, puis d'un autre. Étant donné que l'importation manuelle de données n'est pas prise en charge, les données d'un data store d'entité ne peuvent provenir que d'un seul fichier ou dossier Cloud Storage.
Le contrôle des accès aux sources de données est pris en charge. Pour en savoir plus, consultez la section Contrôle des accès aux sources de données. Le contrôle des accès aux sources de données n'est pas accepté. Les données importées peuvent contenir des contrôles d'accès, mais ces contrôles ne seront pas respectés.
Vous pouvez créer un data store à l'aide de la console Google Cloud ou de l'API. Vous devez utiliser la console pour créer des connecteurs de données et leurs entrepôts de données d'entités.
Compatible avec les CMEK Non compatible avec les CMEK.

Importer une seule fois depuis Cloud Storage

Pour ingérer des données à partir de Cloud Storage, procédez comme suit pour créer un data store 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 Datastores.

  3. Cliquez sur Nouveau data store.

  4. Sur la page Source, 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. Si des champs importants sont manquants dans le schéma, utilisez Ajouter un champ pour les ajouter.

      Pour en savoir plus, consultez la section À propos de la détection et de la modification automatiques.

    3. Cliquez sur Continuer.

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

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

  12. Attribuez un nom à votre datastore.

  13. Facultatif: Si vous avez sélectionné des documents non structurés, vous pouvez sélectionner des options d'analyse et de segmentation pour vos documents. Pour comparer les analyseurs, consultez la section Analyser les documents. Pour en savoir plus sur le découpage, consultez Découper des documents pour RAG.

    L'analyseur OCR et l'analyseur de mise en page peuvent entraîner des coûts supplémentaires. Consultez les tarifs des fonctionnalités Document AI.

    Pour sélectionner un analyseur, développez Options de traitement des documents, puis spécifiez les options d'analyseur que vous souhaitez utiliser.

  14. Cliquez sur Créer.

  15. Pour vérifier l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (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 de quelques minutes à plusieurs heures.

REST

Pour créer un data store 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/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store Vertex AI Search que vous souhaitez créer. Cet identifiant ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DATA_STORE_DISPLAY_NAME: nom à afficher du data store Vertex AI Search que vous souhaitez créer.

    Facultatif: Pour configurer l'analyse des documents ou activer le fractionnement des documents pour RAG, spécifiez l'objet documentProcessingConfig et incluez-le dans votre requête de création de data store. Nous vous recommandons de configurer un analyseur OCR pour les PDF si vous ingérez des PDF numérisés. Pour savoir comment configurer les options d'analyse ou de segmentation, consultez la section Analyser et segmenter des documents.

  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 data store Vertex AI Search.
    • INPUT_FILE_PATTERN: modèle de fichier dans Cloud Storage contenant vos documents.

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

      Pour les documents non structurés, gs://<your-gcs-bucket>/directory/*.pdf est un exemple. Chaque fichier correspondant au 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. Par exemple, si vous importez un bucket Cloud Storage du projet source "123" vers le projet de destination "456", accordez des autorisations service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com au bucket Cloud Storage dans le 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 respecter l'un 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 un fichier JSON pour les documents structurés. Les données sont organisées selon un schéma. Vous pouvez spécifier le schéma. Sinon, il est détecté automatiquement. Vous pouvez mettre la chaîne JSON du document dans un format cohérent directement dans chaque ligne, et Vertex AI Search génère 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 premiers 128 bits de SHA256(GCS_URI) encodés en tant que 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 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 Search 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 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, des documents nouveaux et mis à jour sont ajoutés à votre data store, et les documents qui ne figurent pas dans Cloud Storage sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.

    • AUTO_GENERATE_IDS : facultatif. Indique 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.

      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 le définissez sur false, vous devez spécifier idField. Sinon, l'importation des documents échoue.

    • ID_FIELD : facultatif. Spécifie les champs correspondant aux 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". Tous les champs JSON portant le nom "my_id" sont identifiés comme des ID de document.

      Ne spécifiez ce champ que lorsque: (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é. Sinon, une erreur INVALID_ARGUMENT est renvoyée.

      Notez que la valeur du champ JSON Cloud Storage 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.

      Notez que le nom de champ JSON spécifié par id_field 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# 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.

Créer un data store

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

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</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 CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore 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<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Importer des documents

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 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.

Créer un data store


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.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

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

Importer des documents


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 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.

Créer un data store

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

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

  public static void syncCreateDataStore() 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 (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Importer des documents

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 la documentation de référence de l'API Node.js 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.

Créer un data store

/**
 * 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.
 */
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

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

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

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

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

callCreateDataStore();

Importer des documents

/**
 * 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 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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

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)

Ruby

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

Créer un data store

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService 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::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

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

  # Call the create_data_store method.
  result = client.create_data_store 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

Importer des documents

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

Se connecter à Cloud Storage avec une synchronisation périodique

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

La procédure suivante décrit comment créer un connecteur de données qui associe un emplacement Cloud Storage à un connecteur de données Vertex AI Search, et comment spécifier un dossier ou un fichier à cet emplacement pour le data store que vous souhaitez créer. Les data stores qui sont enfants de connecteurs de données sont appelés magasins de données d'entité.

Les données sont synchronisées régulièrement avec le data store d'entité. Vous pouvez spécifier une synchronisation quotidienne, toutes les trois jours ou toutes les cinq jours.

Console

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

    Agent Builder

  2. Accédez à la page Datastores.

  3. Cliquez sur Créer un datastore.

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

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

  6. Cliquez sur Périodique.

  7. Sélectionnez la fréquence de synchronisation, c'est-à-dire la fréquence à laquelle vous souhaitez que le connecteur de recherche Vertex AI se synchronise avec l'emplacement Cloud Storage. Vous pourrez modifier la fréquence ultérieurement.

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

  9. 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://.

  10. Cliquez sur Continuer.

  11. Choisissez une région pour votre connecteur de données.

  12. Attribuez un nom à votre connecteur de données.

  13. Facultatif: Si vous avez sélectionné des documents non structurés, vous pouvez sélectionner des options d'analyse et de segmentation pour vos documents. Pour comparer les analyseurs, consultez la section Analyser les documents. Pour en savoir plus sur le découpage, consultez Découper des documents pour RAG.

    L'analyseur OCR et l'analyseur de mise en page peuvent entraîner des coûts supplémentaires. Consultez les tarifs des fonctionnalités Document AI.

    Pour sélectionner un analyseur, développez Options de traitement des documents, puis spécifiez les options d'analyseur que vous souhaitez utiliser.

  14. Cliquez sur Créer.

    Vous avez maintenant créé un connecteur de données, qui synchronisera régulièrement les données avec l'emplacement Cloud Storage. Vous avez également créé un data store d'entité nommé gcs_store.

  15. Pour vérifier l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre connecteur de données pour en afficher les détails sur la page Data (Données).

    Onglet Activité d'ingestion de données. Lorsque la colonne d'état de l'onglet Activité d'ingestion de données passe de En cours à Réussie, la première ingestion est terminée.

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

Une fois que vous avez configuré votre source de données et importé des données pour la première fois, les données sont synchronisées à partir de cette source à une fréquence que vous sélectionnez lors de la configuration. La première synchronisation a lieu environ une heure après la création du connecteur de données. La prochaine synchronisation a ensuite lieu environ 24, 72 ou 120 heures plus tard.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Se connecter à Google Drive

Pour rechercher des données dans Google Drive, créez un connecteur à l'aide de la console Google Cloud en procédant comme suit :

Avant de commencer :

  • Vous devez être connecté à la console Google Cloud avec le même compte que celui que vous utilisez pour l'instance Google Drive que vous prévoyez de connecter. Vertex AI Search utilise votre ID client Google Workspace pour se connecter à Google Drive.

  • Configurez le contrôle des accès pour Google Drive. Pour en savoir plus sur la configuration du contrôle des accès, consultez la page Utiliser le contrôle des accès des sources de données.

  • La recherche avancée dans Google Drive est en version preview privée. Cette fonctionnalité est un prérequis pour utiliser la synthèse de la recherche et la recherche avec questions complémentaires avec un data store Google Drive. Pour utiliser cette fonctionnalité, suivez plutôt les étapes de la section Utiliser l'indexation avancée de Drive.

Console

Pour utiliser la console afin de rendre les données Google Drive disponibles pour la recherche, 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 Source, sélectionnez Google Drive.

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

  6. Attribuez un nom à votre datastore. . Cliquez sur Créer.

Utiliser l'indexation de disque avancée (version Preview privée)

L'indexation de disque avancée est en version Preview privée.

Suivez cette procédure si vous prévoyez d'utiliser Google Drive avec la synthèse de recherche et la recherche avec suivis.

Avant de commencer :

  • Vous devez être un super-administrateur Google Workspace pour activer l'indexation avancée de Drive. En effet, avec l'indexation avancée de Drive, Vertex AI Search indexe les données Google Drive.
  • Vous devez être ajouté à la liste d'autorisation pour pouvoir utiliser cette fonctionnalité.

Console

Pour créer un data store Google Drive avec une indexation Google Drive avancée à l'aide de la console, 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 Source, sélectionnez Google Drive.

  5. Sélectionnez Indexation de disque avancée.

  6. Saisissez votre adresse e-mail Google Workspace.

  7. Dans la section Configurer la délégation au niveau du domaine, consultez les instructions et notez l'ID client du compte de service fourni à l'étape 4 de cette section.

  8. Configurez la délégation au niveau du domaine:

    1. Accédez à la page Délégation au niveau du domaine de la console d'administration Google Workspace et connectez-vous avec votre compte super-administrateur.
    2. Cliquez sur Ajouter.
    3. Saisissez l'ID client du compte de service que vous avez noté. (Cet ID est fourni dans les instructions de la console de l'Agent Builder, dans la section Configurer la délégation au niveau du domaine.)
    4. Saisissez les habilitations OAuth suivantes.

      https://www.googleapis.com/auth/drive.readonly,
      https://www.googleapis.com/auth/admin.directory.user.readonly,
      https://www.googleapis.com/auth/admin.directory.group.readonly,
      https://www.googleapis.com/auth/admin.directory.domain.readonly,
      https://www.googleapis.com/auth/admin.reports.audit.readonly
      
    5. Cliquez sur Autoriser.

  9. Dans la console Agent Builder, cliquez sur Continue (Continuer).

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

  11. Attribuez un nom à votre datastore.

  12. Cliquez sur Créer. Selon la taille de vos données, l'ingestion peut prendre de quelques minutes à plusieurs heures. Attendez au moins une heure avant d'utiliser votre data store pour effectuer des recherches.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Associer Google Pay à votre compte Gmail

Pour rechercher des données dans Gmail, procédez comme suit pour créer un data store et ingérer des données à l'aide de la console Google Cloud.

Avant de commencer :

  • Vous devez être connecté à la console Google Cloud avec le même compte que celui que vous utilisez pour l'instance Google Workspace que vous prévoyez de connecter. Vertex AI Search utilise votre ID client Google Workspace pour se connecter à Gmail.

  • Configurez le contrôle des accès pour Gmail. Pour en savoir plus sur la configuration du contrôle des accès, consultez la page Utiliser le contrôle des accès des sources de données.

Console

Pour utiliser la console afin de rendre les données Gmail disponibles pour la recherche, 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 Source, sélectionnez Google Gmail.

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

  6. Attribuez un nom à votre datastore.

  7. Cliquez sur Créer.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Associer Data Studio à Google Sites

Pour rechercher des données dans Google Sites, créez un connecteur à l'aide de la console Google Cloud en procédant comme suit :

Avant de commencer :

  • Vous devez être connecté à la console Google Cloud avec le même compte que celui que vous utilisez pour l'instance Google Workspace que vous prévoyez de connecter. Vertex AI Search utilise votre numéro client Google Workspace pour se connecter à Google Sites.

  • Configurez le contrôle des accès pour Google Sites. Pour en savoir plus sur la configuration du contrôle des accès, consultez la page Utiliser le contrôle des accès des sources de données.

Console

Pour utiliser la console afin de rendre les données Google Sites disponibles pour la recherche, 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 Source, sélectionnez Google Sites.

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

  6. Attribuez un nom à votre datastore.

  7. Cliquez sur Créer.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Associer à Google Agenda

Pour rechercher des données dans Google Agenda, créez un connecteur à l'aide de la console Google Cloud en procédant comme suit :

Avant de commencer :

  • Vous devez être connecté à la console Google Cloud avec le même compte que celui que vous utilisez pour l'instance Google Workspace que vous prévoyez de connecter. Vertex AI Search utilise votre numéro client Google Workspace pour se connecter à Google Agenda.

  • Configurez le contrôle des accès pour Google Agenda. Pour en savoir plus sur la configuration du contrôle des accès, consultez la page Utiliser le contrôle des accès des sources de données.

Console

Pour utiliser la console afin de rendre les données Google Agenda disponibles pour la recherche, 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 Source, sélectionnez Google Agenda.

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

  6. Attribuez un nom à votre datastore.

  7. Cliquez sur Créer.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Se connecter à Google Groups

Pour rechercher des données dans Google Groups, créez un connecteur à l'aide de la console Google Cloud en procédant comme suit :

Avant de commencer :

  • Vous devez être connecté à la console Google Cloud avec le même compte que celui que vous utilisez pour l'instance Google Workspace que vous prévoyez de connecter. Vertex AI Search utilise votre numéro client Google Workspace pour se connecter à Google Groups.

  • Configurez le contrôle des accès pour Google Groupes. Pour en savoir plus sur la configuration du contrôle des accès, consultez la page Utiliser le contrôle des accès des sources de données.

Console

Pour utiliser la console afin de rendre les données Google Groups disponibles pour la recherche, 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 Source, sélectionnez Google Groups.

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

  6. Attribuez un nom à votre datastore.

  7. Cliquez sur Créer. Selon la taille de vos données, l'ingestion peut prendre de quelques minutes à plusieurs heures. Attendez au moins une heure avant d'utiliser votre data store pour effectuer des recherches.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Vous pouvez configurer la recherche de personnes pour vos équipes de travail en synchronisant les données sur les personnes à partir de Google Workspace. Ces données se synchronisent en continu avec Vertex AI Search une fois que vous avez créé votre data store.

Les personnes de votre répertoire s'affichent dans les résultats de recherche sous forme de fiches qui présentent les informations de profil disponibles pour chaque personne, comme son nom, son adresse e-mail, son organisation et sa photo de profil. Vous pouvez cliquer sur une fiche pour afficher la page d'informations de cette personne.

Prérequis

  1. Déterminez le fournisseur d'identité avec lequel vos utilisateurs se connecteront à votre application. Si vous utilisez un fournisseur d'identité tiers, un administrateur doit le fédérer avec Google Workspace. La planification et la configuration de la fédération peuvent prendre beaucoup de temps. Pour en savoir plus, consultez Utiliser le contrôle des accès aux sources de données.

  2. Un administrateur Google Workspace doit activer la recherche de personnes dans les données Google Workspace. Pour ce faire :

    1. Connectez-vous à la console d'administration Google avec un compte administrateur.
    2. Dans la console d'administration, accédez à Annuaire > Paramètres de l'annuaire.
    3. Activez le partage de contacts.
  3. Connectez-vous à la console Google Cloud avec le même compte que celui que vous prévoyez d'utiliser pour connecter Google Workspace.

  4. Connectez-vous à votre fournisseur d'identité en suivant la procédure décrite dans Associer votre fournisseur d'identité, puis spécifiez Google Identity comme fournisseur.

Pour en savoir plus sur l'annuaire Google Workspace, consultez Présentation: configurer et gérer l'annuaire dans la documentation Google Workspace.

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer depuis Cloud SQL

Pour ingérer des données à partir de Cloud SQL, procédez comme suit pour configurer l'accès à Cloud SQL, créer un data store et ingérer des données.

Configurer l'accès au bucket de préproduction pour les instances Cloud SQL

Lors de l'ingestion de données à partir de Cloud SQL, les données sont d'abord mises en scène dans un bucket Cloud Storage. Suivez ces étapes pour accorder à une instance Cloud SQL l'accès à des buckets Cloud Storage.

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

    SQL

  2. Cliquez sur l'instance Cloud SQL à partir de laquelle vous prévoyez d'importer.

  3. Copiez l'identifiant du compte de service de l'instance, qui ressemble à une adresse e-mail (par exemple, p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com).

  4. Accédez à la page IAM et administration.

    IAM et administration

  5. Cliquez sur Accorder l'accès.

  6. Pour Nouveaux comptes principaux, saisissez l'identifiant du compte de service de l'instance, puis sélectionnez le rôle Cloud Storage > Administrateur Storage.

  7. Cliquez sur Enregistrer.

Suivant :

Configurer l'accès à Cloud SQL à partir d'un autre projet

Pour accorder à Vertex AI Search l'accès aux données Cloud SQL d'un autre projet, procédez comme suit:

  1. Remplacez la variable PROJECT_NUMBER suivante par votre numéro de projet Vertex AI Search, puis copiez le contenu du bloc de code. Il s'agit de l'identifiant de votre compte de service Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Accédez à la page IAM et administration.

    IAM et administration

  3. Basculez vers votre projet Cloud SQL sur la page IAM et administration, puis cliquez sur Accorder l'accès.

  4. Pour Nouveaux comptes principaux, saisissez l'identifiant du compte de service, puis sélectionnez le rôle Cloud SQL > Lecteur Cloud SQL.

  5. Cliquez sur Enregistrer.

Accédez ensuite à Importer des données à partir de Cloud SQL.

Importer des données depuis Cloud SQL

Console

Pour utiliser la console afin d'ingérer des données à partir de Cloud SQL, 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 Source, sélectionnez Cloud SQL.

  5. Spécifiez l'ID du projet, l'ID de l'instance, l'ID de la base de données et l'ID de la table des données que vous prévoyez d'importer.

  6. Cliquez sur Parcourir, puis choisissez un emplacement Cloud Storage intermédiaire vers lequel exporter les données, puis cliquez sur Sélectionner. Vous pouvez également saisir l'emplacement directement dans le champ gs://.

  7. Indiquez si vous souhaitez activer l'exportation sans serveur. L'exportation sans serveur entraîne des coûts supplémentaires. Pour en savoir plus sur l'exportation sans serveur, consultez la section Minimiser l'impact des exportations sur les performances dans la documentation Cloud SQL.

  8. 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 l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (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 de quelques minutes à plusieurs heures.

REST

Pour créer un data store et ingérer des données à partir de Cloud SQL à 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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DISPLAY_NAME: nom à afficher du data store. Ce message peut s'afficher dans la console Google Cloud.
  2. Importer des données depuis Cloud SQL

      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 '{
        "cloudSqlSource": {
          "projectId": "SQL_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "gcsStagingDir": "STAGING_DIRECTORY"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Vertex AI Search.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • SQL_PROJECT_ID: ID de votre projet Cloud SQL.
    • INSTANCE_ID: ID de votre instance Cloud SQL.
    • DATABASE_ID: ID de votre base de données Cloud SQL.
    • TABLE_ID: ID de votre table Cloud SQL.
    • STAGING_DIRECTORY : facultatif. Un répertoire Cloud Storage (par exemple, gs://<your-gcs-bucket>/directory/import_errors).
    • 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 SQL 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, des documents nouveaux et mis à jour sont ajoutés à votre magasin de données, et les documents qui ne figurent pas dans Cloud SQL sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.

Python

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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

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"
# sql_project_id = "YOUR_SQL_PROJECT_ID"
# sql_instance_id = "YOUR_SQL_INSTANCE_ID"
# sql_database_id = "YOUR_SQL_DATABASE_ID"
# sql_table_id = "YOUR_SQL_TABLE_ID"

#  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,
    cloud_sql_source=discoveryengine.CloudSqlSource(
        project_id=sql_project_id,
        instance_id=sql_instance_id,
        database_id=sql_database_id,
        table_id=sql_table_id,
    ),
    # 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)

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer depuis Spanner

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

Configurer l'accès à Spanner à partir d'un autre projet

Si vos données Spanner se trouvent dans le même projet que Vertex AI Search, passez à la section Importer des données depuis Spanner.

Pour accorder à la recherche Vertex AI l'accès aux données Spanner d'un autre projet, procédez comme suit:

  1. Remplacez la variable PROJECT_NUMBER suivante par votre numéro de projet Vertex AI Search, puis copiez le contenu de ce bloc de code. Il s'agit de l'identifiant de votre compte de service Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Accédez à la page IAM et administration.

    IAM et administration

  3. Basculez vers votre projet Spanner sur la page IAM et administration, puis cliquez sur Accorder l'accès.

  4. Pour Nouveaux comptes principaux, saisissez l'identifiant du compte de service, puis sélectionnez l'une des options suivantes:

    • Si vous n'utilisez pas Data Boost lors de l'importation, sélectionnez le rôle Cloud Spanner > Lecteur de base de données Cloud Spanner.
    • Si vous prévoyez d'utiliser Data Boost lors de l'importation, sélectionnez le rôle Cloud Spanner > Administrateur de bases de données Cloud Spanner ou un rôle personnalisé avec les autorisations de Lecteur de bases de données Cloud Spanner et spanner.databases.useDataBoost. Pour en savoir plus sur Data Boost, consultez la section Présentation de Data Boost dans la documentation Spanner.
  5. Cliquez sur Enregistrer.

Accédez ensuite à Importer des données depuis Spanner.

Importer des données depuis Spanner

Console

Pour utiliser la console pour ingérer des données à partir de Spanner, 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 Source, sélectionnez Cloud Spanner.

  5. Spécifiez l'ID du projet, l'ID de l'instance, l'ID de la base de données et l'ID de la table des données que vous prévoyez d'importer.

  6. Indiquez si vous souhaitez activer Data Boost. Pour en savoir plus sur Data Boost, consultez la section Présentation de Data Boost dans la documentation Spanner.

  7. Cliquez sur Continuer.

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

  9. Attribuez un nom à votre datastore.

  10. Cliquez sur Créer.

  11. Pour vérifier l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (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 de quelques minutes à plusieurs heures.

REST

Pour créer un data store et ingérer des données à partir de Spanner à 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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Vertex AI Search.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DISPLAY_NAME: nom à afficher du data store. Ce message peut s'afficher dans la console Google Cloud.
  2. Importer des données depuis Spanner

      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 '{
        "cloudSpannerSource": {
          "projectId": "SPANNER_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "enableDataBoost": "DATA_BOOST_BOOLEAN"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Vertex AI Search.
    • DATA_STORE_ID: ID du data store.
    • SPANNER_PROJECT_ID: ID de votre projet Spanner.
    • INSTANCE_ID: ID de votre instance Spanner.
    • DATABASE_ID: ID de votre base de données Spanner.
    • TABLE_ID: ID de votre table Spanner.
    • DATA_BOOST_BOOLEAN : facultatif. Indique si Data Boost doit être activé. Pour en savoir plus sur Data Boost, consultez la présentation de Data Boost dans la documentation Spanner.
    • 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 Spanner 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, des documents nouveaux et mis à jour sont ajoutés à votre data store, et les documents qui ne figurent pas dans Spanner sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS : facultatif. Indique 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.

    • ID_FIELD : facultatif. Spécifie les champs correspondant aux ID de document.

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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

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"
# spanner_project_id = "YOUR_SPANNER_PROJECT_ID"
# spanner_instance_id = "YOUR_SPANNER_INSTANCE_ID"
# spanner_database_id = "YOUR_SPANNER_DATABASE_ID"
# spanner_table_id = "YOUR_SPANNER_TABLE_ID"

#  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,
    spanner_source=discoveryengine.SpannerSource(
        project_id=spanner_project_id,
        instance_id=spanner_instance_id,
        database_id=spanner_database_id,
        table_id=spanner_table_id,
    ),
    # 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)

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer depuis Firestore

Pour ingérer des données depuis Firestore, procédez comme suit pour créer un data store et ingérer des données à l'aide de la console Google Cloud ou de l'API.

Si vos données Firestore se trouvent dans le même projet que Vertex AI Search, accédez à Importer des données depuis Firestore.

Si vos données Firestore se trouvent dans un projet différent de votre projet Vertex AI Search, consultez Configurer l'accès à Firestore.

Configurer l'accès à Firestore à partir d'un autre projet

Pour accorder à la recherche Vertex AI l'accès aux données Firestore d'un autre projet, procédez comme suit:

  1. Remplacez la variable PROJECT_NUMBER suivante par votre numéro de projet Vertex AI Search, puis copiez le contenu de ce bloc de code. Voici l'identifiant de votre compte de service Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Accédez à la page IAM et administration.

    IAM et administration

  3. Basculez vers votre projet Firestore sur la page IAM et administration, puis cliquez sur Accorder l'accès.

  4. Pour Nouveaux comptes principaux, saisissez l'identifiant du compte de service de l'instance, puis sélectionnez le rôle Datastore > Cloud Datastore Import Export Admin (Datastore > Administrateur d'importation et d'exportation Cloud Datastore).

  5. Cliquez sur Enregistrer.

  6. Revenez à votre projet Vertex AI Search.

Accédez ensuite à Importer des données depuis Firestore.

Importer des données depuis Firestore

Console

Pour utiliser la console pour ingérer des données à partir de Firestore, 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 Source, sélectionnez Firestore.

  5. Spécifiez l'ID du projet, l'ID de la base de données et l'ID de la collection des données que vous prévoyez d'importer.

  6. Cliquez sur Continuer.

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

  8. Attribuez un nom à votre datastore.

  9. Cliquez sur Créer.

  10. Pour vérifier l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (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 de quelques minutes à plusieurs heures.

REST

Pour créer un data store et ingérer des données à partir de Firestore à 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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DISPLAY_NAME: nom à afficher du data store. Ce message peut s'afficher dans la console Google Cloud.
  2. Importer des données depuis Firestore

      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 '{
        "firestoreSource": {
          "projectId": "FIRESTORE_PROJECT_ID",
          "databaseId": "DATABASE_ID",
          "collectionId": "COLLECTION_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Vertex AI Search.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • FIRESTORE_PROJECT_ID: ID de votre projet Firestore.
    • DATABASE_ID: ID de votre base de données Firestore.
    • COLLECTION_ID: ID de votre collection Firestore.
    • 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 Firestore 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, des documents nouveaux et mis à jour sont ajoutés à votre datastore, et les documents qui ne figurent pas dans Firestore sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS : facultatif. Indique 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.
    • ID_FIELD : facultatif. Spécifie les champs correspondant aux ID de document.

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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

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"
# firestore_project_id = "YOUR_FIRESTORE_PROJECT_ID"
# firestore_database_id = "YOUR_FIRESTORE_DATABASE_ID"
# firestore_collection_id = "YOUR_FIRESTORE_COLLECTION_ID"

#  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,
    firestore_source=discoveryengine.FirestoreSource(
        project_id=firestore_project_id,
        database_id=firestore_database_id,
        collection_id=firestore_collection_id,
    ),
    # 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)

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer depuis Bigtable

Pour ingérer des données à partir de Bigtable, procédez comme suit pour créer un data store et ingérer des données à l'aide de l'API.

Configurer l'accès à Bigtable

Pour accorder à la recherche Vertex AI l'accès aux données Bigtable d'un autre projet, procédez comme suit:

  1. Remplacez la variable PROJECT_NUMBER suivante par votre numéro de projet Vertex AI Search, puis copiez le contenu de ce bloc de code. Il s'agit de l'identifiant de votre compte de service Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Accédez à la page IAM et administration.

    IAM et administration

  3. Basculez vers votre projet Bigtable sur la page IAM et administration, puis cliquez sur Accorder l'accès.

  4. Pour Nouveaux comptes principaux, saisissez l'identifiant du compte de service de l'instance, puis sélectionnez le rôle Bigtable > Lecteur Bigtable.

  5. Cliquez sur Enregistrer.

  6. Revenez à votre projet Vertex AI Search.

Accédez ensuite à Importer des données depuis Bigtable.

Importer des données depuis Bigtable

REST

Pour créer un data store et ingérer des données à partir de Bigtable à 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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DISPLAY_NAME: nom à afficher du data store. Ce message peut s'afficher dans la console Google Cloud.
  2. Importez des données depuis Bigtable.

      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 '{
        "bigtableSource ": {
          "projectId": "BIGTABLE_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "tableId": "TABLE_ID",
          "bigtableOptions": {
            "keyFieldName": "KEY_FIELD_NAME",
            "families": {
              "key": "KEY",
              "value": {
                "fieldName": "FIELD_NAME",
                "encoding": "ENCODING",
                "type": "TYPE",
                "columns": [
                  {
                    "qualifier": "QUALIFIER",
                    "fieldName": "FIELD_NAME",
                    "encoding": "COLUMN_ENCODING",
                    "type": "COLUMN_VALUES_TYPE"
                  }
                ]
              }
             }
             ...
          }
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Vertex AI Search.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • BIGTABLE_PROJECT_ID: ID de votre projet Bigtable.
    • INSTANCE_ID: ID de votre instance Bigtable.
    • TABLE_ID: ID de votre table Bigtable.
    • KEY_FIELD_NAME: facultatif, mais recommandé. Nom du champ à utiliser pour la valeur de clé de ligne après l'ingestion dans Vertex AI Search.
    • KEY : valeur obligatoire. Valeur de chaîne pour la clé de famille de colonnes.
    • ENCODING : facultatif. Mode d'encodage des valeurs lorsque le type n'est pas STRING.Vous pouvez remplacer ce paramètre pour une colonne spécifique en la listant dans columns et en spécifiant un encodage.
    • COLUMN_TYPE : facultatif. Type de valeurs de cette famille de colonnes.
    • QUALIFIER : valeur obligatoire. Qualificateur de la colonne.
    • FIELD_NAME: facultatif, mais recommandé. Nom du champ à utiliser pour cette colonne après l'ingestion dans Vertex AI Search.
    • COLUMN_ENCODING : facultatif. Mode d'encodage des valeurs pour une colonne spécifique lorsque le type n'est pas STRING.
    • 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 Bigtable 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, des documents nouveaux et mis à jour sont ajoutés à votre data store, et les documents qui ne figurent pas dans Bigtable sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS : facultatif. Indique 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. Sinon, une erreur INVALID_ARGUMENT est renvoyée. Si vous ne spécifiez pas autoGenerateIds ou si vous le définissez sur false, vous devez spécifier idField. Sinon, l'importation des documents échoue.

    • ID_FIELD : facultatif. Spécifie les champs correspondant aux ID de document.

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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

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"
# bigtable_project_id = "YOUR_BIGTABLE_PROJECT_ID"
# bigtable_instance_id = "YOUR_BIGTABLE_INSTANCE_ID"
# bigtable_table_id = "YOUR_BIGTABLE_TABLE_ID"

#  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",
)

bigtable_options = discoveryengine.BigtableOptions(
    families={
        "family_name_1": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.STRING,
            encoding=discoveryengine.BigtableOptions.Encoding.TEXT,
            columns=[
                discoveryengine.BigtableOptions.BigtableColumn(
                    qualifier="qualifier_1".encode("utf-8"),
                    field_name="field_name_1",
                ),
            ],
        ),
        "family_name_2": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.INTEGER,
            encoding=discoveryengine.BigtableOptions.Encoding.BINARY,
        ),
    }
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigtable_source=discoveryengine.BigtableSource(
        project_id=bigtable_project_id,
        instance_id=bigtable_instance_id,
        table_id=bigtable_table_id,
        bigtable_options=bigtable_options,
    ),
    # 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)

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Importer depuis AlloyDB pour PostgreSQL

Pour ingérer des données à partir d'AlloyDB pour PostgreSQL, procédez comme suit pour créer un data store et ingérer des données à l'aide de la console Google Cloud ou de l'API.

Si vos données AlloyDB pour PostgreSQL se trouvent dans le même projet que le projet de recherche Vertex AI, accédez à Importer des données depuis AlloyDB pour PostgreSQL.

Si vos données AlloyDB pour PostgreSQL se trouvent dans un projet différent de votre projet de recherche Vertex AI, consultez Configurer l'accès à AlloyDB pour PostgreSQL.

Configurer l'accès à AlloyDB pour PostgreSQL à partir d'un autre projet

Pour accorder à la recherche Vertex AI l'accès aux données AlloyDB pour PostgreSQL d'un autre projet, procédez comme suit:

  1. Remplacez la variable PROJECT_NUMBER suivante par votre numéro de projet Vertex AI Search, puis copiez le contenu de ce bloc de code. Il s'agit de l'identifiant de votre compte de service Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Passez au projet Google Cloud dans lequel se trouvent vos données AlloyDB pour PostgreSQL.

  3. Accédez à la page IAM.

    IAM

  4. Cliquez sur Accorder l'accès.

  5. Pour Nouveaux comptes principaux, saisissez l'identifiant du compte de service Vertex AI Search, puis sélectionnez le rôle Cloud AlloyDB > Administrateur Cloud AlloyDB.

  6. Cliquez sur Enregistrer.

  7. Revenez à votre projet Vertex AI Search.

Accédez ensuite à Importer des données depuis AlloyDB pour PostgreSQL.

Importer des données depuis AlloyDB pour PostgreSQL

Console

Pour utiliser la console afin d'ingérer des données à partir d'AlloyDB pour PostgreSQL, 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. Cliquez sur Créer un datastore.

  4. Sur la page Source, sélectionnez AlloyDB.

  5. Spécifiez l'ID du projet, l'ID de l'emplacement, l'ID du cluster, l'ID de la base de données et l'ID de la table des données que vous prévoyez d'importer.

  6. Cliquez sur Continuer.

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

  8. Attribuez un nom à votre datastore.

  9. Cliquez sur Créer.

  10. Pour vérifier l'état de l'ingestion, accédez à la page Data stores (Data stores) et cliquez sur le nom de votre data store pour en afficher les détails sur la page Data (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 de quelques minutes à plusieurs heures.

REST

Pour créer un data store et ingérer des données à partir d'AlloyDB pour PostgreSQL à 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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DISPLAY_NAME: nom à afficher du data store. Ce message peut s'afficher dans la console Google Cloud.
  2. Importer des données depuis AlloyDB pour PostgreSQL

      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 '{
        "alloydbSource": {
          "projectId": "ALLOYDB_PROJECT_ID",
          "locationId": "LOCATION_ID",
          "clusterId": "CLUSTER_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Vertex AI Search.
    • DATA_STORE_ID: ID du data store. L'ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • ALLOYDB_PROJECT_ID: ID de votre projet AlloyDB pour PostgreSQL.
    • LOCATION_ID: ID de votre emplacement AlloyDB pour PostgreSQL.
    • CLUSTER_ID: ID de votre cluster AlloyDB pour PostgreSQL.
    • DATABASE_ID: ID de votre base de données AlloyDB pour PostgreSQL.
    • TABLE_ID: ID de votre table AlloyDB pour PostgreSQL.
    • 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 d'AlloyDB pour PostgreSQL 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. Spécifier FULL entraîne une rebase complète des documents de votre data store. En d'autres termes, des documents nouveaux et mis à jour sont ajoutés à votre entrepôt de données, et les documents qui ne figurent pas dans AlloyDB pour PostgreSQL sont supprimés de votre data store. Le mode FULL est utile si vous souhaitez supprimer automatiquement les documents dont vous n'avez plus besoin.
    • AUTO_GENERATE_IDS : facultatif. Indique 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.
    • ID_FIELD : facultatif. Spécifie les champs qui correspondent aux ID de document.

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.

Créer un data store


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importer des documents

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as 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"
# alloy_db_project_id = "YOUR_ALLOY_DB_PROJECT_ID"
# alloy_db_location_id = "YOUR_ALLOY_DB_LOCATION_ID"
# alloy_db_cluster_id = "YOUR_ALLOY_DB_CLUSTER_ID"
# alloy_db_database_id = "YOUR_ALLOY_DB_DATABASE_ID"
# alloy_db_table_id = "YOUR_ALLOY_DB_TABLE_ID"

# 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,
    alloy_db_source=discoveryengine.AlloyDbSource(
        project_id=alloy_db_project_id,
        location_id=alloy_db_location_id,
        cluster_id=alloy_db_cluster_id,
        database_id=alloy_db_database_id,
        table_id=alloy_db_table_id,
    ),
    # 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)

Étapes suivantes

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

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 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.

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

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • DATA_STORE_ID: ID du data store Vertex AI Search que vous souhaitez créer. Cet identifiant ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
    • DATA_STORE_DISPLAY_NAME: nom à afficher du data store Vertex AI Search que vous souhaitez créer.
  2. Importer des données structurées

    Vous pouvez importer des données de plusieurs manières:

    • 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 les éléments suivants :

      • DOCUMENT_ID: ID unique du document. Cet ID peut comporter jusqu'à 63 caractères et ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.
      • JSON_DOCUMENT_STRING: document JSON sous forme de chaîne unique. Il doit respecter le schéma JSON que vous avez fourni à l'étape précédente, par exemple:

        { \"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 qu'objet 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"
      }'
      
    • 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

  • Pour associer votre data store à une application, créez-en une et sélectionnez votre data store en suivant la procédure décrite dans la section Créer une application de recherche.

  • Pour prévisualiser l'affichage de vos résultats de recherche une fois votre application et votre data store configurés, consultez la section Obtenir des résultats de recherche.

Résoudre les problèmes liés à l'ingestion de données

Si vous rencontrez des problèmes d'ingestion de données, consultez ces conseils:

  • Si vous utilisez des clés de chiffrement gérées par le client et que l'importation de données échoue (avec le message d'erreur The caller does not have permission), assurez-vous que le rôle IAM de chiffreur/déchiffreur de clés cryptographiques (roles/cloudkms.cryptoKeyEncrypterDecrypter) sur la clé a été attribué à l'agent de service Cloud Storage. Pour en savoir plus, consultez la section Avant de commencer dans "Clés de chiffrement gérées par le client".

  • Si vous utilisez l'indexation avancée des sites Web et que l'utilisation des documents pour le data store est beaucoup plus faible que prévu, examinez les formats d'URL que vous avez spécifiés pour l'indexation et assurez-vous qu'ils couvrent les pages que vous souhaitez indexer, et développez-les si nécessaire. Par exemple, si vous avez utilisé *.en.example.com/*, vous devrez peut-être ajouter *.example.com/* aux sites que vous souhaitez indexer.

Créer un data store à l'aide de Terraform

Vous pouvez utiliser Terraform pour créer un data store vide. Une fois le data store vide créé, vous pouvez y insérer des données à l&#data store;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 data store vide à l'aide de Terraform, consultez google_discovery_engine_data_store.