Filtrare i consigli

Se hai un'app per suggerimenti, puoi utilizzare i campi del documento per filtrare i risultati dei suggerimenti. Questa pagina spiega come utilizzare i campi del documento per filtrare un suggerimento in base a un insieme specifico di documenti. Anche se gli esempi in questa pagina riguardano i consigli sui contenuti multimediali, i principi mostrati qui sono gli stessi per i consigli personalizzati. Per ulteriori informazioni sui suggerimenti per i contenuti multimediali, consulta Introduzione a Vertex AI Search per i contenuti multimediali.

Filtrare i suggerimenti e gli aggiornamenti del datastore

Dopo qualsiasi aggiornamento dell'datastore, dovrai attendere fino a 8 ore per il nuovo addestramento del modello. Questo perché il modello deve conoscere i valori attuali nei metadati del documento, nonché i campi configurati come filtrabili. Devi attendere la propagazione delle modifiche al documento e allo schema. Per i suggerimenti (a differenza della ricerca), il filtro non viene eseguito in tempo reale.

Filtri e impostazioni di diversificazione (solo consigli sui contenuti multimediali)

Oltre ai filtri, anche l'impostazione di diversificazione di un'app influisce sui risultati restituiti in una risposta di suggerimento di contenuti multimediali. Gli effetti dei filtri e della diversificazione vengono combinati. La diversificazione viene eseguita per prima e il filtraggio per secondo.

La combinazione di diversità elevata basata su regole e filtraggio degli attributi basato su categorie spesso genera un output vuoto. Questo perché l'elevata diversità limita l'app a restituire un risultato per ogni categoria.

Ad esempio, vuoi consigliare film basati su Toy Story. Hai impostato il livello di diversità basato su regole su Alto. Poiché il livello di diversità è elevato, anche se molti film potrebbero essere consigliati solo un film (ad esempio WALL·E) nella categoria dei film per bambini. Quando viene applicato il filtro per i film per bambini, viene restituito solo WALL·E come suggerimento.

Per informazioni generali sulla diversità, consulta Diversificare i suggerimenti per i contenuti multimediali.

Prima di iniziare

Assicurati di aver creato un'app di suggerimenti e un datastore. Per ulteriori informazioni, vedi Creare app multimediali o Creare un archivio dati di consigli personalizzati.

Documenti di esempio

Esamina questi documenti multimediali di esempio. Puoi fare riferimento a questi documenti di esempio mentre leggi questa pagina.

{"id":"1","schemaId":"default_schema","structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"88125","schemaId":"default_schema","structData":{"title":"Harry Potter and the Deathly Hallows: Part 2 (2011)","categories":["Action","Adventure","Drama","Fantasy","Mystery","IMAX"],"uri":"http://mytestdomain.movie/content/88125","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"2857","schemaId":"default_schema","structData":{"title":"Yellow Submarine (1968)","categories":["Adventure","Animation","Comedy","Fantasy","Musical"],"uri":"http://mytestdomain.movie/content/2857","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}
{"id":"60069","schemaId":"default_schema","structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069","available_time":"2023-01-01T00:00:00Z","media_type":"movie"}}

Espressioni di filtro

Utilizza le espressioni di filtro per definire i filtri dei consigli.

Sintassi delle espressioni di filtro

Il seguente Extended Backus–Naur form riassume la sintassi dell'espressione di filtro che puoi utilizzare per definire i filtri dei consigli.

  # A single expression or multiple expressions that are joined by "AND" or "OR".
  filter = expression, { " AND " | "OR", expression };
  # An expression can be prefixed with "-" or "NOT" to express a negation.
  expression = [ "-" | "NOT " ],
    # A parenthesized expression
    | "(", expression, ")"
    # A simple expression applying to a textual field.
    # Function "ANY" returns true if the field contains any of the literals.
    textual_field, ":", "ANY", "(", literal, { ",", literal }, ")"
    # OR filter by "available"
    available, ":", "true",
  # A literal is any double-quoted string. You must escape backslash (\) and
  # quote (") characters.
  literal = double-quoted string;
  textual_field = see the tables below;

Limitazioni delle espressioni di filtro

