Se já criou as suas próprias incorporações vetoriais personalizadas para os seus dados, pode carregá-las para o Vertex AI Search e usá-las quando fizer consultas com o Vertex AI Search.
Esta funcionalidade está disponível para armazenamentos de dados com dados estruturados personalizados ou dados não estruturados com metadados. Esta funcionalidade não está disponível para a pesquisa de conteúdo multimédia e cuidados de saúde.
Por predefinição, a Vertex AI Search gera automaticamente incorporações vetoriais sem necessidade de configuração. Se não estiver familiarizado com a criação de incorporações, a Google recomenda que deixe o Vertex AI Search criar e usar incorporações por si. No entanto, se tiver criado as suas próprias incorporações para os seus dados, pode preferir usá-las em vez das geradas pela Vertex AI Search, especialmente se as suas incorporações personalizadas contiverem contexto adicional que possa enriquecer a obtenção e a classificação da pesquisa. Por exemplo:
- As suas incorporações foram preparadas com palavras personalizadas, como termos internos, cuja semelhança semântica não seria captada pela preparação com dados públicos, por exemplo, termos específicos da organização que aparecem apenas em documentos privados.
- Criou incorporações para perfis de utilizadores e quer usá-las para criar uma classificação de documentos personalizada e semanticamente relevante. Pode usar as suas incorporações para obter uma classificação baseada na personalização, o que pode aumentar as incorporações de documentos da Google para uma classificação baseada na relevância.
Para usar as suas próprias incorporações:
- Antes de começar: verifique se as suas incorporações cumprem todos os requisitos
- Carregue dados com incorporações: carregue os seus documentos com as respetivas incorporações
- Atualize o seu esquema: atualize o esquema com os campos da propriedade chave e as especificações das dimensões
- Especifique a incorporação: especifique a incorporação globalmente ou por pedido de pesquisa.
Antes de começar
Antes de começar, certifique-se de que as suas incorporações cumprem os seguintes requisitos:
- As incorporações são suportadas para dados estruturados e dados não estruturados com metadados
- As incorporações têm de ser fornecidas como matrizes unidimensionais
- A dimensionalidade da incorporação tem de estar entre 1 e 768, inclusive
- As incorporações são suportadas para texto e imagens. Os vídeos não são suportados
- É possível etiquetar até dois campos como campos de propriedades principais de incorporação. Pode usar dois campos para casos como testes A/B para as suas incorporações
- Atualmente, não é possível remover as designações de propriedades de chaves de campos de incorporação depois de serem definidas
Carregue dados com incorporações
Pode carregar as incorporações de um documento num a dois campos incluídos como parte dos dados ou dos metadados desse documento durante o carregamento do documento.
Para carregar dados com incorporações:
Prepare os dados para carregamento consoante o tipo de dados:
Dados estruturados: quando preparar os dados, inclua as incorporações de cada documento como matrizes unidimensionais num a dois campos no documento. Pode fornecer até duas incorporações (por exemplo, se estiver a fazer testes A/B entre incorporações). Cada incorporação tem de ser fornecida no seu próprio campo no documento, por exemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Siga as orientações para preparar dados estruturados na documentação Prepare os dados para carregamento.
Dados não estruturados com metadados: quando prepara os dados, inclua a incorporação de cada documento como uma matriz unidimensional num campo nos metadados do documento. Pode fornecer até dois encaixes (por exemplo, quando faz testes A/B entre encaixes). Cada incorporação tem de ser fornecida no seu próprio campo nos metadados do documento, por exemplo:
"example_embedding_vector": [0.1, 0.2, 0.3 ...]
Siga as orientações para preparar dados não estruturados com metadados para o seu método de carregamento (Cloud Storage ou BigQuery) na documentação Prepare dados para carregamento.
Siga as instruções para o seu tipo de dados em Crie um arquivo de dados de pesquisa para carregar os seus documentos com incorporações.
Em seguida, atualize o seu esquema para usar os campos de incorporação corretos.
Atualize o seu esquema
Atualize o seu esquema com mapeamentos de propriedades principais e dimensões para os campos de incorporação usando a Google Cloud consola ou a API.
Consola
Para atualizar o esquema através da Google Cloud consola, siga estes passos:
Na Google Cloud consola, aceda à página Aplicações de IA.
No menu de navegação, clique em Armazenamentos de dados.
Na coluna Nome, clique no arquivo de dados com o esquema que quer atualizar.
Clique no separador Esquema para ver o esquema dos seus dados.
Clique no botão Editar.
Encontre o campo de incorporação no esquema e, na coluna Propriedades principais , selecione embedding_vector como a propriedade principal desse campo.
Se tiver um segundo campo de incorporação, repita este passo para esse campo.
Na coluna Dimensão, introduza o número de dimensões para esse campo de incorporação.
Se tiver um segundo campo de incorporação, repita este passo para esse campo.
Clique em Guardar para aplicar as alterações ao esquema.
Após a atualização do esquema, a reindexação pode demorar até 24 horas, dependendo do tamanho do seu repositório de dados.
REST
Para atualizar o seu esquema através da API, siga estes passos:
Seguindo as instruções REST em Atualize um esquema, especifique o mapeamento da propriedade da chave e o número de dimensões para cada campo de incorporação:
"keyPropertyMapping": "embedding_vector"
"dimension": NUMBER_OF_DIMENSIONS
Por exemplo, aqui está um esquema JSON formatado com 768 dimensões para o campo
example_embedding_vector
:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "example_embedding_vector": { "type": "array", "keyPropertyMapping": 'embedding_vector', "dimension": 768, "items": { "type": "number" } } } }
Num pedido de esquema de atualização, o JSON formatado acima seria incluído como uma string JSON:
"jsonSchema": "{\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"type\":\"object\",\"properties\":{\"example_embedding_vector\":{\"type\":\"array\",\"keyPropertyMapping\":\"embedding_vector\",\"dimension\":768,\"items\":{\"type\":\"number\"}}}}"
Após a atualização do esquema, a reindexação pode demorar até 24 horas, dependendo do tamanho do seu repositório de dados.
Em seguida, especifique a incorporação.
Especifique a incorporação
Depois de a indexação da atualização do esquema estar concluída, pode enviar pedidos de pesquisa que incluam uma especificação de incorporação.
Existem duas formas de especificar uma incorporação:
- Especifique uma incorporação globalmente: para especificar a mesma incorporação para todos os pedidos de pesquisa, atualize as definições de publicação para incluir uma especificação de incorporação através da Google Cloud consola ou da API.
- Especifique uma incorporação por pedido de pesquisa: envie
embeddingSpec
em cada pedido de pesquisa através da API. Esta opção substitui a definição global se estiver definida.
Especificar uma incorporação globalmente
Pode especificar a mesma incorporação em todos os pedidos de pesquisa através daGoogle Cloud consola ou da API.
Consola
Para fornecer a mesma especificação de incorporação a todos os pedidos de pesquisa, atualize as suas definições de publicação com uma especificação de incorporação.
Na Google Cloud consola, aceda à página Aplicações de IA.
Clique em Ver para o arquivo de dados com o esquema que quer atualizar.
Aceda à página Configurações e clique no separador Publicação.
Para Caminho do campo de incorporação, introduza o nome do campo que mapeou para a propriedade da chave de incorporação.
Para Expressão de classificação, introduza uma ou mais funções para controlar a classificação dos resultados. As variáveis são ponderadas de acordo com a expressão que introduz. A expressão de classificação é uma única função ou várias funções unidas por
+
no formatofunction, { " + ", function }
.As funções suportadas são:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
São aceites as seguintes variáveis:
relevance_score
: Uma variável predefinida fornecida pela Pesquisa do Vertex AI para medir a relevância de um documento. A pontuação varia entre 0 e 1,0, incluindo os limites.dotProduct()
: Uma função predefinida fornecida pela Vertex AI Search. Tem de indicar o mesmo nome do campo para esta função que indicou paraembeddingVector.fieldPath
.
Por exemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
REST
Para fornecer a mesma especificação de incorporação a todos os pedidos de pesquisa,
atualize servingConfig
com embeddingConfig
.
Corrija a entidade
servingConfig
com os campos que quer atualizar. Especifique os campos que está a atualizar comupdateMask
.No exemplo seguinte,
embeddingConfig
usa incorporações no campoexample_embedding_field
e atribui um peso de 0,5 arelevance_score
.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search", "embeddingConfig": { "fieldPath": "example_embedding_field" }, "ranking_expression": "0.5 * relevance_score" }' \ 'https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search?updateMask=embeddingConfig,rankingExpression'
fieldPath
: o nome do campo que mapeou para a propriedade da chave de incorporação.ranking_expression
: controla a classificação dos resultados. As variáveis são ponderadas de acordo com a expressão que introduz. A expressão de classificação é uma única função ou várias funções unidas por+
no formatofunction, { " + ", function }
.
As funções suportadas são:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
São aceites as seguintes variáveis:
relevance_score
: uma variável predefinida fornecida pela Vertex AI Search.dotProduct()
: Uma função predefinida fornecida pela Vertex AI Search. O produto escalar é normalizado. Tem de fornecer o mesmo nome do campo a esta função que forneceu paraembeddingVector.fieldPath
.
Por exemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Quando envia pedidos de pesquisa,
servingConfig.embeddingConfig
é incluído automaticamente.Se enviar um pedido de pesquisa que inclua explicitamente um
embeddingSpec
diferente, substituiservingConfig.embeddingConfig
. Consulte as instruções por pedido para saber como fornecer especificações de incorporação para pedidos de pesquisa únicos.
Especifique uma incorporação por pedido de pesquisa
Pode fornecer uma especificação de incorporação para um único pedido de pesquisa através da API. Uma especificação de incorporação por pedido substitui qualquer especificação de incorporação global.
Envie um pedido de pesquisa que inclua
embeddingSpec
.O exemplo seguinte de
embeddingSpec
usa incorporações no campoexample_embedding_field
, especifica "Exemplo de consulta" como o vetor de entrada e atribui um peso de 0,5 arelevance_score
e 0,3 aexample_embedding_field
ao calcular a classificação."embeddingSpec": { "embeddingVectors": [{ "fieldPath": "example_embedding_field", "vector": [ 0.96241474, -0.45999944, 0.108588696 ] }] }, "ranking_expression": "0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)"
fieldPath
: o nome do campo que mapeou para a propriedade da chave de incorporação.vector
: o vetor de entrada fornecido como uma matriz.ranking_expression
: controla a classificação dos resultados. As variáveis são ponderadas de acordo com a expressão que introduz. A expressão de classificação é uma única função ou várias funções unidas por+
no formatofunction, { " + ", function }
.As funções suportadas são:
DOUBLE * relevance_score
DOUBLE * dotProduct(EMBEDDING_FIELD_PATH)
São aceites as seguintes variáveis:
relevance_score
: uma variável predefinida fornecida pelo Vertex AI Search para medir a relevância de um documento. A pontuação varia entre 0 e 1,0, incluindo os limites.dotProduct()
: Uma função predefinida fornecida pela Vertex AI Search. Tem de fornecer o mesmo nome do campo a esta função que forneceu paraembeddingVector.fieldPath
.
Por exemplo:
0.3 * relevance_score
0.5 * relevance_score + 0.3 * dotProduct(example_embedding_field)
Receber resultados na resposta de pesquisa. Cada resultado da pesquisa inclui a respetiva pontuação de relevância e valores do produto escalar. Por exemplo:
"modelScores": { "dotProduct(example_embedding_field)": [0.02150772698223591], "relevance_score": [ 0.8828125 ] }
dotProduct()
: o produto escalar calculado para o documento do resultado da pesquisa.relevance_score
: a pontuação de relevância calculada para o documento de resultado da pesquisa.
O que se segue?
- Prepare os dados para carregamento.
- Atualize um esquema.
- Pré-visualize os resultados da pesquisa.
- Para compreender o impacto das incorporações personalizadas na qualidade da pesquisa de uma app de pesquisa personalizada, avalie a qualidade da pesquisa. Para mais informações, consulte Avalie a qualidade da pesquisa.