Otimizar e ocultar recomendações de mídia

Nesta página, explicamos como mudar a posição de classificação das recomendações de mídia retornadas pelo modelo usando controles de veiculação de reforço (também chamados de controles).

Um controle de reforço muda a ordem das recomendações depois que elas são retornadas pelo modelo. Você aplica uma expressão de filtro aos resultados para identificar quais recomendações quer otimizar ou ocultar e depois aplica um valor de otimização entre -1 e +1. Um valor de otimização de +1 dá o maior aumento a uma recomendação, colocando-a na parte superior das recomendações retornadas. Um valor de -1 oculta a recomendação na parte de baixo da lista de recomendações retornadas.

O reforço é um controle de tempo de veiculação. Primeiro, o modelo de recomendações retorna uma lista de recomendações. Usando uma configuração de exibição, o controle de reforço é aplicado a essa lista para ajustar a classificação das recomendações. O controle de otimização não adiciona nem exclui recomendações, mas controla a ordem em que elas são apresentadas ao usuário.

Aumento x filtragem de recomendações

O reforço é um filtro leve. Já o filtro comum para recomendações, descrito em Filtrar recomendações, é um filtro rígido.

Se você aplicar um filtro rígido às recomendações, nunca verá os documentos filtrados. No entanto, com um filtro flexível, você não remove documentos da lista de recomendações. Em vez disso, o filtro é usado para determinar quais documentos devem estar mais acima ou mais abaixo na lista de recomendações retornadas.

Evite sobrecarregar seu modelo de recomendações

Ao aplicar um filtro de otimização ou exclusão, é recomendável usar valores pequenos próximos de zero. Valores próximos a +1 ou -1 provavelmente vão sobrecarregar o modelo de recomendações, de modo que a classificação aplicada por ele não seja refletida na ordem em que o usuário vê as recomendações.

Por exemplo, se você aumentar filmes animados com +1, os usuários só vão ver filmes animados na parte de cima da lista de recomendações. Isso vai empurrar para baixo os filmes não animados que foram altamente recomendados pelo modelo e que talvez não sejam vistos pelo usuário.

Rebaixar x ocultar

Ao rebaixar e ocultar, as recomendações de movimentação vão para posições mais baixas na lista de recomendações retornadas.

No entanto, a rebaixamento é baseada na idade do conteúdo ou se o usuário já assistiu parte dele. Para mais informações sobre o rebaixamento, consulte Rebaixar recomendações de mídia.

O ocultamento se aplica ao conteúdo identificado por um filtro. O filtro pode ser qualquer campo de dados marcado como filtrável no esquema. Para informações gerais sobre filtros de recomendação, incluindo como marcar um campo como filtrável, consulte Filtrar recomendações.

Sobre controles de reforço e configurações de exibição

Cada controle de exibição de reforço é composto por um filtro e um valor de reforço. Por exemplo, um controle aumenta a classificação de filmes com "Natal" no título com um valor de 0.1, e outro diminui a classificação de filmes de terror com um valor de -0.2.

Depois de criar um ou mais controles de reforço, anexe-os a uma configuração de exibição. Quando um app Vertex AI para Pesquisa é criado, uma configuração de serviço padrão também é criada automaticamente. A configuração de exibição é referenciada no momento da exibição para determinar quais resultados o app gera. Além dos controles de aumento, a configuração de exibição pode conter outros tipos de controles, como diversificar e rebaixar.

A configuração de exibição pode ser aplicada quando você chama o método recommend. Todos os controles na configuração de exibição são aplicados às recomendações retornadas pela chamada de método.

Além disso, é possível ter várias configurações de exibição associadas ao app. Isso permite aplicar diferentes conjuntos de controles em diferentes circunstâncias. Por exemplo, se o pedido de recomendação vier da conta de uma criança, aumente a classificação de filmes em categorias adequadas para crianças e diminua a classificação de filmes inadequados. Da mesma forma, se a solicitação vier de uma conta marcada como adulta, aumente os títulos ou categorias populares entre adultos. Ou então, você pode ter configurações de exibição diferentes para locais geográficos distintos e impulsionar o conteúdo de acordo com o que é popular em cada região. Para mais informações sobre configurações de exibição, consulte Criar e gerenciar configurações de exibição de mídia.

