Mettre en avant et masquer des recommandations de contenus multimédias

Cette page explique comment modifier la position des recommandations de contenus multimédias renvoyées par le modèle à l'aide des commandes de diffusion d'amplification (également appelées commandes).

Un contrôle de boost modifie l'ordre des recommandations après que celles-ci ont été renvoyées par le modèle. Vous appliquez une expression de filtre aux résultats pour identifier les recommandations que vous souhaitez booster ou enterrer, puis vous appliquez une valeur de boost comprise entre -1 et +1. Une valeur d'augmentation de +1 donne le plus grand boost à une recommandation, en la plaçant en haut des recommandations renvoyées. Une valeur de -1 enfouit la recommandation en bas de la liste des recommandations renvoyées.

Le boost est un contrôle au moment de la diffusion. Tout d'abord, le modèle de recommandations renvoie une liste de recommandations. À l'aide d'une configuration de diffusion, la commande d'amplification est ensuite appliquée à cette liste pour ajuster le classement des recommandations. Le contrôle de l'amplification n'ajoute ni ne supprime de recommandations, mais il contrôle l'ordre dans lequel elles sont présentées à l'utilisateur.

Recommandations de boost par rapport aux recommandations de filtrage

L'option "Booster" 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 souple, vous ne supprimez pas les documents de la liste des recommandations. Le filtre est plutôt utilisé pour déterminer quels documents 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 -1 sont susceptibles de submerger le modèle de recommandations, de sorte que le classement des recommandations appliqué par le modèle ne se reflète pas dans l'ordre dans lequel l'utilisateur voit les recommandations.

Par exemple, si vous boostez les films d'animation avec un coefficient +1, les utilisateurs ne verront que des films d'animation en haut de la liste des recommandations. Les films non animés qui étaient fortement recommandés par le modèle seront relégués en bas de la liste, où l'utilisateur risque de ne pas les voir.

Rétrograder ou enterrer

La rétrogradation et l'enfouissement déplacent les recommandations vers des positions inférieures dans la liste des recommandations renvoyées.

Toutefois, la rétrogradation est basée sur l'âge du contenu ou sur le fait que l'utilisateur a déjà regardé une partie du contenu. Pour en savoir plus sur la rétrogradation, consultez Rétrograder les recommandations de médias.

L'enfouissement s'applique au contenu identifié 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 Filtrer les recommandations.

À propos des contrôles d'amplification et des configurations de diffusion

Chaque paramètre de diffusion d'amplification est composé d'un filtre et d'une valeur d'amplification. Par exemple, un contrôle d'amplification amplifie les films dont le titre contient le mot "Noël" avec une valeur de 0.1, tandis qu'un autre enfouit les films d'horreur avec une valeur de -0.2.

Après avoir créé un ou plusieurs contrôles d'amplification, 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 contrôles d'amplification, la configuration de diffusion peut contenir d'autres types de contrôles, tels que les contrôles diversify et demote.

La configuration de diffusion peut être appliquée lorsque vous appelez la méthode "recommend". Tous les contrôles de la configuration de diffusion sont ensuite appliqués aux recommandations renvoyées par l'appel de méthode.

De plus, vous pouvez associer plusieurs configurations de diffusion à votre application. Cela vous permet d'appliquer différents ensembles de contrôles dans différentes circonstances. Par exemple, si la demande de recommandation provient d'un compte enfant, mettez en avant les films dans des catégories adaptées aux enfants et masquez les films inappropriés. De même, si la demande provient d'un compte marqué comme adulte, mettez en avant 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 le contenu en fonction de sa popularité régionale. Pour en savoir plus sur les configurations de diffusion, consultez Créer et gérer des configurations de diffusion de contenu multimédia.

Les valeurs d'amélioration sont cumulatives

Si vous avez associé plusieurs contrôles de diffusion à une configuration de diffusion, les boosts et les enfouissements deviennent additifs.

Par exemple, si vous augmentez le boost des films d'animation pour enfants de 0,3 et celui des films d'animation d'aventure de 0,4, un film classé dans les deux catégories bénéficiera d'un boost de 0,7.

De même, si un film d'horreur a été boosté de 0,2 par un contrôle et enterré de -0,3 par un autre contrôle dans la même configuration de diffusion, le résultat net serait d'enterrer le film de -0,1.

La somme des boosts peut dépasser +1. Par exemple, si les commandes ont augmenté les films d'animation pour enfants de 0,6 et les films d'aventure animés de 0,5, un film d'aventure animé pour enfants sera boosté de 1,1.

Exemples de filtres

