Configurer la saisie semi-automatique

Cette page décrit la fonctionnalité d'autocomplete de base de Vertex AI Search. La saisie semi-automatique génère des suggestions de requêtes en fonction des premiers caractères saisis.

Les suggestions générées par la saisie semi-automatique varient en fonction du type de données utilisé par l'application de recherche :

  • Données structurées et non structurées Par défaut, la saisie semi-automatique génère des suggestions basées sur le contenu des documents du data store. Après l'importation de documents, la saisie semi-automatique ne commence pas à générer des suggestions tant qu'il n'y a pas suffisamment de données de qualité, généralement au bout de quelques jours. Si vous envoyez des requêtes de saisie semi-automatique via l'API, la saisie semi-automatique peut générer des suggestions basées sur l'historique des recherches ou les événements utilisateur.

  • Données de site Web : Par défaut, la saisie semi-automatique génère des suggestions à partir de l'historique des recherches. La saisie semi-automatique nécessite un trafic de recherche réel. Une fois le trafic de recherche commencé, la saisie semi-automatique met un jour ou deux à générer des suggestions. Les suggestions peuvent être générées à partir de données extraites du Web sur des sites publics avec le modèle de données de document avancé expérimental.

  • Données de santé : Par défaut, une source de données médicales canonique est utilisée pour générer des suggestions de saisie semi-automatique pour les datastores de santé.

Le modèle de suggestions de requêtes détermine le type de données utilisé par la saisie semi-automatique pour générer des suggestions. Il existe quatre modèles de suggestions de requêtes :

  • Document. Le modèle de document génère des suggestions à partir des documents importés par l'utilisateur. Ce modèle n'est pas disponible pour les données de site Web ni les données de santé.

  • Champs à compléter Le modèle de champs à compléter suggère du texte extrait directement des champs de données structurées. Seuls les champs annotés avec completable sont utilisés pour les suggestions de saisie semi-automatique. Ce modèle n'est disponible que pour les données structurées.

  • Historique des recherches : Le modèle d'historique des recherches génère des suggestions à partir de l'historique des appels d'API SearchService.search. N'utilisez pas ce modèle si aucun trafic n'est disponible pour la méthode servingConfigs.search. Ce modèle n'est pas disponible pour les données de santé.

  • Événement utilisateur : Le modèle d'événements utilisateur génère des suggestions à partir des événements importés par l'utilisateur de type search. Ce modèle n'est pas disponible pour les données de santé.

Les requêtes Autocomplete sont envoyées à l'aide de la méthode dataStores.completeQuery.

Si vous ne souhaitez pas utiliser de modèle de suggestions de requêtes, vous pouvez utiliser les suggestions importées, qui fournissent des suggestions de saisie semi-automatique basées sur une liste de suggestions importée. Pour en savoir plus, consultez Utiliser une liste importée de suggestions de saisie semi-automatique.

Types de modèles disponibles selon le type de données

Le tableau suivant indique les types de modèles de suggestions de requêtes disponibles pour chaque type de données.


Modèle de suggestions de requêtes

Source de données

Données du site Web

Données structurées

Données non structurées
Document Importé ✔* (par défaut) ✔ (par défaut)
Champs à compléter Importé
Historique des recherches Collectées automatiquement ✔ (par défaut)
Événements utilisateur Importées ou collectées automatiquement par le widget
Contenu trouvé sur le Web Exploitation du contenu de sites Web publics que vous spécifiez

* : Le schéma du document doit contenir des champs title ou description, ou des champs dont les propriétés de clé ont été spécifiées comme title ou description. Consultez Mettre à jour un schéma pour les données structurées.

 : Le contenu exploré sur le Web ne peut être utilisé comme source de données que si le modèle de données de document avancé expérimental pour la saisie semi-automatique est activé. Consultez Modèle de données de document avancé.

Si vous ne souhaitez pas utiliser le modèle par défaut pour votre type de données, vous pouvez spécifier un autre modèle lorsque vous envoyez votre requête de saisie semi-automatique. Les requêtes de saisie semi-automatique sont envoyées à l'aide de la méthode dataStores.completeQuery. Pour en savoir plus, consultez Instructions de l'API : envoyer une requête d'autocomplete pour choisir un autre modèle.

Fonctionnalités de saisie semi-automatique

Vertex AI Search est compatible avec les fonctionnalités de saisie semi-automatique suivantes pour afficher les prédictions les plus utiles lors de la recherche :