Os valores de otimização são cumulativos

Se você tiver anexado vários controles de exibição a uma configuração de exibição, os aumentos e ocultações se tornarão aditivos.

Por exemplo, se você aumentar os filmes infantis animados em 0,3 e os filmes de aventura animados em 0,4, um filme categorizado como aventura infantil animada será aumentado em 0,7.

Da mesma forma, se um filme de terror fosse promovido em 0,2 por um controle e ocultado em -0,3 por outro controle na mesma configuração de exibição, o resultado líquido seria ocultar o filme em -0,1.

A soma dos aumentos pode exceder +1. Por exemplo, se os controles aumentarem os filmes infantis animados em 0,6 e os filmes de aventura animados em 0,5, um filme infantil de aventura animado será aumentado em +1,1.

Exemplos de filtros

Confira alguns exemplos de filtros para recomendações de mídia.

Filtra propriedades de chave comuns

Exemplos de filtros em propriedades de string de chave comuns (category, image_name, image_uri, language, title e uri).

  • Animações para crianças:
    "filter": "categories: ANY(\"animation\") AND categories: ANY(\"children\")"

  • Mídia assustadora:
    "filter": "categories: ANY(\"horror\", \"thriller\", \"crime\")

  • Mídia com o título "Natal":
    "filter": "title: ANY(\"Christmas\")"

  • Mídia em que o primeiro item na matriz images tem o name "beach ball":
    "filter": "images[0].name: ANY(\"beach ball\")"

Filtros em propriedades de chave de mídia

Exemplos de filtros em propriedades de chave de mídia. As propriedades de teclas de mídia começam com media_ e, na sintaxe de filtro, o nome do campo é precedido por media_key_properties.. Para ver uma lista de propriedades de chave de mídia, consulte Esquema predefinido do Google x esquema personalizado.

  • Mídia em que o tipo é audio:
    "filter": "media_key_properties.media_type: ANY(\"audio\")"

  • Mídia em que a matriz hash_tags contém uma string #winter:
    "filter": "media_key_properties.hash_tags: ANY(\"#winter\")"

  • Mídia em que o primeiro elemento da matriz hash_tags é a string #winter:
    "filter": "media_key_properties.hash_tags[0]: ANY(\"#winter\")"

Campos personalizados

Exemplos de filtros em campos personalizados. Para atributos personalizados, adicione o prefixo attributes. ao nome do campo.

  • Você tem um campo de string personalizado, festival, no seu esquema para representar em qual festival de cinema um filme estreou. Para filtrar apenas os filmes que estrearam em Cannes:
    "filter": "attributes.festival: ANY(\"Cannes\")

  • Você tem um campo booleano personalizado, audio_desc, que é verdadeiro quando a mídia inclui uma audiodescrição para espectadores com deficiência visual. Para filtrar mídias com audiodescrição:
    "filter": "attributes.audio_desc: ANY(true)"

Limitações nos campos filtráveis

As seguintes limitações se aplicam aos controles de exibição de reforço:

  • Somente campos de propriedade dos tipos string e booleano podem ser usados em expressões de filtro para aumentar a relevância.

  • Não é possível filtrar campos aninhados em mais de um nível. Por exemplo, é possível filtrar por persons.name, mas não por um campo persons.name.stage, mesmo que ele exista.

  • Os filtros precisam ser correspondências exatas. Isso significa que, nos exemplos, um filme chamado "Christmas Story" ou "CHRISTMAS" não seria promovido.

Antes de começar

  • Verifique se você criou um app e um repositório de dados de recomendações de mídia. Para mais informações, consulte Criar um app e um repositório de dados de recomendações de mídia.

  • Opcional: se você não quiser usar a configuração de exibição padrão, crie uma nova seguindo as etapas de 1 a 5 e 7 em Criar uma configuração de exibição. Se o app estiver em produção, o Google recomenda criar uma configuração de exibição separada para testar os controles de reforço antes de aplicá-los à configuração de exibição de produção.

  • Verifique se todos os campos que você quer usar no controle de otimização estão marcados como Filtráveis no esquema. Para mais informações, consulte Configurar definições de campo. Consulte também Limites de filtragem.