Voici quelques exemples de filtres pour les recommandations de contenus 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 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\")"

  • Contenu multimédia dont le premier élément du tableau images a la valeur name "beachball" (ballon de plage) :
    "filter": "images[0].name: ANY(\"beach ball\")"

Filtres sur les propriétés clés du contenu multimédia

Exemples de filtres sur les propriétés de clé média. Les propriétés des clés multimédias commencent par media_. Dans la syntaxe du filtre, 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 Schéma prédéfini Google et 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, faites précéder le nom du champ de attributes..

  • Votre schéma comporte un champ de chaîne personnalisé, festival, pour indiquer le festival de cinéma où un film a été présenté pour la première fois. Pour filtrer uniquement les films qui ont été présentés en avant-première à 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 malvoyants. Pour filtrer les contenus multimédias avec audiodescription :
    "filter": "attributes.audio_desc: ANY(true)"

Limites concernant les champs filtrables

Les limites suivantes s'appliquent aux contrôles de diffusion des boosters :

  • Seuls les champs de propriété de type chaîne et booléen peuvent être utilisés dans les expressions de filtre pour l'amplification.

  • Vous ne pouvez pas filtrer les champs imbriqués sur plusieurs niveaux. Par exemple, vous pouvez filtrer sur persons.name, mais pas sur un champ persons.name.stage (même si un tel champ existait).

  • Les filtres doivent correspondre exactement. Cela signifie que dans les exemples, un film intitulé "Christmas Story" ou "CHRISTMAS" ne serait pas boosté.

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 contenus multimé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 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 contrôles d'amplification avant de les appliquer à votre configuration de diffusion en production.

  • Assurez-vous que tous les champs que vous souhaitez utiliser dans votre contrôle d'amplification 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.

Faire remonter ou redescendre les recommandations

Cette procédure explique comment créer des commandes d'amplification et les associer à une configuration de diffusion.

Une fois les contrôles associés à la configuration de diffusion, vous pouvez spécifier la configuration de diffusion lorsque vous appelez la méthode servingConfigs.recommend. Le contrôle de boost sera alors utilisé pour influencer l'ordre des recommandations renvoyées.

REST

Pour créer des contrôles de diffusion boost et les associer à une configuration de diffusion, procédez comme suit :

  1. Trouvez l'ID de votre application. Si vous avez déjà votre ID d'application, passez à l'étape suivante.

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

      Accédez à "Applications".

    2. Sur la page Applications, recherchez le nom de votre application et récupérez son ID dans la colonne ID.

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

  3. Créez un contrôle d'amplification :

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

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de votre projet Google Cloud .

    • CONTROL_DISPLAY_NAME : nom lisible permettant d'identifier le contrôle. Il doit s'agir d'une chaîne UTF-8 d'une longueur maximale de 128 caractères.

    • CONTROL_ID : identifiant unique (dans un datastore) du contrôle. 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 à enterrer. Pour en savoir plus sur la formulation de l'expression de filtre, consultez Expressions de filtre.

  4. Répétez l'étape 3 pour chaque contrôle d'amplification que vous souhaitez appliquer à vos recommandations. Par exemple, vous pouvez définir un contrôle d'amplification qui amplifie les films pour enfants, boost-kids, et un deuxième contrôle qui enfouit les films d'horreur, bury-horror.

  5. Recherchez l'ID de la configuration de l'inférence. Si vous disposez déjà de l'ID de votre configuration de diffusion, passez à l'étape suivante.

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

      Accédez à "Applications".

    2. Sur la page Applications, cliquez sur le nom de votre application.

    3. Accédez à la page Configurations, puis cliquez sur l'onglet Diffusion.

    4. Récupérez l'ID de la configuration de diffusion dans la colonne ID.

  6. Associez la nouvelle commande de diffusion d'amplification à la configuration de diffusion à l'aide d'une requête de mise à jour utilisant 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 contrôles d'amplification (par exemple, my_app-1234567_id). Reportez-vous à l'étape précédente.

    • CONTROL_ID : contient les ID d'un ou plusieurs contrôles de diffusion d'amplification 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 avez plusieurs ID, n'oubliez pas d'utiliser des guillemets et des virgules pour les séparer.

  7. Patientez quelques minutes pour que les résultats soient pris en compte.

  8. Prévisualisez les effets de votre contrôle de l'amplification. Consultez Obtenir des recommandations de contenus multimédias.

Mettre à jour le contrôle du boost

Cette procédure décrit comment modifier un contrôle du boost existant pour changer la valeur du boost ou du filtre.