Fonctionnalité Description Exemple ou plus d'informations
Corriger les fautes de frappe Corrigez les fautes de frappe. MilcMilk.
Supprimer les termes dangereux
  • Avec la recherche sécurisée Google.
  • Supprimez les requêtes inappropriées.
  • Disponible en allemand (de), anglais (en), espagnol (es), français (fr), italien (it), polonais (pl), portugais (pt), russe (ru) et ukrainien (uk).
Texte choquant (pornographie, contenu suggestif, langage vulgaire, violence, etc.)
Empêcher l'affichage des informations permettant d'identifier personnellement les utilisateurs Grâce à la protection des données sensibles, Vertex AI Search s'efforce raisonnablement d'empêcher l'affichage des types de données à caractère personnel de base, tels que les numéros de téléphone et les adresses e-mail.

Si une adresse e-mail jeffersonloveshiking@gmail.com figure dans le data store, Vertex AI Search ne la renverra pas comme suggestion de saisie automatique si l'utilisateur saisit jef dans la barre de recherche.

Pour vous protéger plus efficacement contre les fuites d'informations permettant d'identifier personnellement les utilisateurs, Google vous recommande d'appliquer votre propre solution de protection contre la perte de données (DLP) en plus des détecteurs fournis par Vertex AI Search. Pour en savoir plus, consultez Se protéger contre les fuites d'informations permettant d'identifier personnellement l'utilisateur.

Liste de refus
  • Supprimez les termes figurant dans la liste de refus.
Pour en savoir plus, consultez Utiliser la saisie semi-automatique pour les listes de blocage.
Dédupliquer les termes
  • Optimisé par la compréhension sémantique basée sur l'IA.
  • Pour les termes presque identiques, l'un ou l'autre terme correspond, mais seul le plus populaire est suggéré.
Shoes for Women, Womens Shoes et Womans Shoes sont dédupliqués, et seule la plus populaire est suggérée.
Personnaliser les suggestions de correspondance
  • Non disponible dans les ensembles multirégionaux des États-Unis et de l'UE.
  • Paramètre facultatif.
  • S'il n'y a aucune correspondance de saisie semi-automatique pour l'intégralité de la requête, suggérez des correspondances uniquement pour le dernier mot de la requête.
  • Non disponible pour la recherche dans le secteur de la santé.
Pour en savoir plus, consultez Suggestions de correspondance de queue.

Personnaliser les suggestions de correspondance

Les suggestions de correspondance de fin sont générées à l'aide d'une correspondance exacte des préfixes avec le dernier mot d'une chaîne de requête.

Par exemple, supposons que la requête "chansons avec he" soit envoyée dans une requête de saisie semi-automatique. Lorsque la correspondance de queue est activée, la saisie semi-automatique peut déterminer que le préfixe complet "chansons avec he" ne présente aucune correspondance. Toutefois, le dernier mot de la requête, "he", correspond exactement au préfixe de "hello world" et "hello kitty". Dans ce cas, les suggestions renvoyées sont "chansons avec hello world" et "chansons avec hello kitty", car il n'existe aucune suggestion de correspondance exacte.

