Esta página contém informações sobre documentos e repositórios de dados para mídia. Se você estiver usando recomendações de mídia ou pesquisa de mídia, revise os requisitos de esquema para seus documentos e repositórios de dados nesta página antes de fazer upload dos dados.
Visão geral
Um documento é qualquer item que você envia para um repositório de dados do Vertex AI Agent Builder. Para
mídia, um documento geralmente contém informações de metadados sobre
conteúdo de mídia, como vídeos, artigos de notícias, arquivos de música ou
podcasts. O objeto Document
na API captura essas informações de metadados.
O repositório de dados contém uma coleção de documentos enviados por você. Ao
criar um repositório de dados, você especifica que ele vai conter documentos de mídia. Os repositórios de dados para mídia só podem ser anexados a apps de mídia, não a outros tipos de apps, como pesquisa genérica e recomendações. Os repositórios de dados são representados na API pelo recurso DataStore
.
A qualidade dos dados enviados afeta diretamente a qualidade dos resultados fornecidos pelos apps de mídia. Em geral, quanto mais precisas e específicas forem as informações que você fornecer, maior será a qualidade dos resultados.
Os dados enviados para o repositório precisam ser formatados em um esquema JSON específico. Os dados organizados nesse esquema precisam estar em uma tabela do BigQuery, em um ou mais arquivos no Cloud Storage ou em um objeto JSON que pode ser enviado diretamente usando o console do Google Cloud.
Esquema predefinido pelo Google x esquema personalizado
Você tem duas opções para o esquema de dados de mídia:
O esquema predefinido do Google. Se você ainda não criou um esquema para seus dados de mídia, o esquema predefinido do Google é uma boa opção.
Seu próprio esquema. Se os dados já estiverem formatados em um esquema, use seu próprio esquema. Para mais informações, consulte Esquema personalizado abaixo.
Com qualquer uma das opções, é possível adicionar campos ao esquema após a importação inicial de dados. No entanto, com o esquema predefinido do Google, para a importação inicial, os nomes e tipos de campo de dados precisam corresponder exatamente aos das tabelas de campos de documento.
Propriedades principais
As propriedades são usadas para treinar os modelos de pesquisa e recomendações. Os campos de propriedade representam todos os campos do esquema.
As propriedades principais são um conjunto fixo especial de propriedades no esquema do Google. As propriedades principais identificam informações importantes que são usadas para entender o significado semântico dos dados.
Se você usar um esquema personalizado, mapeie seus campos para o maior número possível de propriedades chave. Faça o mapeamento no console do Google Cloud depois de importar os dados. Consulte Criar um repositório de dados de mídia.
Esquema JSON predefinido do Google para Document
Ao usar mídia, os documentos podem usar o esquema JSON predefinido do Google para mídia.
Os documentos são enviados com uma representação de dados JSON ou Struct. Verifique se o JSON ou a estrutura do documento está em conformidade com o esquema JSON a seguir. O esquema JSON usa o JSON Schema 2020-12 para validação. Para saber mais sobre o esquema JSON, consulte a documentação de especificação do esquema JSON em json-schema.org.
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", }, "description": { "type": "string", }, "media_type": { "type": "string", }, "language_code": { "type": "string", }, "categories": { "type": "array", "items": { "type": "string", } }, "uri": { "type": "string", }, "images": { "type": "array", "items": { "type": "object", "properties": { "uri": { "type": "string", }, "name": { "type": "string", } }, } }, "in_languages": { "type": "array", "items": { "type": "string", } }, "country_of_origin": { "type": "string", }, "transcript": { "type": "string", }, "content_index": { "type": "integer", }, "persons": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", }, "role": { "type": "string", }, "custom_role": { "type": "string", }, "rank": { "type": "integer", }, "uri": { "type": "string", } }, "required": ["name", "role"], } }, "organizations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", }, "role": { "type": "string", }, "custom_role": { "type": "string", }, "rank": { "type": "integer", }, "uri": { "type": "string", } }, "required": ["name", "role"], } }, "hash_tags": { "type": "array", "items": { "type": "string", } }, "filter_tags": { "type": "array", "items": { "type": "string", } }, "duration": { "type": "string", }, "content_rating": { "type": "array", "items": { "type": "string", } }, "aggregate_ratings": { "type": "array", "items": { "type": "object", "properties": { "rating_source": { "type": "string", }, "rating_score": { "type": "number", }, "rating_count": { "type": "integer", } }, "required": ["rating_source"], } }, "available_time": { "type": "datetime", }, "expire_time": { "type": "datetime", }, "production_year": { "type": "integer", } }, "required": ["title", "categories", "uri", "available_time"], }
Exemplo de objeto JSON Document
O exemplo a seguir mostra um objeto JSON Document
.
{ "title": "Test document title", "description": "Test document description", "media_type": "sports-game", "in_languages": [ "en-US" ], "language_code": "en-US", "categories": [ "sports > clip", "sports > highlight" ], "uri": "http://www.example.com", "images": [ { "uri": "http://example.com/img1", "name": "image_1" } ], "country_of_origin": "US", "content_index": 0, "transcript": "Test document transcript", "persons": [ { "name": "sports person", "role": "player", "rank": 0, "uri": "http://example.com/person" }, ], "organizations": [ { "name": "sports team", "role": "team", "rank": 0, "uri": "http://example.com/team" }, ], "hash_tags": [ "tag1" ], "filter_tags": [ "filter_tag" ], "duration": "100s", "production_year": 1900, "content_rating": [ "PG-13" ], "aggregate_ratings": [ { "rating_source": "imdb", "rating_score": 4.5, "rating_count": 1250 } ], "available_time": "2022-08-26T23:00:17Z" }
Campos do documento
Esta seção lista os valores de campo que você fornece ao criar documentos para o repositório de dados. Os valores precisam corresponder aos valores usados no banco de dados de documentos interno e refletir com precisão o item representado.
Campos de objeto Document
Os campos a seguir são de nível superior para o objeto Document
. Consulte
estes campos na página de referência Document
.
Nome do campo | Observações |
---|---|
name
|
O nome exclusivo completo do recurso do documento. Obrigatório para todos
os métodos Document , exceto create e
import . Durante a importação, o nome é gerado automaticamente
e não precisa ser fornecido manualmente.
|
id
|
O ID do documento usado pelo seu banco de dados interno. O campo de ID precisa ser exclusivo em todo o armazenamento de dados. O mesmo valor é usado quando você
registra um evento de usuário e também é retornado pelos métodos recommend
e search .
|
schemaId
|
Obrigatório. O identificador do esquema localizado no mesmo repositório de dados. Precisa ser definido como "default_schema", que é criado automaticamente quando o repositório de dados padrão é criado. |
parentDocumentId
|
O ID do documento pai. Para documentos de nível superior (raiz),
parent_document_id pode estar vazio ou apontar para si mesmo. Para
documentos filhos, parent_document_id precisa apontar para um documento
raiz válido.
|
Campos de propriedade
Os campos a seguir são definidos usando o formato de esquema JSON predefinido para mídia.
Para mais informações sobre propriedades JSON, consulte a documentação "Como entender o esquema JSON" para propriedades em json-schema.org.
A tabela a seguir define campos planos
Nome do campo | Observações |
---|---|
title
|
String: obrigatório Título do documento do seu banco de dados. Uma string codificada em UTF-8. Limitado a 1.000 caracteres. |
categories
|
String: obrigatório Categorias de documentos. Essa propriedade é repetida para oferecer suporte a um documento pertencente a várias categorias paralelas. Use o caminho completo da categoria para resultados de maior qualidade.
Para representar o caminho completo de uma categoria, use o símbolo Exemplo:
Um documento pode conter no máximo 250 categorias. Cada categoria é uma string codificada em UTF-8 com um limite de comprimento de 5.000 caracteres. |
uri
|
String: obrigatório URI do documento. Limite de 5.000 caracteres. |
description
|
String: altamente recomendado Descrição do documento. Limite de 5.000 caracteres. |
media_type
|
String: este campo é obrigatório para filmes e programas Categoria de nível superior.
Tipos aceitos:
Os valores |
language_code
|
String: opcional Idioma do título/descrição e outros atributos de string. Use tags de idioma definidas pelo BCP 47. Para recomendação de documentos, esse campo é ignorado, e o idioma do texto é detectado automaticamente. O documento pode incluir texto em diferentes idiomas, mas a duplicação de documentos para fornecer texto em vários idiomas pode resultar em desempenho reduzido.
Para a pesquisa de documentos, esse campo está em uso. O padrão é "en-US" se não for definido.
Por exemplo, |
duration
|
String: obrigatório para apps de recomendações de mídia em que o objetivo de negócios é a taxa de cliques (CTR) ou a duração de exibição por sessão.
Duração do conteúdo de mídia. A duração precisa ser codificada como uma string.
A codificação precisa ser a mesma que a codificação de string JSON
|
available_time
|
Data e hora: obrigatório O tempo em que o conteúdo está disponível para os usuários finais. Esse campo identifica a atualidade de um conteúdo para os usuários finais. O carimbo de data/hora precisa estar em conformidade com o padrão RFC 3339. Exemplo:
|
expire_time
|
Data/hora: opcional O tempo de expiração do conteúdo para os usuários finais. Esse campo identifica a atualidade de um conteúdo para os usuários finais. O carimbo de data/hora precisa estar em conformidade com o padrão RFC 3339. Exemplo:
|
in_languages
|
String: opcional, repetida Idioma do conteúdo de mídia. Use tags de idioma definidas pelo BCP 47.
Por exemplo: |
country_of_origin
|
String: opcional País de origem do documento de mídia. Limite de 128 caracteres.
Por exemplo: |
transcript
|
String: opcional Transcrição do documento de mídia. |
content_index
|
Número inteiro: opcional Índice de conteúdo do documento de mídia. O campo de índice de conteúdo pode ser usado para ordenar os documentos em relação a outros. Por exemplo, o número do episódio pode ser usado como o índice de conteúdo. O índice de conteúdo precisa ser um número inteiro não negativo.
Por exemplo: |
filter_tags
|
String: opcional, repetida Filtrar tags do documento. São permitidos no máximo 250 valores por documento, com um limite de comprimento de 1.000 caracteres. Caso contrário, um erro INVALID_ARGUMENT será retornado.
Essa tag pode ser usada para filtrar os resultados de recomendação transmitindo a
tag como parte do
Por exemplo: |
hash_tags
|
String: opcional, repetida Hashtags do documento. É permitido no máximo 100 valores por documento, com um limite de comprimento de 5.000 caracteres.
Por exemplo: |
production_year
|
Número inteiro: opcional O ano em que a mídia foi produzida. |
content_rating
|
String: opcional, repetida A classificação do conteúdo, usada para sistemas de avisos e filtragem de conteúdo com base no público-alvo. São permitidos no máximo 100 valores por documento com um limite de comprimento de 128 caracteres.
Essa tag pode ser usada para filtrar os resultados de recomendação transmitindo a
tag como parte do
Por exemplo: |
A tabela a seguir define campos hierárquicos.
Nome do campo | Observações |
---|---|
images
|
Objeto: opcional, repetido Propriedade da chave raiz para encapsular propriedades relacionadas à imagem. |
images.uri
|
String: opcional URI da imagem. Limite de 5.000 caracteres. |
images.name
|
String: opcional Nome da imagem. Limite de 128 caracteres. |
persons
|
Objeto: opcional, repetido Propriedade da chave raiz para encapsular as propriedades relacionadas à pessoa.
Por exemplo:
|
persons.name
|
String: obrigatório Nome da pessoa. |
persons.role
|
String: obrigatório O papel da pessoa no item de mídia. Valores aceitos: diretor, ator, jogador, equipe, liga, editor, autor, personagem, colaborador, criador, editor, financiador, produtor, provedor, editor, patrocinador, tradutor, music-by, canal, função personalizada
Se nenhum dos valores aceitos for aplicado a |
persons.custom_role
|
String: opcional
|
persons.rank
|
Número inteiro: opcional
Usado para classificação de função. Por exemplo, para o primeiro ator,
|
persons.uri
|
String: opcional URI da pessoa. |
organizations
|
Objeto: opcional, repetido
Propriedade da chave raiz para encapsular as propriedades relacionadas a
Por exemplo:
|
organizations.name
|
String: obrigatório Nome da organização. |
organizations.role
|
String: obrigatório Função da organização no item de mídia. Valores aceitos: diretor, ator, jogador, equipe, liga, editor, autor, personagem, colaborador, criador, editor, financiador, produtor, provedor, editor, patrocinador, tradutor, music-by, canal, função personalizada
Se nenhum dos valores aceitos for aplicado a |
organizations.custom_role
|
String: opcional
|
organizations.rank
|
String: opcional
Usado para classificação de função. Por exemplo, para o primeiro editor:
|
organizations.uri
|
String: opcional URI da organização. |
aggregate_ratings
|
Objeto: opcional, repetido
Propriedade da chave raiz para encapsular as
propriedades relacionadas a |
aggregate_ratings.rating_source
|
String: obrigatório
A origem da classificação. Por exemplo, |
aggregate_ratings.rating_score
|
Duplo: obrigatório A classificação agregada. A classificação precisa ser normalizada para o intervalo [1, 5]. |
aggregate_ratings.rating_count
|
Número inteiro: opcional O número de avaliações individuais. Precisa ser um valor não negativo. |
Níveis de documentos
Os níveis de documento determinam a hierarquia no repositório de dados. Normalmente, você precisa ter um repositório de dados de um ou dois níveis. Há suporte apenas para duas camadas.
Por exemplo, é possível ter um repositório de dados de nível único em que cada documento é um item individual. Como alternativa, você pode escolher um repositório de dados de dois níveis que contenha grupos de itens e itens individuais.
Tipos no nível do documento
Há dois tipos de nível de documento:
Pai. Os documentos principais são o que a Vertex AI para Pesquisa retorna em recomendações e pesquisas. Os documentos principais podem ser individuais ou grupos de documentos semelhantes. Esse tipo de nível é recomendado.
Criança. Os documentos filhos são versões do documento principal de um grupo. As crianças só podem ser documentos individuais. Por exemplo, se o documento pai for "Example TV Show", os filhos podem ser "Episode 1" e "Episode 2". Esse tipo de nível pode ser difícil de configurar e manter e não é recomendado.
Sobre a hierarquia do repositório de dados
Ao planejar a hierarquia do armazenamento de dados, decida se ele vai conter apenas os pais ou os pais e filhos. O ponto principal a ser lembrado é que as recomendações e pesquisas só retornam documentos principais.
Por exemplo, um repositório de dados somente pai pode funcionar bem para audiolivros, em que um painel de recomendações retorna uma seleção de audiolivros individuais. Por outro lado, se você tiver feito o upload de episódios de programas de TV como documentos principais para uma armazenagem de dados somente para pais, vários episódios fora de ordem poderão ser recomendados no mesmo painel.
Um repositório de dados de programa de TV pode funcionar com pais e filhos, em que cada documento pai representa um programa de TV com documentos filhos que representam os episódios desse programa. Esse repositório de dados de dois níveis permite que o painel de recomendações mostre uma variedade de programas de TV semelhantes. O usuário final pode clicar em um programa específico para selecionar um episódio para assistir.
Como as hierarquias pai-filho podem ser difíceis de configurar e manter, armazenamentos de dados somente pai são recomendados.
Por exemplo, um repositório de dados de programa de TV pode funcionar bem como um repositório de dados exclusivo para pais, em que cada documento pai representa um programa de TV que pode ser recomendado e os episódios individuais não são incluídos (e, portanto, não são recomendados).
Se você determinar que o repositório de dados precisa ter pais e filhos,
ou seja, grupos e itens únicos, mas tiver apenas itens únicos, precisa criar os pais dos grupos. As informações mínimas que você precisa
fornecer para um pai são id
, title
e categories
. Para mais informações,
consulte a seção Campos de documento.
Esquema do BigQuery para mídia
Se você planeja importar seus documentos do BigQuery, use o esquema predefinido do BigQuery para criar uma tabela do BigQuery com o formato correto e carregue-a com os dados dos documentos antes de importar os documentos.
[ { "name": "id", "mode": "REQUIRED", "type": "STRING", "fields": [] }, { "name": "schemaId", "mode": "REQUIRED", "type": "STRING", "fields": [] }, { "name": "parentDocumentId", "mode": "NULLABLE", "type": "STRING", "fields": [] }, { "name": "jsonData", "mode": "NULLABLE", "type": "STRING", "fields": [] } ]
Esquema personalizado
Se os dados já estiverem formatados em um esquema, você pode decidir não usar o esquema predefinido do Google descrito acima. Em vez disso, use seu próprio esquema e mapeie campos do esquema para propriedades de chave de mídia. Para mapear seu esquema ao criar a loja de mídia de dados, use o console do Google Cloud.
Se você usar seu próprio esquema, ele precisa ter campos que possam ser mapeados para as cinco propriedades principais de mídia:
Nome da propriedade de chave obrigatória | Observações |
---|---|
title
|
String: obrigatório Título do documento do seu banco de dados. Uma string codificada em UTF-8. Limitado a 1.000 caracteres. |
uri
|
String: obrigatório URI do documento. Limite de 5.000 caracteres. |
category
|
String: obrigatório Categorias de documentos. Essa propriedade é repetida para oferecer suporte a um documento pertencente a várias categorias paralelas. Use o caminho completo da categoria para resultados de maior qualidade.
Para representar o caminho completo de uma categoria, use o símbolo Exemplo:
Um documento pode conter no máximo 250 categorias. Cada categoria é uma string codificada em UTF-8 com um limite de comprimento de 5.000 caracteres. |
media_available_time
|
Data e hora: obrigatório O tempo em que o conteúdo está disponível para os usuários finais. Esse campo identifica a atualidade de um conteúdo para os usuários finais. O carimbo de data/hora precisa estar em conformidade com o padrão RFC 3339. Exemplo:
|
media_duration
|
String: obrigatório para apps de recomendações de mídia em que o objetivo de negócios é a taxa de cliques (CTR) ou a duração de exibição por sessão.
Duração do conteúdo de mídia. A duração precisa ser codificada como uma string.
A codificação precisa ser a mesma que a codificação de string JSON
Esse campo é importante para apps de recomendações de mídia em que o objetivo comercial é maximizar a taxa de conversão (CVR) ou a duração de exibição por visitante. |
Além disso, há propriedades principais que não são obrigatórias, mas, para resultados de qualidade, mapeie o máximo possível delas no esquema.
Estas propriedades principais são as seguintes:
Nome da propriedade da chave | Observações |
---|---|
description
|
String: altamente recomendado Descrição do documento. Limite de 5.000 caracteres. |
image
|
Objeto: opcional, repetido Propriedade da chave raiz para encapsular propriedades relacionadas à imagem. |
image_name
|
String: opcional Nome da imagem. Limite de 128 caracteres. |
image_uri
|
String: opcional URI da imagem. Limite de 5.000 caracteres. |
language-code
|
String: opcional Idioma do título/descrição e outros atributos de string. Use tags de idioma definidas pelo BCP 47. Para recomendação de documentos, esse campo é ignorado, e o idioma do texto é detectado automaticamente. O documento pode incluir texto em diferentes idiomas, mas a duplicação de documentos para fornecer texto em vários idiomas pode resultar em desempenho reduzido.
Para a pesquisa de documentos, esse campo está em uso. O padrão é "en-US" se não for definido.
Por exemplo, |
media_aggregated_rating
|
Objeto: opcional, repetido
Propriedade da chave raiz para encapsular as
propriedades relacionadas a |
media_aggregated_rating_count
|
Número inteiro: opcional O número de avaliações individuais. Precisa ser um valor não negativo. |
media_aggregated_rating_score
|
Duplo: obrigatório A classificação agregada. A classificação precisa ser normalizada para o intervalo [1, 5]. |
media_aggregated_rating_source
|
String: obrigatório
A origem da classificação. Por exemplo, |
media_content_index
|
Número inteiro: opcional Índice de conteúdo do documento de mídia. O campo de índice de conteúdo pode ser usado para ordenar os documentos em relação a outros. Por exemplo, o número do episódio pode ser usado como o índice de conteúdo. O índice de conteúdo precisa ser um número inteiro não negativo.
Por exemplo: |
media_content_rating
|
String: opcional, repetida A classificação do conteúdo, usada para sistemas de avisos e filtragem de conteúdo com base no público-alvo. São permitidos no máximo 100 valores por documento com um limite de comprimento de 128 caracteres.
Essa tag pode ser usada para filtrar os resultados de recomendação transmitindo a
tag como parte do
Por exemplo: |
media_country_of_origin
|
String: opcional País de origem do documento de mídia. Limite de 128 caracteres.
Por exemplo: |
media_expire_time
|
Data e hora: opcional O tempo de expiração do conteúdo para os usuários finais. Esse campo identifica a atualidade de um conteúdo para os usuários finais. O carimbo de data/hora precisa estar em conformidade com o padrão RFC 3339. Exemplo:
|
media_filter_tag
|
String: opcional, repetida Filtrar tags do documento. São permitidos no máximo 250 valores por documento, com um limite de comprimento de 1.000 caracteres. Caso contrário, um erro INVALID_ARGUMENT será retornado.
Essa tag pode ser usada para filtrar os resultados de recomendação transmitindo a
tag como parte do
Por exemplo: |
media_hash_tag
|
String: opcional, repetida Hashtags do documento. É permitido no máximo 100 valores por documento, com um limite de comprimento de 5.000 caracteres.
Por exemplo: |
media_in_language
|
String: opcional, repetida Idioma do conteúdo de mídia. Use tags de idioma definidas pelo BCP 47.
Por exemplo: |
media_organization
|
Objeto: opcional, repetido
Propriedade da chave raiz para encapsular as propriedades relacionadas a
Por exemplo:
|
media_organization_custom_role
|
String: opcional
|
media_organization_name
|
String: obrigatório Nome da organização. |
media_organization_rank
|
String: opcional
Usado para classificação de função. Por exemplo, para o primeiro editor:
|
media_organization_role
|
String: obrigatório Função da organização no item de mídia. Valores aceitos: diretor, ator, jogador, equipe, liga, editor, autor, personagem, colaborador, criador, editor, financiador, produtor, provedor, editor, patrocinador, tradutor, music-by, canal, função personalizada
Se nenhum dos valores aceitos for aplicado a |
media_organization_uri
|
String: opcional URI da organização. |
media_person
|
Objeto: opcional, repetido Propriedade da chave raiz para encapsular as propriedades relacionadas à pessoa.
Por exemplo:
|
media_person_custom_role
|
String: opcional
|
media_person_name
|
String: obrigatório Nome da pessoa. |
media_person_rank
|
Número inteiro: opcional
Usado para classificação de função. Por exemplo, para o primeiro ator,
|
media_person_role
|
String: obrigatório O papel da pessoa no item de mídia. Valores aceitos: diretor, ator, jogador, equipe, liga, editor, autor, personagem, colaborador, criador, editor, financiador, produtor, provedor, editor, patrocinador, tradutor, music-by, canal, função personalizada
Se nenhum dos valores aceitos for aplicado a |
media_person_uri
|
String: opcional URI da pessoa. |
media_production_year
|
Número inteiro: opcional O ano em que a mídia foi produzida. |
media_transcript
|
String: opcional Transcrição do documento de mídia. |
media_type
|
String: este campo é obrigatório para filmes e programas Categoria de nível superior.
Tipos aceitos:
Os valores |
Se você estiver usando seu próprio esquema em vez do esquema predefinido do Google, consulte Fornecer ou detectar automaticamente um esquema para informações sobre formatação e importação do seu próprio esquema.