Otimizar ou ocultar recomendações

Este procedimento descreve como criar controles de reforço e anexá-los a uma configuração de exibição.

Depois que os controles forem anexados à configuração de exibição, você poderá especificar a configuração ao chamar o método servingConfigs.recommend. O controle de aumento será usado para influenciar a ordem das recomendações retornadas.

REST

Para criar controles de exibição de reforço e anexá-los a uma configuração de exibição, siga estas etapas:

  1. Encontre o ID do app. Se você já tiver o ID do app, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA.

      Acessar "Apps".

    2. Na página Apps, encontre o nome do app e confira o ID dele na coluna ID.

  2. Encontre o ID do repositório de dados. Se você já tiver o ID do repositório de dados, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA e, no menu de navegação, clique em Repositórios de dados.

      Acesse a página "Repositórios de dados"

    2. Clique no nome do seu repositório de dados.

    3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

  3. Crie um controle de reforço:

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

    Substitua:

    • PROJECT_NUMBER: o número do seu projeto Google Cloud .

    • CONTROL_DISPLAY_NAME: um nome legível para identificar o controle. Precisa ser uma string UTF-8 com um tamanho máximo de 128 caracteres.

    • CONTROL_ID: um identificador exclusivo (em um repositório de dados) para o controle. O ID pode conter letras minúsculas, dígitos, hífens e sublinhados.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.

    • BOOST_VALUE: um número de ponto flutuante no intervalo [-1,1]. Quando o valor é negativo, as recomendações aparecem mais abaixo nos resultados. Quando o valor é positivo, as recomendações são promovidas (aparecem mais acima nos resultados).

    • FILTER: a expressão de filtro que descreve quais documentos serão promovidos ou ocultados. Para informações detalhadas sobre como formular a expressão de filtro, consulte Expressões de filtro.

  4. Repita a etapa 3 para cada controle de otimização que você quer aplicar às suas recomendações. Por exemplo, você pode querer um controle que impulsione filmes infantis, boost-kids, e outro que oculte filmes de terror, bury-horror.

  5. Encontre o ID da configuração de veiculação. Se você já tiver o ID da configuração de veiculação, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA.

      Acessar "Apps".

    2. Na página Apps, clique no nome do app.

    3. Acesse a página Configurações e clique na guia Exibição.

    4. Consiga o ID da configuração de exibição na coluna ID.

  6. Anexe o novo controle de exibição de reforço à configuração de exibição com uma solicitação de atualização usando o método 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"]
    }'
    

    Substitua:

    • CONFIG_ID: o ID da configuração de exibição a que você quer anexar os controles de reforço. Por exemplo, my_app-1234567_id. Consulte a etapa anterior.

    • CONTROL_ID: contém os IDs de um ou mais controles de veiculação de reforço que você quer anexar à configuração de veiculação. Por exemplo, "boost-kids", "bury-horror". É uma matriz de strings. Se você tiver mais de um ID, não se esqueça de usar aspas e vírgulas para separar.

  7. Aguarde alguns minutos para que os resultados entrem em vigor.

  8. Visualize os efeitos do seu controle de otimização. Consulte Receber recomendações de mídia.

Atualizar o controle de otimização

Este procedimento descreve como atualizar um controle de reforço para mudar o valor do reforço ou o filtro.

Depois de testar o controle de reforço, talvez você queira aumentar ou diminuir o reforço. Como alternativa, você pode mudar a string de filtro.

Ao atualizar um valor de reforço ou um filtro, você chama o método engines.controls.patch.

O método patch substitui os valores de boost e filter pelos novos valores que você fornece. Este procedimento mostra como editar os valores de boost (etapa 3) e filter (etapa 4) separadamente. No entanto, se você quiser editar os dois, faça isso com um único comando curl.

REST