Vous pouvez utiliser cette fonctionnalité pour réduire le nombre de suggestions vides et augmenter leur diversité. Elle est particulièrement utile lorsque les sources de données (nombre d'événements utilisateur, historique des recherches et couverture des thèmes des documents) sont limitées. Toutefois, l'activation des suggestions de correspondance exacte peut réduire la qualité globale des suggestions. Étant donné que la correspondance de fin ne correspond qu'au dernier mot du préfixe, certaines suggestions renvoyées peuvent ne pas avoir de sens. Par exemple, une requête telle que "chansons avec he" peut générer une suggestion de correspondance de queue telle que "chansons avec les aides guides".

Les suggestions de correspondance de queue ne sont renvoyées que si :

  1. include_tail_suggestions est défini sur true dans la requête dataStores.completeQuery.

  2. Aucune suggestion de correspondance de préfixe complète n'est disponible pour la requête.

Protection contre les fuites d'informations permettant d'identifier personnellement l'utilisateur

La définition des informations permettant d'identifier personnellement l'utilisateur est large et ces informations peuvent être difficiles à détecter. Par conséquent, Vertex AI Search ne peut pas garantir que des informations permettant d'identifier personnellement l'utilisateur ne seront pas renvoyées dans les suggestions de saisie semi-automatique.

Vertex AI Search applique le service d'inspection Protection des données sensibles pour rechercher et bloquer les types courants d'informations permettant d'identifier personnellement l'utilisateur qui pourraient apparaître dans les suggestions. Toutefois, si vos magasins de données contiennent des informations permettant d'identifier personnellement l'utilisateur ou si vous utilisez les modèles de suggestions de requêtes d'historique des recherches ou d'événements utilisateur, examinez les points suivants et prenez les mesures appropriées :

  1. Si les types d'informations permettant d'identifier personnellement l'utilisateur que vous souhaitez protéger sont assez standards (numéros de téléphone et adresses e-mail, par exemple), commencez par tester de manière approfondie les suggestions de saisie semi-automatique pour votre application. Vertex AI Search ne peut pas garantir que des informations permettant d'identifier personnellement l'utilisateur ne seront pas renvoyées dans les suggestions de saisie semi-automatique.

  2. Si des fuites d'informations permettant d'identifier personnellement un utilisateur sont découvertes lors des tests de saisie semi-automatique ou si vous savez déjà que vous devez protéger des informations permettant d'identifier personnellement un utilisateur non standards (par exemple, des ID utilisateur propriétaires), essayez d'ajuster les paramètres de seuil de saisie semi-automatique et de diffusion de contenu. Pour en savoir plus, consultez Réduire le risque de renvoyer des suggestions contenant des informations permettant d'identifier personnellement l'utilisateur.

  3. Si l'ajustement des paramètres ne suffit pas à empêcher les fuites d'informations permettant d'identifier personnellement l'utilisateur, implémentez votre propre solution DLP. Personnalisez la solution de protection contre la perte de données pour les types d'informations permettant d'identifier personnellement l'utilisateur les plus susceptibles d'être trouvées dans vos data stores, vos événements utilisateur ou les requêtes de recherche des utilisateurs. Vous pouvez utiliser la protection des données sensibles ou un service DLP tiers. Choisissez l'une des options suivantes :

    • Filtrez les informations permettant d'identifier personnellement l'utilisateur avant d'importer les documents et les événements utilisateur dans vos data stores.

    • Examinez les suggestions de saisie semi-automatique avant de les présenter à l'utilisateur au moment de la diffusion et bloquez celles qui contiennent des informations permettant d'identifier personnellement l'utilisateur.

  4. Si vous utilisez le modèle d'historique des recherches ou d'événements utilisateur, ajoutez du texte informatif dans la barre de recherche pour indiquer à vos utilisateurs de ne pas saisir d'informations permettant de les identifier personnellement dans leurs requêtes de recherche.

  5. Si vous avez des questions ou rencontrez des difficultés particulières pour bloquer les informations permettant d'identifier personnellement l'utilisateur, contactez votre ingénieur client ou l'équipe chargée de votre compte Google.

Activer ou désactiver la saisie semi-automatique pour un widget

Pour activer ou désactiver la saisie semi-automatique pour un widget :

Console

  1. Dans la console Google Cloud , accédez à la page Applications d'IA.

    AI Applications

  2. Cliquez sur le nom de l'application que vous souhaitez modifier.

  3. Cliquez sur Configurations.

  4. Cliquez sur l'onglet UI.

  5. Activez ou désactivez les suggestions de saisie semi-automatique pour le widget en cochant ou décochant l'option Afficher les suggestions de saisie semi-automatique. Si vous activez la saisie semi-automatique, attendez un jour ou deux avant de voir les suggestions.

Modifier les paramètres de saisie semi-automatique

Pour configurer les paramètres de saisie semi-automatique dans l'UI, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Applications d'IA.

    AI Applications

  2. Cliquez sur le nom de l'application que vous souhaitez modifier.

  3. Cliquez sur Configurations.

  4. Cliquez sur l'onglet Saisie semi-automatique.

  5. Saisissez ou sélectionnez de nouvelles valeurs pour les paramètres de saisie semi-automatique que vous souhaitez modifier :

    • Nombre maximal de suggestions : nombre maximal de suggestions de saisie semi-automatique pouvant être proposées pour une requête.
    • Longueur minimale pour le déclenchement : nombre minimal de caractères pouvant être saisis avant que des suggestions de saisie semi-automatique ne soient proposées.
    • Ordre de correspondance : emplacement dans une chaîne de requête à partir duquel la saisie semi-automatique peut commencer à faire correspondre ses suggestions.
    • Modèle de suggestions de requêtes : modèle de suggestions de requêtes utilisé pour générer les suggestions récupérées. Vous pouvez remplacer cette valeur dans dataStores.completeQuery à l'aide du paramètre queryModel.
    • Activer la saisie semi-automatique : par défaut, la saisie semi-automatique ne commence à faire des suggestions que lorsqu'elle dispose de données de qualité suffisante, généralement au bout de quelques jours. Si vous souhaitez remplacer ce paramètre par défaut et commencer à recevoir des suggestions d'autocomplete plus tôt, sélectionnez Maintenant.

      Même si vous sélectionnez Maintenant, il peut s'écouler un jour avant que les suggestions ne soient générées. De plus, certaines suggestions de saisie semi-automatique peuvent être manquantes ou de mauvaise qualité jusqu'à ce que suffisamment de données de qualité soient disponibles.

    • Liste de refus : importez une liste de refus sous forme de fichier JSON dans un bucket Cloud Storage. Pour en savoir plus sur les contraintes et les spécifications des listes de blocage, consultez Utiliser la saisie semi-automatique pour les listes de blocage.

  6. Cliquez sur Enregistrer et publier. Les modifications prennent effet en quelques minutes pour les moteurs sur lesquels la saisie semi-automatique est déjà activée.

Réduire le risque de renvoyer des suggestions contenant des informations permettant d'identifier personnellement l'utilisateur

Les utilisateurs finaux disposent de toutes sortes d'informations permettant de les identifier personnellement, comme leur permis de conduire et leur numéro de téléphone, qu'ils sont censés garder privées. Toutefois, les utilisateurs peuvent saisir des informations personnelles dans la barre de recherche pour obtenir des résultats qui leur sont propres.

Si vous utilisez le modèle d'historique des recherches ou d'événements utilisateur et qu'il est probable que vos utilisateurs saisissent des informations permettant de les identifier personnellement dans la barre de recherche, vous pouvez réduire les fuites de ce type d'informations en ajustant les paramètres suivants :

  • queryFrequencyThreshold : avant qu'une requête puisse être renvoyée en tant que suggestion de saisie semi-automatique, elle doit avoir été saisie ce nombre de fois.

  • numUniqueUsersThreshold : avant qu'une requête puisse être renvoyée en tant que suggestion de saisie semi-automatique, elle doit avoir été saisie par ce nombre d'utilisateurs uniques. La valeur du champ userPseudoId dans l'événement utilisateur de recherche détermine si l'utilisateur est unique.

Exemple de cas d'utilisation

Prenons l'exemple d'un cas où les utilisateurs disposent de numéros de compte qui doivent rester privés.

Si le modèle de suggestions d'historique des recherches ou d'événements utilisateur est utilisé, ces numéros de compte, ainsi que tous les autres termes recherchés par les utilisateurs finaux, sont utilisés pour générer des suggestions. Ainsi, si le numéro de compte YZ-46789A de l'utilisateur A a été saisi à plusieurs reprises dans la barre de recherche et que le numéro de compte de l'utilisateur B est YZ-42345B, lorsque l'utilisateur B saisit YZ-4 dans la barre de recherche, la suggestion de saisie semi-automatique renvoyée peut être le numéro de compte de l'utilisateur A.

Pour réduire le risque de fuite de ce type, l'administrateur des applications d'IA décide de :

  • Augmentez la valeur du paramètre queryFrequencyThreshold à 30. Dans ce cas, il est très peu probable qu'un numéro de compte soit saisi aussi souvent. Toutefois, les requêtes de recherche populaires seront saisies au moins aussi souvent.

  • Augmentez la valeur du paramètre numUniqueUsersThreshold à 6. L'administrateur estime qu'il est peu probable que le même numéro de compte soit saisi dans la barre de recherche lors de six événements de recherche associés chacun à un userPseudoId différent.

Procédure

Il existe deux paramètres de seuil pour l'autocomplete. Ces paramètres ne sont pas disponibles dans la console Google Cloud , mais peuvent être définis avec un appel d'API REST à la méthode updateCompletionConfig.

Pour configurer les paramètres du seuil de saisie semi-automatique, procédez comme suit. Chaque étape est facultative, selon le paramètre que vous souhaitez modifier.

REST

  1. Mettez à jour le champ CompletionConfig.queryFrequencyThreshold :

    curl -X PATCH \
      -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/DATA_STORE_ID/completionConfig?updateMask=queryFrequencyThreshold \
      -d '{
        "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig",
        "queryFrequencyThreshold": QUERY_FREQUENCY_THRESHOLD
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID du data store associé à votre application.

    • QUERY_FREQUENCY_THRESHOLD : valeur entière qui indique le nombre minimal de fois qu'une requête de recherche doit être saisie avant de pouvoir être renvoyée en tant que suggestion de saisie semi-automatique. Le nombre est cumulé sur une période dynamique de plusieurs mois. La valeur par défaut est 8.

  2. Mettez à jour le champ CompletionConfig.numUniqueUsersThreshold :

    curl -X PATCH \
      -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/DATA_STORE_ID/completionConfig?updateMask=numUniqueUsersThreshold \
      -d '{
        "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig",
        "numUniqueUsersThreshold": UNIQUE_USERS
      }'
    

    Remplacez UNIQUE_USERS par une valeur entière qui représente le nombre minimal d'utilisateurs uniques qui doivent saisir une requête de recherche donnée avant qu'elle puisse être renvoyée en tant que suggestion de saisie semi-automatique. Le nombre est cumulé sur une période glissante de plusieurs mois. La valeur par défaut est 3.