Après avoir testé le contrôle de l'amplification, vous pouvez constater que vous souhaitez rendre l'amplification plus ou moins forte. 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 PATCH 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 d'amplification du filtre pour un contrôle existant, procédez comme suit :

  1. Trouvez l'ID de votre application. Si vous avez déjà votre ID d'application, passez à l'étape suivante.

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

      Accédez à "Applications".

    2. Sur la page Applications, recherchez le nom de votre application et récupérez son ID dans la colonne ID.

  2. Recherchez l'ID du contrôle d'amplification que vous souhaitez mettre à jour à l'aide de la méthode engines.servingConfigs.get. Si vous avez déjà l'ID, 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .

    • APP_ID : ID de l'application Vertex AI Search.

  3. Modifiez la valeur du boost pour le contrôle :

    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
        }
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .

    • APP_ID : ID de l'application Vertex AI Search.

    • CONTROL_ID : identifiant unique du contrôle d'amplification que vous souhaitez modifier, qui correspond à la dernière partie du champ name généré par la commande GET à 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).

  4. Modifiez le filtre pour le contrôle de l'amplification :

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

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .

    • APP_ID : ID de l'application Vertex AI Search.

    • CONTROL_ID : identifiant unique du contrôle d'amplification que vous souhaitez modifier, qui correspond à la dernière partie du champ name généré par la commande GET à l'étape 2.

    • FILTER : expression de filtre qui décrit les documents à mettre en avant ou à enterrer. Pour en savoir plus sur la formulation de l'expression de filtre, consultez Expressions de filtre.

Supprimer un contrôle d'amplification

Cette procédure explique comment supprimer un contrôle d'amplification. Si vous n'utilisez pas de contrôle d'optimisation, nous vous recommandons de le supprimer afin de ne pas atteindre ni dépasser le quota pour le nombre de contrôles autorisés.

Lorsque vous supprimez un contrôle de boost, vous appelez la méthode engines.controls.delete.

Il est impossible de supprimer les contrôles d'amplification associés à une configuration de diffusion. Si vous essayez de supprimer un contrôle du boost, un message d'erreur vous indique le nom de la configuration de diffusion. Vous devez ensuite supprimer cette configuration de diffusion ou dissocier ce contrôle de la configuration de diffusion.

REST

Pour supprimer un contrôle d'amplification :

  1. Trouvez l'ID de votre application. Si vous avez déjà votre ID d'application, passez à l'étape suivante.

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

      Accédez à "Applications".

    2. Sur la page Applications, recherchez le nom de votre application et récupérez son ID dans la colonne ID.

  2. Recherchez l'ID du contrôle d'amplification que vous souhaitez supprimer à l'aide de la méthode engines.servingConfigs.get. Si vous avez déjà l'ID, 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .

    • APP_ID : ID de l'application Vertex AI Search.

  3. Examinez le résultat. Si la commande d'amplification 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.

  4. Exécutez la commande curl suivante pour supprimer un contrôle d'amplification :

    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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .

    • APP_ID : ID de l'application Vertex AI Search.

    • CONTROL_ID : identifiant unique du contrôle d'amplification que vous souhaitez supprimer, qui correspond à la dernière partie du champ name généré par la commande GET à 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 Mettre à jour une configuration de diffusion pour supprimer un contrôle d'amplification.

Mettre à jour une configuration de diffusion pour supprimer un contrôle d'optimisation

Avant de pouvoir supprimer un contrôle d'amplification, vous devez le dissocier de tous les contrôles de diffusion. Pour ce faire, corrigez les commandes de diffusion afin de supprimer l'ID de la commande d'amplification.

Pour dissocier les contrôles d'amplification d'une configuration de diffusion, procédez comme suit :

  1. Pour savoir quelles commandes d'amplification sont associées à la configuration de diffusion, envoyez une requête engines.servingConfigs.get et examinez le champ boostControlIds 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .

    • APP_ID : ID de l'application Vertex AI Search.

    • CONFIG_ID : ID de la configuration de diffusion pour laquelle vous souhaitez obtenir plus d'informations.

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

    Remplacez les éléments suivants :

    • CONFIG_ID : ID de la configuration de diffusion à laquelle vous souhaitez associer les contrôles d'amplification (par exemple, my_app-1234567_id). Reportez-vous à l'étape précédente.

    • CONTROL_ID : contient les ID d'un ou de plusieurs contrôles d'amplification que vous souhaitez que la configuration de diffusion possède. Veillez à omettre les contrôles d'amplification que vous souhaitez supprimer. Il s'agit d'un tableau de chaînes. Si vous avez plusieurs ID, n'oubliez pas d'utiliser des guillemets et des virgules pour les séparer (par exemple, boost-1", "boost-2).