Alle espressioni di filtro per i consigli si applicano le seguenti limitazioni:

  • La profondità degli operatori AND e OR tra parentesi è limitata. Le espressioni logiche nel filtro devono essere in forma normale congiuntiva (CNF). L'espressione logica supportata più complessa può essere un elenco di clausole connesse da AND che contengono solo operatori OR, ad esempio: (... OR ... OR ...) AND (... OR ...) AND (... OR ...)
  • Le espressioni possono essere negate con la parola chiave NOT o con -. Questa opzione funziona solo con le espressioni ANY() con un solo argomento.

  • Le limitazioni available devono essere di primo livello. Non possono essere utilizzati come parte di una clausola OR o di una negazione (NOT). Puoi utilizzare solo available: true. Se ometti questo filtro, i documenti scaduti e quelli non ancora disponibili potrebbero essere restituiti come consigli.

    Il campo available viene mappato alla seguente logica:

    datetime.now >= available_time AND datetime.now <= expire_time

    Se expire_time non è impostato, datetime.now <= expire_time viene risolto in true.

  • Il numero massimo di termini nella clausola AND di primo livello è 20.

  • Una clausola OR può avere fino a 100 argomenti inclusi nelle espressioni ANY(). Se una clausola OR ha più espressioni ANY(), tutti i relativi argomenti vengono conteggiati ai fini di questo limite. Ad esempio, categories: ANY("drama", "comedy") OR categories: ANY("adventure") ha tre argomenti.

Esempi di espressioni di filtro

La seguente tabella mostra esempi di espressioni di filtro valide e non valide. Inoltre, fornisce i motivi per cui gli esempi non validi non sono validi.

Espressione Valido Note
language_code: ANY("en", "fr")
NOT language_code: ANY("en")
NOT language_code: ANY("en", "fr") No Nega un ANY() con più di un argomento.
language_code: ANY("en", "fr") OR categories: ANY("drama")
(language_code: ANY("en") OR language_code: ANY("fr")) AND categories: ANY("drama")
(language_code: ANY("en") AND language_code: ANY("fr")) OR categories: ANY("drama") No Non in forma normale congiuntiva.
(language_code: ANY("en")) AND (available: true)
(language_code: ANY("en")) OR (available: true) No Combina available in un'espressione OR con altre condizioni.

La seguente espressione di filtro filtra i documenti che rientrano nella categoria drammatico o azione, che non sono in inglese e che sono disponibili:

categories: ANY("drama", "action") AND NOT language_code: ANY("en") AND available: true

Limiti di filtraggio

Ogni campo del documento filtrabile consuma una parte di memoria in ciascuno dei tuoi modelli. I seguenti limiti contribuiscono a evitare effetti negativi sul rendimento della pubblicazione:

  • È possibile impostare fino a 10 campi personalizzati come filtrabili nello schema.

    Se durante l'addestramento dell'app vengono trovati più di 10 campi personalizzati, ne vengono utilizzati solo 10.

  • Lo schema può contenere fino a 100.000.000 valori di campi filtrabili.

    Puoi stimare il numero totale di valori dei campi filtrabili nello schema moltiplicando il numero di documenti nello schema per il numero di campi filtrabili. Se superi questi limiti, si verificano le seguenti situazioni:

    • Non puoi impostare campi aggiuntivi come filtrabili.
    • L'addestramento dell'app non riesce.

Filtrare i consigli