Mettre à jour les annotations des champs pouvant être complétés dans le schéma

Pour activer la saisie semi-automatique pour les champs du schéma de données structurées, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page Applications d'IA.

    AI Applications

  2. Cliquez sur le nom de l'application que vous souhaitez modifier. Il doit utiliser des données structurées.

  3. Cliquez sur Data (Données).

  4. Cliquez sur l'onglet Schéma.

  5. Cliquez sur Modifier pour sélectionner les champs de schéma à marquer comme completable.

  6. Cliquez sur Enregistrer pour enregistrer les configurations de champ modifiées. Il faut environ une journée pour générer et renvoyer ces suggestions.

Envoyer des requêtes de saisie semi-automatique

Les exemples suivants montrent comment envoyer des requêtes de saisie semi-automatique.

REST

Pour envoyer une requête de saisie semi-automatique à l'aide de l'API, procédez comme suit :

  1. Trouvez l'ID de votre data store. Si vous disposez déjà de l'ID de votre data store, passez à l'étape suivante.

    1. Dans la console Google Cloud , accédez à la page Applications d'IA, puis cliquez sur Data stores dans le menu de navigation.

      Accéder à la page "Data stores"

    2. Cliquez sur le nom de votre data store.

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

  2. Appelez la méthode dataStores.completeQuery.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID du data store associé à votre application.

    • QUERY_STRING : entrée de saisie semi-automatique utilisée pour récupérer les suggestions.

