Cette page explique comment modifier le classement des recommandations multimédias renvoyées par le modèle à l'aide des commandes de diffusion de boost (également appelées commandes).
Un contrôle de boost modifie l'ordre des recommandations une fois qu'elles ont été renvoyées par le modèle. Vous appliquez une expression de filtre aux résultats pour identifier les recommandations que vous souhaitez mettre en avant ou enterrer, puis vous appliquez une valeur de boost comprise entre -1 et +1. Une valeur de boost de +1 offre le plus grand coup de pouce à une recommandation, la plaçant en haut des recommandations renvoyées. Une valeur de -1 cache la recommandation en bas de la liste des recommandations renvoyées.
Le boost est un paramètre de diffusion. Tout d'abord, le modèle de recommandations renvoie une liste de recommandations. À l'aide d'une configuration de diffusion, le contrôle de l'amélioration est ensuite appliqué à cette liste pour ajuster le classement des recommandations. Le contrôle de boost n'ajoute ni ne supprime de recommandations, mais il contrôle l'ordre dans lequel elles sont présentées à l'utilisateur.
Différences entre les recommandations de mise en avant et de filtrage
Le boost est un filtre doux. En revanche, le filtre standard pour les recommandations, décrit dans Filtrer les recommandations, est un filtre strict.
Si vous appliquez un filtre strict aux recommandations, vous ne verrez jamais les documents filtrés. Toutefois, avec un filtre léger, vous ne supprimez pas les documents de la liste de recommandations. Le filtre permet plutôt de déterminer les documents qui doivent être placés plus haut ou plus bas dans la liste des recommandations renvoyées.
Éviter de surcharger votre modèle de recommandations
Lorsque vous appliquez un filtre d'amélioration ou d'enfouissement, nous vous recommandons d'utiliser de petites valeurs proches de zéro. Les valeurs proches de +1 ou de -1 risquent d'écraser le modèle de recommandations, de sorte que le classement des recommandations appliqué par le modèle ne soit pas reflété dans l'ordre dans lequel l'utilisateur les voit.
Par exemple, si vous boostez les films d'animation avec +1, les utilisateurs ne verront que des films d'animation en haut de la liste des recommandations. Les films non animés fortement recommandés par le modèle seront alors relégués en bas de la liste, où l'utilisateur risque de ne pas les voir.
Déclassement par rapport à l'enfouissement
La rétrogradation et l'enfouissement déplacent les recommandations vers des positions inférieures dans la liste des recommandations renvoyées par rapport à celles qu'elles occuperaient autrement.
Toutefois, la dégradation est basée sur l'ancienneté du contenu ou sur le fait que l'utilisateur a déjà regardé certains des contenus. Pour en savoir plus sur la rétrogradation, consultez Rétrograder les recommandations de médias.
Le masquage s'applique aux contenus identifiés par un filtre. Le filtre peut être n'importe quel champ de données marqué comme filtrable dans le schéma. Pour obtenir des informations générales sur les filtres de recommandation, y compris sur la façon de marquer un champ comme filtrable, consultez Recommandations de filtre.
À propos des commandes de boost et des configurations de diffusion
Chaque commande de diffusion de boost se compose d'un filtre et d'une valeur de boost. Par exemple, un contrôle de boost met en avant les films avec "Noël" dans le titre avec une valeur de 0.1
et un autre masque les films d'horreur avec une valeur de -0.2
.
Après avoir créé une ou plusieurs commandes de boost, vous les associez à une configuration de diffusion. Lorsqu'une application Vertex AI Search est créée, une configuration de diffusion par défaut est également créée automatiquement. La configuration de diffusion est référencée au moment de la diffusion pour déterminer les résultats générés par l'application. En plus des commandes de boost, la configuration de diffusion peut contenir d'autres types de commandes, telles que les commandes de diversification et de dégradation.
La configuration de diffusion peut être appliquée lorsque vous appelez la méthode recommend. Toutes les commandes de la configuration de diffusion sont ensuite appliquées aux recommandations renvoyées par l'appel de méthode.
De plus, vous pouvez associer plusieurs configurations de diffusion à votre application. Vous pouvez ainsi appliquer différents ensembles de commandes dans différentes circonstances. Par exemple, si la demande de recommandation provient du compte d'un enfant, mettez en avant les films appartenant aux catégories adaptées aux enfants et masquez les films inappropriés. De même, si la requête provient d'un compte marqué comme réservé aux adultes, boostez les titres ou les catégories populaires auprès des adultes. Vous pouvez également choisir d'avoir différentes configurations de diffusion pour différentes zones géographiques et de mettre en avant les contenus en fonction de leur popularité régionale. Pour en savoir plus sur les configurations de diffusion, consultez Créer et gérer des configurations de diffusion multimédia.
Les valeurs d'amélioration sont additives
Si vous avez associé plusieurs commandes de diffusion à une configuration de diffusion, les boosts et les masquages deviennent additifs.
Par exemple, si vous augmentez le poids des films d'animation pour enfants de 0,3 et celui des films d'aventure d'animation de 0,4, un film classé comme film d'aventure d'animation pour enfants sera mis en avant de 0,7.
De même, si un film d'horreur a été mis en avant de 0,2 par un paramètre et enterré de -0,3 par un autre paramètre dans la même configuration de diffusion, le résultat net sera de l'enterrer de -0,1.
La somme des bonus peut dépasser +1. Par exemple, si les commandes ont augmenté de 0,6 point les films d'animation pour enfants et de 0,5 point les films d'aventure d'animation, un film d'aventure d'animation pour enfants sera augmenté de 1,1 point.
Exemples de filtres
Voici quelques exemples de filtres pour les recommandations multimédias.
Filtres sur les propriétés de clé courantes
Exemples de filtres sur les propriétés de chaîne de clé courantes (category
, image_name
, image_uri
, language
, title
et uri
).
Animations pour les enfants:
"filter": "categories: ANY(\"animation\") AND categories: ANY(\"children\")"
Contenus effrayants:
"filter": "categories: ANY(\"horror\", \"thriller\", \"crime\")
Contenus multimédias dont le titre est "Noël":
"filter": "title: ANY(\"Christmas\")"
Contenus multimédias dont le premier élément du tableau
images
a lename
"ballon de plage":
"filter": "images[0].name: ANY(\"beach ball\")"
Filtres sur les propriétés de clé multimédia
Exemples de filtres sur les propriétés de clé multimédia. Les propriétés de clé multimédia commencent par media_
. Dans la syntaxe de filtrage, le nom du champ est précédé de media_key_properties.
. Pour obtenir la liste des propriétés de clé multimédia, consultez la section Schéma prédéfini Google par rapport au schéma personnalisé.
Contenu multimédia dont le type est
audio
:
"filter": "media_key_properties.media_type: ANY(\"audio\")"
Contenu multimédia dont le tableau "hash_tags" contient une chaîne
#winter
:
"filter": "media_key_properties.hash_tags: ANY(\"#winter\")"
Contenu multimédia dont le premier élément du tableau "hash_tags" est la chaîne
#winter
:
"filter": "media_key_properties.hash_tags[0]: ANY(\"#winter\")"
Champs personnalisés
Exemples de filtres sur des champs personnalisés. Pour les attributs personnalisés, ajoutez le préfixe attributes.
au nom du champ.
Vous avez un champ de chaîne personnalisé,
festival
, dans votre schéma pour représenter le festival de cinéma où un film a été présenté en première. Pour filtrer uniquement les films dont la première a eu lieu à Cannes:
"filter": "attributes.festival: ANY(\"Cannes\")
Vous disposez d'un champ booléen personnalisé,
audio_desc
, qui est défini sur "true" lorsque le contenu multimédia inclut une description audio pour les spectateurs déficients visuels. Pour filtrer les contenus multimédias avec une description audio:
"filter": "attributes.audio_desc: ANY(true)"
Limites applicables aux champs filtrables
Les limites suivantes s'appliquent aux contrôles de diffusion optimisée:
Seuls les champs de propriété de type chaîne et booléen peuvent être utilisés dans les expressions de filtre pour le boost.
Vous ne pouvez pas filtrer les champs imbriqués sur plusieurs niveaux. Par exemple, vous pouvez filtrer sur
persons.name
, mais vous ne pouvez pas filtrer sur un champpersons.name.stage
(même si un tel champ existait).Les filtres doivent être des correspondances exactes. Cela signifie que dans les exemples, un film intitulé "
Christmas Story
" ou "CHRISTMAS
" ne sera pas mis en avant.
Avant de commencer
Assurez-vous d'avoir créé une application et un data store de recommandations de contenus multimédias. Pour en savoir plus, consultez Créer une application de recommandations de médias et un datastore.
Facultatif: Si vous ne souhaitez pas utiliser la configuration de diffusion par défaut, créez-en une en suivant les étapes 1 à 5 et 7 de la section Créer une configuration de diffusion. Si votre application est en production, Google vous recommande de créer une configuration de diffusion distincte pour tester les commandes de boost avant de les appliquer à votre configuration de diffusion en production.
Assurez-vous que tous les champs que vous souhaitez utiliser dans votre commande de boost sont marqués comme Filtrables dans le schéma. Pour en savoir plus, consultez Configurer les paramètres des champs. Consultez également la section Limites de filtrage.
Mettre en avant ou masquer des recommandations
Cette procédure explique comment créer des commandes de boost et les associer à une configuration de diffusion.
Une fois les commandes associées à la configuration de diffusion, vous pouvez spécifier la configuration de diffusion lorsque vous appelez la méthode servingConfigs.recommend
. Le contrôle de l'amélioration sera alors utilisé pour influencer l'ordre des recommandations renvoyées.
REST
Pour créer des commandes de diffusion optimisée et les associer à une configuration de diffusion, procédez comme suit:
Recherchez votre ID d'application. Si vous disposez déjà de votre ID d'application, passez à l'étape suivante.
Dans la console Google Cloud, accédez à la page Agent Builder.
Sur la page Applications, recherchez le nom de votre application et obtenez son ID dans la colonne ID.
Recherchez l'ID de votre data store. Si vous disposez déjà de l'ID de votre data store, passez à l'étape suivante.
Dans la console Google Cloud, accédez à la page Agent Builder et cliquez sur Data Stores dans le menu de navigation.
Cliquez sur le nom de votre data store.
Sur la page Données de votre data store, obtenez l'ID du data store.
Créez une commande de boost:
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_NUMBER" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID/controls?controlId=CONTROL_ID" \ -d '{ "displayName": "CONTROL_DISPLAY_NAME", "solutionType": "SOLUTION_TYPE_RECOMMENDATION", "boostAction": { "dataStore": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/dataStores/DATA_STORE_ID", "boost" : BOOST_VALUE, "filter": "FILTER" } }'
PROJECT_NUMBER
: numéro de votre projet Google Cloud.CONTROL_DISPLAY_NAME
: nom lisible permettant d'identifier le contrôle. Doit être une chaîne UTF-8 d'une longueur maximale de 128 caractères.CONTROL_ID
: identifiant unique (dans un datastore) de la commande. L'ID peut contenir des lettres minuscules, des chiffres, des traits d'union et des traits de soulignement.APP_ID
: ID de l'application Vertex AI Search.DATA_STORE_ID
: ID du data store Vertex AI Search.BOOST_VALUE
: nombre à virgule flottante compris dans la plage [-1,1]. Lorsque la valeur est négative, les recommandations apparaissent plus bas dans les résultats. Lorsque la valeur est positive, les recommandations sont mises en avant (elles apparaissent plus haut dans les résultats).FILTER
: expression de filtre qui décrit les documents à mettre en avant ou à masquer. Pour en savoir plus sur la formulation de l'expression de filtre, consultez la section Expressions de filtre.
Répétez l'étape 3 pour chaque commande de boost que vous souhaitez appliquer à vos recommandations. Par exemple, vous pouvez définir un contrôle de boost qui met en avant les films pour enfants (
boost-kids
) et un deuxième contrôle qui masque les films d'horreur (bury-horror
).Recherchez l'ID de la configuration de la mise en service. Si vous disposez déjà de votre ID de configuration de diffusion, passez à l'étape suivante.
Dans la console Google Cloud, accédez à la page Agent Builder.
Sur la page Applications, cliquez sur le nom de votre application.
Accédez à la page Configurations, puis cliquez sur l'onglet Diffusion.
Obtenez l'ID de configuration de diffusion dans la colonne ID.
Associez la nouvelle commande de diffusion boostée à la configuration de diffusion avec une requête de mise à jour à l'aide de la méthode
engines.servingConfigs.patch
.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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/CONFIG_ID?update_mask=boost_control_ids" \ -d '{ "boostControlIds": ["CONTROL_ID"] }'
Remplacez les éléments suivants :
CONFIG_ID
: ID de la configuration de diffusion à laquelle vous souhaitez associer les commandes de boost (par exemple,my_app-1234567_id
). Reportez-vous à l'étape précédente.CONTROL_ID
: contient les ID d'un ou de plusieurs des contrôles de diffusion de boost que vous souhaitez associer à la configuration de diffusion (par exemple,"boost-kids", "bury-horror"
). Il s'agit d'un tableau de chaînes. Si vous disposez de plusieurs ID, n'oubliez pas d'utiliser des guillemets et des virgules pour les séparer.
Patientez quelques minutes pour que les résultats soient pris en compte.
Prévisualisez les effets de votre commande de boost. Consultez Obtenir des recommandations multimédias.
Mettre à jour le contrôle de la poussée
Cette procédure décrit comment mettre à jour un contrôle de boost existant pour modifier la valeur du boost ou du filtre.
Après avoir testé le contrôle de l'optimisation, vous pouvez décider d'augmenter ou de réduire l'intensité de l'optimisation. Vous pouvez également modifier la chaîne de filtre.
Lorsque vous mettez à jour une valeur ou un filtre de boost, vous appelez la méthode engines.controls.patch
.
La méthode de correctif remplace les valeurs de boost
et filter
par les nouvelles valeurs que vous fournissez. Cette procédure montre comment modifier séparément la valeur boost
(étape 3) et la valeur filter
(étape 4). Toutefois, si vous souhaitez modifier les deux, vous pouvez le faire en une seule commande curl.
REST
Pour modifier la valeur de boost du filtre pour une commande existante, procédez comme suit:
Recherchez votre ID d'application. Si vous disposez déjà de votre ID d'application, passez à l'étape suivante.
Dans la console Google Cloud, accédez à la page Agent Builder.
Sur la page Applications, recherchez le nom de votre application et obtenez son ID dans la colonne ID.
Recherchez l'ID de la commande de boost que vous souhaitez mettre à jour à l'aide de la méthode
engines.servingConfigs.get
. Si vous disposez déjà de la pièce d'identité, passez à l'étape suivante.curl -X GET \ -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/engines/APP_ID/controls"
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search.
Modifiez la valeur de boost pour la commande:
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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls/CONTROL_ID?update_mask=boost_action.boost" \ -d '{ "name": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls/CONTROL_ID", "boostAction": { "boost": BOOST_VALUE } }'
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search.CONTROL_ID
: identifiant unique de la commande de boost que vous souhaitez modifier, dernière partie du champname
généré par la commandeGET
à l'étape 2. Par exemple,boost-kids
.BOOST_VALUE
: nombre à virgule flottante compris dans la plage [-1,1]. Lorsque la valeur est négative, les recommandations apparaissent plus bas dans les résultats. Lorsque la valeur est positive, les recommandations sont mises en avant (elles apparaissent plus haut dans les résultats).
Modifiez le filtre pour la commande de boost:
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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls/CONTROL_ID?update_mask=boost_action.filter" \ -d '{ "name": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/controls/CONTROL_ID", "boostAction": { "filter": "FILTER" } }'
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search.CONTROL_ID
: identifiant unique de la commande de boost que vous souhaitez modifier, dernière partie du champname
généré par la commandeGET
à l'étape 2.FILTER
: expression de filtre qui décrit les documents à mettre en avant ou à masquer. Pour en savoir plus sur la formulation de l'expression de filtre, consultez la section Expressions de filtre.
Supprimer un contrôle de boost
Cette procédure explique comment supprimer un contrôle de boost. Si vous n'utilisez pas de contrôle de boost, nous vous recommandons de le supprimer afin de ne pas atteindre ni dépasser le quota du nombre de commandes autorisé.
Lorsque vous supprimez un contrôle de boost, vous appelez la méthode engines.controls.delete
.
Les commandes de boost associées à une configuration de diffusion ne peuvent pas être supprimées. Si vous essayez de supprimer un contrôle de boost, un message d'erreur vous indique le nom de la configuration de diffusion. Vous devez ensuite supprimer cette configuration de diffusion ou détacher cette commande de la configuration de diffusion.
REST
Pour supprimer un contrôle de boost, procédez comme suit:
Recherchez votre ID d'application. Si vous disposez déjà de votre ID d'application, passez à l'étape suivante.
Dans la console Google Cloud, accédez à la page Agent Builder.
Sur la page Applications, recherchez le nom de votre application et obtenez son ID dans la colonne ID.
Recherchez l'ID de la commande de boost que vous souhaitez supprimer à l'aide de la méthode
engines.servingConfigs.get
. Si vous disposez déjà de la pièce d'identité, passez à l'étape suivante.curl -X GET \ -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/engines/APP_ID/controls"
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search.
Examinez le résultat. Si la commande de boost est associée à une configuration de diffusion, mettez à jour la configuration de diffusion pour supprimer la commande que vous souhaitez supprimer. Consultez Mettre à jour une configuration de diffusion pour supprimer un contrôle de boost.
Exécutez la commande curl suivante pour supprimer un contrôle de boost:
curl -X DELETE \ -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/engines/APP_ID/controls/CONTROL_ID"
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search.CONTROL_ID
: identifiant unique de la commande de boost que vous souhaitez supprimer, dernière partie du champname
généré par la commandeGET
à l'étape 2.
Si vous recevez un message d'erreur indiquant que le contrôle est activement référencé par au moins une configuration de diffusion, consultez Modifier une configuration de diffusion pour supprimer un contrôle de boost.
Modifier une configuration de diffusion pour supprimer un contrôle de boost
Avant de pouvoir supprimer un contrôle de boost, vous devez le dissocier de toutes les commandes de diffusion. Pour ce faire, corrigez les commandes de diffusion afin de supprimer l'ID de la commande de boost.
Pour dissocier les commandes de boost d'une configuration de diffusion, procédez comme suit:
Pour savoir quelles commandes de boost sont associées à la configuration de diffusion, effectuez une requête
engines.servingConfigs.get
et examinez le champboostControlIds
dans la réponse.curl -X GET \ -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/engines/APP_ID/servingConfigs/CONFIG_ID"
PROJECT_ID
: ID de votre projet Google CloudAPP_ID
: ID de l'application Vertex AI Search.CONFIG_ID
: ID de la configuration de diffusion pour laquelle vous souhaitez en savoir plus.
Pour mettre à jour la configuration de diffusion afin de supprimer un contrôle de boost, utilisez la méthode
engines.servingConfigs.patch
.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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/CONFIG_ID?update_mask=boost_control_ids" \ -d '{ "boostControlIds": ["CONTROL_ID"] }'
CONFIG_ID
: ID de la configuration de diffusion à laquelle vous souhaitez associer les commandes de boost (par exemple,my_app-1234567_id
). Reportez-vous à l'étape précédente.CONTROL_ID
: contient les ID d'une ou de plusieurs commandes de boost que vous souhaitez que la configuration de diffusion contienne. Veillez à omettre les commandes de boost que vous souhaitez supprimer. Il s'agit d'un tableau de chaînes. Si vous possédez plusieurs ID, n'oubliez pas d'utiliser des guillemets et des virgules pour les séparer (par exemple,boost-1", "boost-2
).