Cette page explique comment savoir si les différentes métriques de vos données multimédias respectent leurs seuils d'exigence.
À propos de la vérification de la qualité des données multimédias
Étant donné que les événements utilisateur récents sont très importants pour les recommandations multimédias, vous devez vérifier régulièrement la qualité de vos données ingérées et de vos événements utilisateur. Pour ce faire, consultez l'onglet Optimisation de votre application de recommandations de contenus multimédias afin de déterminer les améliorations que vous pouvez apporter à vos données afin d'optimiser les recommandations de meilleure qualité.
Si le seuil d'une métrique n'est pas atteint, elle est associée à un état d'avertissement. Vous devez ensuite examiner la métrique et sa description pour déterminer l'action à entreprendre pour améliorer la qualité de vos contenus multimédias.
Tous les modèles et objectifs doivent atteindre les seuils de la métrique Qualité générale. Certains modèles et objectifs présentent des métriques et des seuils de qualité spécifiques à l'application supplémentaires. Les métriques de qualité générales sont les mêmes pour toutes les applications utilisant le même datastore, mais les métriques de qualité spécifiques à l'application varient en fonction du modèle et des objectifs de l'application.
Pour en savoir plus sur les modèles et les objectifs de recommandation, consultez la section À propos des types de recommandations pour les applications multimédias.
Vérifier la qualité des données
Pour vérifier la qualité des données de vos recommandations multimédias, procédez comme suit:
Dans la console Google Cloud, accédez à la page Agent Builder.
Cliquez sur le nom de l'application de recommandations multimédias pour laquelle vous souhaitez vérifier la qualité des données.
Dans le menu de navigation, cliquez sur Qualité des données, puis sur l'onglet Optimisation. Cette page indique l'état de différentes métriques pour les données associées à votre application.
Consultez les états Qualité générale et Qualité spécifique à l'application en haut de la page. L'état récapitulatif en haut de la page s'affiche sous forme d'avertissement si une ou plusieurs métriques ont dépassé leur seuil.
Les deux tableaux de métriques (Qualité générale et Qualité spécifique à l'application) listent les métriques individuelles.
Dans les tableaux des métriques, cliquez sur Afficher les détails pour en savoir plus sur les métriques en état d'avertissement.
Facultatif: Si vous souhaitez afficher le seuil d'une métrique conforme, cliquez sur Afficher les détails. Les seuils des métriques conformes ne sont pas affichés dans le tableau des métriques.
Utilisez la méthode requirements:checkRequirement
pour vérifier la qualité de vos données de recommandations multimédias, comme illustré.
Pour vérifier la qualité à partir de la ligne de commande, procédez comme suit:
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.
Exécutez la commande curl suivante pour savoir si vos recommandations multimédias respectent les seuils des métriques générales:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-GFE-SSL: yes" \ -H "X-Goog-User-Project:
PROJECT_ID " \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID /locations/global/requirements:checkRequirement" \ -d '{ "location": "projects/PROJECT_ID /locations/global", "requirementType": "discoveryengine.googleapis.com/media_recs/general/all/warning", "resources": [ { "labels": { "branch_id": "0", "collection_id": "default_collection", "datastore_id": "DATA_STORE_ID ", "location_id": "global", "project_number": "PROJECT_ID " }, "type": "discoveryengine.googleapis.com/Branch" }, { "labels": { "collection_id": "default_collection", "datastore_id": "DATA_STORE_ID ", "location_id": "global", "project_number": "PROJECT_ID " }, "type": "discoveryengine.googleapis.com/DataStore" } ] }'Remplacez les éléments suivants :
PROJECT_ID
: ID de votre Google Cloud projet.DATA_STORE_ID
: ID du data store Vertex AI Search.
Exemple de commande et de résultat
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H "X-GFE-SSL: yes" -H "X-Goog-User-Project: my-project-123" "https://discoveryengine.googleapis.com/v1alpha/projects/my-project-123/locations/global/requirements:checkRequirement" -d '{ "location": "projects/123456/locations/global", "requirementType": "discoveryengine.googleapis.com/media_recs/general/all/warning", "resources": [ { "labels": { "branch_id": "0", "collection_id": "default_collection", "datastore_id": "my-data-store", "location_id": "global", "project_number": "123456" }, "type": "discoveryengine.googleapis.com/Branch" }, { "labels": { "collection_id": "default_collection", "datastore_id": "my-data-store", "location_id": "global", "project_number": "123456" }, "type": "discoveryengine.googleapis.com/DataStore" } ] }'
{ "requirement": { "type": "discoveryengine.googleapis.com/media_recs/general/all/warning", "displayName": "Warning level requirements for all models and all business objectives.", "description": "Requirements for the media recommendations model that will result in performance issue if not met for all media recommendations models and all business objectives.", "condition": { "expression": "doc_with_same_title_percentage \u003c doc_with_same_title_percentage_threshold && most_common_visitor_id_percentage \u003c most_common_visitor_id_percentage_threshold && short_term_unjoined_events_percentage \u003c short_term_unjoined_events_percentage_threshold && long_term_unjoined_events_percentage \u003c long_term_unjoined_events_percentage_threshold" }, "metricBindings": [ { "variableId": "doc_with_same_title_percentage", "resourceType": "discoveryengine.googleapis.com/Branch", "metricFilter": "metric.type = 'discoveryengine.googleapis.com/branch/documents/items_with_same_title' AND metric.labels.is_percentage = 'True' AND resource.labels.project_number = '123456' AND resource.labels.branch_id = '0' AND resource.labels.datastore_id = 'my-data-store' AND resource.labels.location_id = 'global' AND resource.labels.collection_id = 'default_collection'", "description": "The percentage of the documents with the same title in a branch.", "category": "Document" }, { "variableId": "most_common_visitor_id_percentage", "resourceType": "discoveryengine.googleapis.com/DataStore", "metricFilter": "metric.type = 'discoveryengine.googleapis.com/branch/datastore/user_events/most_used_visitor_id_events' AND metric.labels.is_percentage = 'True' AND resource.labels.datastore_id = 'my-data-store' AND resource.labels.project_number = '123456' AND resource.labels.location_id = 'global' AND resource.labels.collection_id = 'default_collection'", "description": "The percentage of the events with the same visitor id.", "category": "DataStore" }, { "variableId": "short_term_unjoined_events_percentage", "resourceType": "discoveryengine.googleapis.com/DataStore", "metricFilter": "metric.type = 'discoveryengine.googleapis.com/datastore/user_events/unjoined_events_for_document_ids' AND metric.labels.is_percentage = 'True' AND metric.conditions.time_range = 'WEEK' AND resource.labels.datastore_id = 'my-data-store' AND resource.labels.project_number = '123456' AND resource.labels.location_id = 'global' AND resource.labels.collection_id = 'default_collection'", "description": "The percentage of events refers to a document id that is not in the catalog in the last 7 days.", "category": "DataStore" }, { "variableId": "long_term_unjoined_events_percentage", "resourceType": "discoveryengine.googleapis.com/DataStore", "metricFilter": "metric.type = 'discoveryengine.googleapis.com/datastore/user_events/unjoined_events_for_document_ids' AND metric.labels.is_percentage = 'True' AND metric.conditions.time_range = 'NINETY_DAYS' AND resource.labels.datastore_id = 'my-data-store' AND resource.labels.project_number = '123456' AND resource.labels.location_id = 'global' AND resource.labels.collection_id = 'default_collection'", "description": "The percentage of events refers to a document id that is not in the catalog in the last 90 days.", "category": "DataStore" } ], "thresholdBindings": [ { "variableId": "doc_with_same_title_percentage_threshold", "threshold_values": { "severity": "WARNING", "value": 1.0 } "description": "The threshold for the percentage of the documents with the same title in a branch." }, { "variableId": "most_common_visitor_id_percentage_threshold", "threshold_values": { "severity": "WARNING", "value": 5.0 } "description": "The threshold for the percentage of the events with the same visitor id." }, { "variableId": "short_term_unjoined_events_percentage_threshold", "threshold_values": { "severity": "WARNING", "value": 5.0 } "description": "The threshold for the percentage of the events refers to a document id that is not in the catalog in the last 7 days." }, { "variableId": "long_term_unjoined_events_percentage_threshold", "threshold_values": { "severity": "WARNING", "value": 2.0 } "description": "The threshold for the percentage of the events refers to a document id that is not in the catalog in the last 90 days" } ] }, "result": "WARNING", "requirementCondition": { "expression": "doc_with_same_title_percentage \u003c doc_with_same_title_percentage_threshold && most_common_visitor_id_percentage \u003c most_common_visitor_id_percentage_threshold && short_term_unjoined_events_percentage \u003c short_term_unjoined_events_percentage_threshold && long_term_unjoined_events_percentage \u003c long_term_unjoined_events_percentage_threshold" }, "metricResults": [ { "name": "short_term_unjoined_events_percentage", "value": { "doubleValue": 0 }, "timestamp": "2024-06-06T03:03:13.416900898Z", "unit": "%", "metricType": "discoveryengine.googleapis.com/datastore/user_events/unjoined_events_for_document_ids" }, { "name": "long_term_unjoined_events_percentage", "value": { "doubleValue": 0 }, "timestamp": "2024-06-06T03:03:13.417962744Z", "unit": "%", "metricType": "discoveryengine.googleapis.com/datastore/user_events/unjoined_events_for_document_ids" }, { "name": "most_common_visitor_id_percentage", "value": { "doubleValue": 0.8 }, "timestamp": "2024-06-06T03:03:16.090037135Z", "unit": "%", "metricType": "discoveryengine.googleapis.com/datastore/user_events/most_used_visitor_id_events" }, { "name": "doc_with_same_title_percentage", "value": { "doubleValue": 30.47 }, "timestamp": "2024-06-06T03:03:17.599458357Z", "unit": "%", "metricType": "discoveryengine.googleapis.com/documents/items_with_same_title" } ], "oldestMetricTimestamp": "2024-06-06T03:03:13.416900898Z" }Examinez le résultat:
Recherchez la valeur de
result
:Si la valeur est
SUCCESS
, vos données répondent aux exigences générales. Passez à l'étape 4.Si la valeur est
WARNING
, passez à l'étape b.Si
result
ne s'affiche pas dans la sortie, plusieurs raisons peuvent expliquer cela:L'
PROJECT_ID
ou l'DATA_STORE_ID
dans la requête est incorrect.Certaines valeurs de métrique ne sont pas disponibles. Réessayez dans six heures ou contactez un ingénieur client pour obtenir de l'aide.
Recherchez l'expression (
requirement.Condition.Expression
): si cette expression renvoie la valeur "false", un problème est survenu avec vos données.La valeur des métriques se trouve dans le champ
requirementCondition.metricResults.value
. Les valeurs du seuil d'avertissement se trouvent dans les champsthresholdBindings.thresholdValues
. Les champsdescription
peuvent vous aider à comprendre l'objectif de la métrique.Par exemple, la valeur de
doc_with_same_title_percentage
est30.47
et le seuil d'avertissement pourdoc_with_same_title_percentage_threshold
est1
. Il existe un problème de données, car de nombreux titres du datastore sont identiques. Cela doit être étudié.
Si la combinaison de modèle et d'objectif utilisée pour votre application de recommandations apparaît dans ce tableau, vous devez également appeler la méthode de vérification des exigences, mise à jour avec les valeurs de votre modèle et de votre objectif:
Modèle Objectif MODEL_OBJ
Autres articles susceptibles de vous intéresser Taux de conversion oyml/cvr
Recommandées pour vous Taux de conversion rfy/cvr
Résultats similaires Taux de conversion mlt/cvr
Les plus populaires Taux de conversion mp/cvr
Autres articles susceptibles de vous intéresser Durée de visionnage par session oyml/wdps
Recommandées pour vous Durée de visionnage par session rfy/wdps
Résultats similaires Durée de visionnage par session mlt/wdps
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-GFE-SSL: yes" \ -H "X-Goog-User-Project:
PROJECT_ID " \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID /locations/global/requirements:checkRequirement" \ -d '{ "location": "projects/PROJECT_ID /locations/global", "requirementType": "discoveryengine.googleapis.com/media_recs/MODEL_OBJ /warning", "resources": [ { "labels": { "branch_id": "0", "collection_id": "default_collection", "datastore_id": "DATA_STORE_ID ", "location_id": "global", "project_number": "PROJECT_ID " }, "type": "discoveryengine.googleapis.com/Branch" }, { "labels": { "collection_id": "default_collection", "datastore_id": "DATA_STORE_ID ", "location_id": "global", "project_number": "PROJECT_ID " }, "type": "discoveryengine.googleapis.com/DataStore" } ] }'Remplacez les éléments suivants :
PROJECT_ID
: ID de votre Google Cloud projet.DATA_STORE_ID
: ID du data store Vertex AI Search.MODEL_OBJ
: consultez le tableau précédent pour choisir la valeur appropriée pour votre application de recommandations.
Exemple de commande et de résultat
Cet exemple concerne le modèle "Plus de contenus similaires" et l'objectif "Durée de visionnage" :
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -H "X-GFE-SSL: yes" -H "X-Goog-User-Project: my-project-123" "https://discoveryengine.googleapis.com/v1alpha/projects/my-project-123/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/requirements:checkRequirement" -d '{ "location": "projects/my-project-123/locations/global", "requirementType": "discoveryengine.googleapis.com/media_recs/mlt/wdps/warning", "resources": [ { "labels": { "branch_id": "0", "collection_id": "default_collection", "datastore_id": "my-data-store", "location_id": "global", "project_number": "my-project-123" }, "type": "discoveryengine.googleapis.com/Branch" }, { "labels": { "collection_id": "default_collection", "datastore_id": "my-data-store", "location_id": "global", "project_number": "my-project-123" }, "type": "discoveryengine.googleapis.com/DataStore" } ] }'
{ "requirement": { "type": "discoveryengine.googleapis.com/media_recs/mlt/wdps/warning", "displayName": "Warning level requirements for 'More Like This' models and 'Watch duration per session' business objectives.", "description": "Requirements for the media recommendations model that will result in performance issue if not met for the 'More Like This' model and the 'Watch duration per session' business objective.", "condition": { "expression": "invalid_sequence_percentage \u003c= invalid_sequence_percentage_threshold" }, "metricBindings": [ { "variableId": "invalid_sequence_percentage", "resourceType": "discoveryengine.googleapis.com/DataStore", "metricFilter": "metric.type = 'discoveryengine.googleapis.com/datastore/user_events/invalid_sequences_media_play_media_complete' AND metric.labels.is_percentage = 'True' AND resource.labels.location_id = 'global' AND resource.labels.collection_id = 'default_collection' AND resource.labels.project_number = '123456' AND resource.labels.datastore_id = 'my-data-store'", "description": "The percentage of invalid sequences for media play and media complete events sampled by randomly selected visitor ids.", "category": "DataStore" } ], "thresholdBindings": [ { "variableId": "invalid_sequence_percentage_threshold", "thresholdValues": [ { "severity": "WARNING", "value": 50 } ], "description": "The threshold for the percentage of invalid sequences sampled among all media play and media complete events." } ] }, "result": "SUCCESS", "requirementCondition": { "expression": "invalid_sequence_percentage \u003c= invalid_sequence_percentage_threshold" }, "metricResults": [ { "name": "invalid_sequence_percentage", "value": { "doubleValue": 0 }, "timestamp": "2024-06-06T02:32:00.460056386Z", "unit": "%", "metricType": "discoveryengine.googleapis.com/datastore/user_events/invalid_sequences_media_play_media_complete" } ], "oldestMetricTimestamp": "2024-06-06T02:32:00.460056386Z" }Examinez le résultat:
Recherchez la valeur de
result
:Si la valeur est
SUCCESS
, vos données sont acceptables.Si la valeur est
WARNING
, passez à l'étape b.Si
result
ne s'affiche pas dans la sortie, plusieurs raisons peuvent expliquer cela:L'
PROJECT_ID
ou l'DATA_STORE_ID
dans la requête est incorrect.Certaines valeurs de métrique ne sont pas disponibles. Réessayez dans six heures ou contactez un ingénieur client pour obtenir de l'aide.
Examinez l'expression (
requirement.Condition.Expression
). Si cette expression renvoie la valeur "false", un problème est survenu avec vos données.La valeur des métriques se trouve dans le champ
requirementCondition.metricResults.value
, et les valeurs du seuil d'avertissement dans les champsthresholdBindings.thresholdValues
. Les champsdescription
peuvent vous aider à comprendre l'objectif de la métrique.