Envoyer une requête de saisie semi-automatique à un autre modèle

Pour envoyer une requête de saisie semi-automatique avec un autre modèle de suggestions de requêtes, procédez comme suit :

  1. Trouvez l'ID de votre data store. Si vous disposez déjà de l'ID de votre data store, passez à l'étape suivante.

    1. Dans la console Google Cloud , accédez à la page Applications d'IA, puis cliquez sur Data stores dans le menu de navigation.

      Accéder à la page "Data stores"

    2. Cliquez sur le nom de votre data store.

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

  2. Appelez la méthode dataStores.completeQuery.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING&query_model=QUERY_SUGGESTIONS_MODEL"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID unique du data store associé à votre application.

    • QUERY_STRING : entrée de saisie semi-automatique utilisée pour récupérer les suggestions.

    • AUTOCOMPLETE_MODEL : données de saisie semi-automatique

    • QUERY_SUGGESTIONS_MODEL : modèle de suggestions de requêtes à utiliser pour la requête : document, document-completable, search-history ou user-event. Pour les données de santé, utilisez healthcare-default.

C#

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

Pour vous authentifier auprès des applications d'IA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

using Google.Cloud.DiscoveryEngine.V1;

public sealed partial class GeneratedCompletionServiceClientSnippets
{
    /// <summary>Snippet for CompleteQuery</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 CompleteQueryRequestObject()
    {
        // Create client
        CompletionServiceClient completionServiceClient = CompletionServiceClient.Create();
        // Initialize request argument(s)
        CompleteQueryRequest request = new CompleteQueryRequest
        {
            DataStoreAsDataStoreName = DataStoreName.FromProjectLocationDataStore("[PROJECT]", "[LOCATION]", "[DATA_STORE]"),
            Query = "",
            QueryModel = "",
            UserPseudoId = "",
            IncludeTailSuggestions = false,
        };
        // Make the request
        CompleteQueryResponse response = completionServiceClient.CompleteQuery(request);
    }
}

Go

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

Pour vous authentifier auprès des applications d'IA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.


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

	req := &discoveryenginepb.CompleteQueryRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#CompleteQueryRequest.
	}
	resp, err := c.CompleteQuery(ctx, req)
	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 AI Applications Java.

Pour vous authentifier auprès des applications d'IA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

import com.google.cloud.discoveryengine.v1.CompleteQueryRequest;
import com.google.cloud.discoveryengine.v1.CompleteQueryResponse;
import com.google.cloud.discoveryengine.v1.CompletionServiceClient;
import com.google.cloud.discoveryengine.v1.DataStoreName;

public class SyncCompleteQuery {

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