Para modificar o valor de reforço do filtro em um controle, siga estas etapas:

  1. Encontre o ID do app. Se você já tiver o ID do app, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA.

      Acessar "Apps".

    2. Na página Apps, encontre o nome do app e confira o ID dele na coluna ID.

  2. Encontre o ID do controle de reforço que você quer atualizar usando o método engines.servingConfigs.get. Se você já tiver o ID, pule para a próxima etapa.

    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"
    

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

  3. Edite o valor de reforço do controle:

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

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

    • CONTROL_ID: o identificador exclusivo do controle de reforço que você quer editar, a parte final do campo name gerado pelo comando GET na etapa 2. Por exemplo, boost-kids.

    • BOOST_VALUE: um número de ponto flutuante no intervalo [-1,1]. Quando o valor é negativo, as recomendações aparecem mais abaixo nos resultados. Quando o valor é positivo, as recomendações são promovidas (aparecem mais acima nos resultados).

  4. Edite o filtro do controle de otimização:

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

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

    • CONTROL_ID: o identificador exclusivo do controle de reforço que você quer editar, a parte final do campo name gerado pelo comando GET na etapa 2.

    • FILTER: a expressão de filtro que descreve quais documentos serão promovidos ou ocultados. Para informações detalhadas sobre como formular a expressão de filtro, consulte Expressões de filtro.

Excluir um controle de reforço

Este procedimento descreve como excluir um controle de reforço. Se você não estiver usando um controle de otimização, a prática recomendada é excluí-lo para não atingir ou exceder a cota do número de controles permitidos.

Ao excluir um controle de reforço, chame o método engines.controls.delete.

Não é possível excluir controles de reforço anexados a uma configuração de veiculação. Se você tentar excluir um controle de reforço, uma mensagem de erro vai informar o nome da configuração de serviço. Em seguida, exclua essa configuração de veiculação ou desvincule o controle dela.

REST

Para excluir um controle de reforço, siga estas etapas:

  1. Encontre o ID do app. Se você já tiver o ID do app, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA.

      Acessar "Apps".

    2. Na página Apps, encontre o nome do app e confira o ID dele na coluna ID.

  2. Encontre o ID do controle de otimização que você quer excluir usando o método engines.servingConfigs.get. Se você já tiver o ID, pule para a próxima etapa.

    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"
    

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

  3. Verifique a saída. Se o controle de reforço estiver anexado a uma configuração de exibição, atualize a configuração para remover o controle que você quer excluir. Consulte Atualizar uma configuração de exibição para remover um controle de reforço.

  4. Execute o seguinte comando curl para excluir um controle de reforço:

    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"
    

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

    • CONTROL_ID: o identificador exclusivo do controle de reforço que você quer excluir, a parte final do campo name gerado pelo comando GET na etapa 2.

    Se você receber uma mensagem de erro informando que o controle está sendo referenciado ativamente por pelo menos uma configuração de exibição, consulte Atualizar uma configuração de exibição para remover um controle de reforço.

Atualizar uma configuração de exibição para remover um controle de reforço

Antes de excluir um controle de reforço, é necessário desanexá-lo de todos os controles de exibição. Para isso, adicione um patch aos controles de exibição para remover o ID do controle de aumento.

Para desvincular controles de reforço de uma configuração de exibição, siga estas etapas:

  1. Para saber quais controles de reforço estão anexados à configuração de exibição, faça uma solicitação engines.servingConfigs.get e consulte o campo boostControlIds na resposta.

    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"
    

    Substitua:

    • PROJECT_ID: o ID do seu Google Cloud projeto.

    • APP_ID: o ID do app Vertex AI para Pesquisa.

    • CONFIG_ID: o ID da configuração de veiculação sobre a qual você quer saber mais.

  2. Para atualizar a configuração de exibição e remover um controle de reforço, use o método 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"]
    }'
    

    Substitua:

    • CONFIG_ID: o ID da configuração de exibição a que você quer anexar os controles de reforço. Por exemplo, my_app-1234567_id. Consulte a etapa anterior.

    • CONTROL_ID: contém os IDs de um ou mais controles de aumento que você quer que a configuração de veiculação tenha. Não inclua os controles de reforço que você quer excluir. É uma matriz de strings. Se você tiver mais de um ID, não se esqueça de usar aspas e vírgulas para separar. Por exemplo, boost-1", "boost-2.