Per filtrare i consigli sui contenuti multimediali:

  1. Trova l'ID datastore. Se hai già l'ID del tuo datastore, vai al passaggio successivo.

    1. Nella Google Cloud console, vai alla pagina AI Applications e nel menu di navigazione, fai clic su Datastore.

      Vai alla pagina Datastore

    2. Fai clic sul nome del tuo datastore.

    3. Nella pagina Dati del datastore, recupera l'ID datastore.

  2. Determina il campo o i campi del documento in base ai quali vuoi filtrare. Ad esempio, per i documenti in Prima di iniziare, puoi utilizzare il campo categories come filtro.

  3. Per rendere filtrabile il campo categories:

    1. Nella Google Cloud console, vai alla pagina AI Applications.

      Applicazioni di AI

    2. Fai clic sull'app dei consigli.

    3. Fai clic sulla scheda Schema. Questa scheda mostra le impostazioni correnti dei campi.

    4. Fai clic su Modifica.

    5. Se non è già selezionata, seleziona la casella di controllo Filtro nella riga categorie, quindi fai clic su Salva.

    6. Attendi sei ore per consentire la propagazione della modifica dello schema. Dopo sei ore, puoi procedere al passaggio successivo.

  4. Per ottenere un suggerimento e filtrare in base al campo categories, esegui il seguente codice nella riga di comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d '{
         "userEvent": {
           "eventType": "EVENT_TYPE",
           "userPseudoId": "USER_PSEUDO_ID",
           "documents": {
             "id": "DOCUMENT_ID"
           }
         },
         "params": {
           "returnDocument": true,
           "attributeFilteringSyntax": true,
           "strictFiltering": true
         },
         "filter": "FILTER"
       }' \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/SERVING_CONFIG_ID:recommend"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • DATA_STORE_ID: l'ID del datastore.
    • DOCUMENT_ID: l'ID del documento per cui vuoi visualizzare l'anteprima dei suggerimenti. Utilizza l'ID che hai utilizzato per questo documento al momento dell'importazione dei dati.
    • EVENT_TYPE: il tipo di evento utente. Per i valori di eventType, consulta UserEvent.
    • USER_PSEUDO_ID: una stringa con codifica UTF-8 che funge da identificatore pseudonimizzato univoco che monitora gli utenti. Può avere una lunghezza massima di 128 caratteri. Google consiglia vivamente di utilizzare questo campo perché migliora il rendimento del modello e la qualità della personalizzazione. Puoi utilizzare un cookie HTTP per questo campo, che identifica in modo univoco un visitatore su un singolo dispositivo. Ecco alcuni aspetti importanti da considerare:

      • Questo identificatore non cambia quando il visitatore accede o esce da un sito web.
      • Questo campo non deve essere impostato sullo stesso identificatore per più utenti. In caso contrario, lo stesso ID utente può combinare le cronologie degli eventi di utenti diversi e ridurre la qualità del modello.
      • Questo campo non deve includere informazioni che consentono l'identificazione personale (PII).

      Per ulteriori informazioni, vedi userPseudoId.

    • SERVING_CONFIG_ID: l'ID della configurazione di pubblicazione. L'ID della configurazione di pubblicazione è uguale all'ID motore, quindi utilizza l'ID motore qui.
    • FILTER: un campo di testo che consente di filtrare in base a un insieme specificato di campi, utilizzando la sintassi dell'espressione di filtro. Il valore predefinito è una stringa vuota, il che significa che non viene applicato alcun filtro.

    Ad esempio, supponiamo che tu voglia un consiglio per un evento specifico di riproduzione di contenuti multimediali e che tu voglia filtrare i risultati del consiglio in modo che contengano solo documenti che: (1) appartengono alla categoria Bambini e (2) sono attualmente disponibili. Per farlo, includi le seguenti dichiarazioni nella chiamata:

    • "eventType": "media-play"
    • "filter": "categories: ANY(\"Children\") AND available: true"

    Per ulteriori informazioni, vedi il metodo recommend.

    Fai clic per visualizzare una risposta di esempio.

    Se effettui una richiesta di raccomandazione come quella precedente, puoi aspettarti di ricevere una risposta simile alla seguente. Tieni presente che la risposta include i due documenti con un valore categories di Children e un valore availability_start_time successivo alla data attuale.

    {
    "results": [
      {
        "id":"1",
        "schemaId":"default_schema",
        "structData":{"title":"Toy Story (1995)","categories":["Adventure","Animation","Children","Comedy","Fantasy"],"uri":"http://mytestdomain.movie/content/1",
        "availability_start_time":"2023-01-01T00:00:00Z",
        "media_type":"movie"
        }
      },
      {
        "id":"60069",
        "schemaId":"default_schema",
        "structData":{"title":"WALL·E (2008)","categories":["Adventure","Animation","Children","Romance","Sci-Fi"],"uri":"http://mytestdomain.movie/content/60069",
        "availability_start_time":"2023-01-01T00:00:00Z",
        "media_type":"movie"
        }
      }
    ],
    "attributionToken": "ChMzMDk3NTQ4MzQxOTcxOTE0ODM1GglhZi10ZXN0LTEiDmFmLXRlc3QtMTE0NTE0KAAwBg"
    }