  public static void syncCompleteQuery() 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 (CompletionServiceClient completionServiceClient = CompletionServiceClient.create()) {
      CompleteQueryRequest request =
          CompleteQueryRequest.newBuilder()
              .setDataStore(
                  DataStoreName.ofProjectLocationDataStoreName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]")
                      .toString())
              .setQuery("query107944136")
              .setQueryModel("queryModel-184930495")
              .setUserPseudoId("userPseudoId-1155274652")
              .setIncludeTailSuggestions(true)
              .build();
      CompleteQueryResponse response = completionServiceClient.completeQuery(request);
    }
  }
}

Node.js

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

Pour vous authentifier auprès des applications d'IA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * 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 data store resource name for which the completion is
 *  performed, such as
 *  `projects/* /locations/global/collections/default_collection/dataStores/default_data_store`.
 */
// const dataStore = 'abc123'
/**
 *  Required. The typeahead input used to fetch suggestions. Maximum length is
 *  128 characters.
 */
// const query = 'abc123'
/**
 *  Specifies the autocomplete data model. This overrides any model specified
 *  in the Configuration > Autocomplete section of the Cloud console. Currently
 *  supported values:
 *  * `document` - Using suggestions generated from user-imported documents.
 *  * `search-history` - Using suggestions generated from the past history of
 *  SearchService.Search google.cloud.discoveryengine.v1.SearchService.Search 
 *  API calls. Do not use it when there is no traffic for Search API.
 *  * `user-event` - Using suggestions generated from user-imported search
 *  events.
 *  * `document-completable` - Using suggestions taken directly from
 *  user-imported document fields marked as completable.
 *  Default values:
 *  * `document` is the default model for regular dataStores.
 *  * `search-history` is the default model for site search dataStores.
 */
// const queryModel = 'abc123'
/**
 *  A unique identifier for tracking visitors. For example, this could be
 *  implemented with an HTTP cookie, which should be able to uniquely identify
 *  a visitor on a single device. This unique identifier should not change if
 *  the visitor logs in or out of the website.
 *  This field should NOT have a fixed value such as `unknown_visitor`.
 *  This should be the same identifier as
 *  UserEvent.user_pseudo_id google.cloud.discoveryengine.v1.UserEvent.user_pseudo_id 
 *  and
 *  SearchRequest.user_pseudo_id google.cloud.discoveryengine.v1.SearchRequest.user_pseudo_id.
 *  The field must be a UTF-8 encoded string with a length limit of 128
 *  characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
 */
// const userPseudoId = 'abc123'
/**
 *  Indicates if tail suggestions should be returned if there are no
 *  suggestions that match the full query. Even if set to true, if there are
 *  suggestions that match the full query, those are returned and no
 *  tail suggestions are returned.
 */
// const includeTailSuggestions = true

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

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

async function callCompleteQuery() {
  // Construct request
  const request = {
    dataStore,
    query,
  };

  // Run request
  const response = await discoveryengineClient.completeQuery(request);
  console.log(response);
}

callCompleteQuery();

Python

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

Pour vous authentifier auprès des applications d'IA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

# 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://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import discoveryengine_v1


def sample_complete_query():
    # Create a client
    client = discoveryengine_v1.CompletionServiceClient()

    # Initialize request argument(s)
    request = discoveryengine_v1.CompleteQueryRequest(
        data_store="data_store_value",
        query="query_value",
    )

    # Make the request
    response = client.complete_query(request=request)

    # Handle the response
    print(response)

Ruby

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

Pour vous authentifier auprès des applications d'IA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

require "google/cloud/discovery_engine/v1"

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

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

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

  # The returned object is of type Google::Cloud::DiscoveryEngine::V1::CompleteQueryResponse.
  p result
end

Utiliser une liste de blocage pour la saisie semi-automatique

Vous pouvez utiliser une liste de blocage pour empêcher des termes spécifiques d'apparaître sous forme de suggestions de saisie automatique.

Prenons l'exemple d'une entreprise pharmaceutique. Si un médicament n'est plus approuvé par la FDA, mais qu'il est mentionné dans des documents de leur data store, ils peuvent souhaiter empêcher ce médicament d'apparaître comme requête suggérée. L'entreprise peut ajouter le nom de ce médicament à une liste de refus pour éviter qu'il ne soit suggéré.

Les limites suivantes s'appliquent :

  • Une liste de blocage par data store
  • L'importation d'une liste de blocage remplace toute liste de blocage existante pour ce data store.
  • Jusqu'à 1 000 termes par liste de refus
  • Les termes ne sont pas sensibles à la casse.
  • Une fois que vous avez importé une liste de refus, il faut un à deux jours pour qu'elle prenne effet.

Chaque entrée de votre liste de refus se compose d'un blockPhrase et d'un matchOperator :

  • blockPhrase : saisissez une chaîne comme terme de votre liste de refus. Les termes ne sont pas sensibles à la casse.
  • matchOperator : accepte les valeurs suivantes :
    • EXACT_MATCH : empêche une correspondance exacte du terme de la liste de blocage d'apparaître comme requête suggérée.
    • CONTAINS : empêche l'affichage de toute suggestion contenant le terme de la liste de blocage.

Voici un exemple de liste de refus avec quatre entrées :

{
    "entries": [
        {"blockPhrase":"Oranges","matchOperator":"CONTAINS"},
        {"blockPhrase":"bAd apples","matchOperator":"EXACT_MATCH"},
        {"blockPhrase":"Cool as A Cucumber","matchOperator":"EXACT_MATCH"},
        {"blockPhrase":"cherry pick","matchOperator":"CONTAINS"}
    ]
}

Avant d'importer une liste de refus, vérifiez que les contrôles d'accès nécessaires sont définis pour l'accès à l'éditeur Discovery Engine.

Les listes de refus peuvent être importées à partir de données JSON locales ou à partir de Cloud Storage. Pour supprimer une liste de refus d'un data store, supprimez-la définitivement.

Importer une liste de refus à partir de données JSON locales

Pour importer une liste de refus à partir d'un fichier JSON local contenant votre liste de refus, procédez comme suit :

  1. Créez votre liste de refus dans un fichier JSON local au format suivant. Assurez-vous que chaque entrée de la liste de refus figure sur une nouvelle ligne, sans saut de ligne.

    {
        "inlineSource": {
            "entries": [
                { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" },
                { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
            ]
        }
    }
  2. Envoyez une requête POST à la méthode suggestionDenyListEntries:import, en fournissant le nom de votre fichier JSON.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data @DENYLIST_FILE \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
    

    Remplacez les éléments suivants :

    • DENYLIST_FILE : chemin d'accès local au fichier JSON contenant les termes de la liste de refus.
    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID du data store associé à votre application.

Une fois votre liste de refus importée, il faut un à deux jours pour que le filtrage des suggestions commence.

Importer une liste de blocage depuis Cloud Storage

Pour importer une liste de refus à partir d'un fichier JSON dans Cloud Storage :

  1. Créez votre liste de refus dans un fichier JSON au format suivant, puis importez-la dans un bucket Cloud Storage. Assurez-vous que chaque entrée de la liste de refus figure sur une nouvelle ligne, sans saut de ligne.

    { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" }
    { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
  2. Créez un fichier JSON local contenant l'objet gcsSource. Utilisez-le pour indiquer l'emplacement de votre fichier de liste de refus dans un bucket Cloud Storage.

    {
        "gcsSource": {
            "inputUris": [ "DENYLIST_STORAGE_LOCATION" ]
        }
    }

    Remplacez DENYLIST_STORAGE_LOCATION par l'emplacement de votre liste de refus dans Cloud Storage. Vous ne pouvez saisir qu'un seul URI. L'URI doit être saisi au format suivant : gs://BUCKET/FILE_PATH.

  3. Envoyez une requête POST à la méthode suggestionDenyListEntries:import, y compris l'objet gcsSource.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data @GCS_SOURCE_FILE \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
    

    Remplacez les éléments suivants :

    • GCS_SOURCE_FILE : chemin d'accès local au fichier contenant l'objet gcsSource qui pointe vers votre liste de refus.
    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID du data store associé à votre application.

Une fois votre liste de refus importée, il faut un à deux jours pour que le filtrage des suggestions commence.

Supprimer définitivement une liste de blocage

Pour supprimer une liste de refus de votre data store, procédez comme suit :

  1. Envoyez une requête POST à la méthode suggestionDenyListEntries:purge.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:purge"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID du data store associé à votre application.

Utiliser une liste importée de suggestions de saisie semi-automatique

Vous pouvez choisir de fournir votre propre liste de suggestions de saisie semi-automatique au lieu d'utiliser celles générées à partir d'un modèle de données de saisie semi-automatique.

Pour la plupart des applications, l'utilisation de suggestions générées à partir de l'un des modèles de données de saisie automatique donne de meilleurs résultats. Toutefois, il peut arriver que les suggestions du modèle ne correspondent pas à vos besoins. Dans ce cas, fournir une liste discrète de suggestions offre une meilleure expérience d'autocomplete à vos utilisateurs.

Par exemple, une petite librairie en ligne importe sa liste de titres de livres en tant que suggestions de saisie semi-automatique. Lorsqu'un client commence à saisir du texte dans la barre de recherche, la suggestion de saisie semi-automatique est toujours un titre de livre de la liste importée. Lorsque la liste de livres change, la librairie supprime la liste actuelle et importe la nouvelle liste. Voici un extrait de la liste :

{"suggestion": "Wuthering Heights", "globalScore": "0.52" },
{"suggestion": "The Time Machine", "globalScore": "0.26" },
{"suggestion": "Nicholas Nickleby", "globalScore": "0.38" },
{"suggestion": "A Little Princess", "globalScore": "0.71" },
{"suggestion": "The Scarlet Letter", "globalScore": "0.32" }

globalScore est un nombre à virgule flottante compris entre 0 et 1 qui est utilisé pour classer la suggestion. Vous pouvez également utiliser un score frequency, qui est un nombre entier supérieur à 1. Le score frequency est utilisé pour classer les suggestions lorsque globalScore n'est pas disponible (défini sur "null").

Configurer et importer des suggestions de saisie semi-automatique

Pour configurer et importer une liste de suggestions de saisie semi-automatique depuis BigQuery, procédez comme suit :

  1. Créez votre liste de suggestions et chargez-la dans une table BigQuery.

    Vous devez au minimum fournir chaque suggestion sous forme de chaîne, ainsi qu'un score global ou une fréquence.

    Utilisez le schéma de tableau suivant pour votre liste de suggestions :

    [
      {
        "description": "The suggestion text",
        "mode": "REQUIRED",
        "name": "suggestion",
        "type": "STRING"
      },
      {
        "description": "Global score of this suggestion. Control how this suggestion would be scored and ranked. Set global score or frequency; not both.",
        "mode": "NULLABLE",
        "name": "globalScore",
        "type": "FLOAT"
      },
      {
        "description": "Frequency of this suggestion. Used to rank suggestions when the global score is not available.",
        "mode": "NULLABLE",
        "name": "frequency",
        "type": "INTEGER"
      }
    ]
    

    Consultez la documentation BigQuery pour savoir comment créer une table BigQuery et y importer votre liste de suggestions de saisie semi-automatique.

  2. Importez la liste depuis BigQuery.

    Envoyez une requête POST à la méthode completionSuggestions:import, y compris l'objet bigquerySource.

    curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_ID" \
     "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:import" \
     -d '{
          "bigquery_source": {"project_id": "PROJECT_ID_SOURCE", "dataset_id": "DATASET_ID", "table_id": "TABLE_ID"}
     }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .
    • DATA_STORE_ID : ID du data store Vertex AI Search.
    • PROJECT_ID_SOURCE : projet contenant l'ensemble de données que vous souhaitez importer.
    • DATASET_ID : ID de l'ensemble de données pour la liste de suggestions que vous souhaitez importer
    • TABLE_ID : ID de la table pour la liste de suggestions que vous souhaitez importer
  3. Facultatif : Notez la valeur name renvoyée et suivez les instructions de la section Obtenir des informations sur une opération de longue durée pour savoir quand l'opération d'importation est terminée.

  4. Si vous n'avez pas activé la saisie semi-automatique pour l'application, suivez la procédure Mettre à jour les paramètres de saisie semi-automatique. Assurez-vous de définir Activer la saisie semi-automatique sur Maintenant.

  5. Patientez quelques jours le temps que l'indexation soit terminée et que les suggestions importées soient disponibles.

Envoyer une requête Autocomplete

Pour envoyer une requête de saisie semi-automatique qui renvoie une suggestion importée au lieu d'une suggestion provenant d'un modèle de saisie semi-automatique :

  1. Suivez la procédure pour envoyer une requête de saisie semi-automatique à un autre modèle et définissez AUTOCOMPLETE_MODEL sur imported-suggestion.

Supprimer la liste des suggestions de saisie semi-automatique importées

Avant d'importer une nouvelle liste de suggestions de saisie semi-automatique, supprimez celle qui existe déjà.

Pour supprimer une liste existante de suggestions de saisie semi-automatique, procédez comme suit :

  1. Envoyez une requête POST à la méthode completionSuggestions:purge.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:purge"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : numéro ou ID de votre projet Google Cloud .

    • DATA_STORE_ID : ID du data store associé à votre application.

Modèle de données de document avancé

Les applications d'IA fournissent un modèle de données avancé pour la saisie semi-automatique. En fonction des documents que vous importez, ce modèle de données génère des suggestions de saisie semi-automatique de haute qualité en exploitant les grands modèles de langage (LLM) de Google.

Cette fonctionnalité n'est pas disponible actuellement. Si vous souhaitez utiliser cette fonctionnalité, contactez l'équipe chargée de votre compte Google Cloud et demandez à être ajouté à la liste d'autorisation.

Le modèle de données de document avancé n'est pas disponible pour la recherche Healthcare ni dans les régions multirégionales des États-Unis et de l'UE.