Os embedders de texto permitem incorporar texto em um vetor de recurso de alta dimensão que representam seu significado semântico e que pode ser comparado com o atributo vetor de outros textos para avaliar sua semelhança semântica.
Em oposição a pesquisa de texto, o embedder de texto permite calcular a semelhança entre textos em tempo real em vez de pesquisar em um índice predefinido criado a partir de um corpus.
Use a API Task Library TextEmbedder
para implantar o incorporador de texto personalizado no
seus apps para dispositivos móveis.
Principais recursos da API TextEmbedder
Processamento de texto de entrada, incluindo dentro ou fora do gráfico Palavra-chave ou Frase de destaque tokenizações no texto de entrada.
Função de utilitário integrada para calcular similaridade por cosseno entre vetores de atributo.
Modelos de embedder de texto compatíveis
Os modelos a seguir têm a garantia de compatibilidade com o TextEmbedder
API.
A Modelo TFLite do Universal Sentence Encoder no TensorFlow Hub
Modelos personalizados que atendem aos requisitos de compatibilidade do modelo.
Executar inferência em C++
// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();
// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);
// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
result_1.embeddings[0].feature_vector()
result_2.embeddings[0].feature_vector());
Consulte a
código-fonte
para mais opções de configuração do TextEmbedder
.
Executar inferência em Python
Etapa 1: instalar o pacote Pypi de suporte do TensorFlow Lite
Instale o pacote TensorFlow Lite Support Pypi usando o seguinte: comando:
pip install tflite-support
Etapa 2: uso do modelo
from tflite_support.task import text
# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)
# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)
# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)
Consulte a
código-fonte
para mais opções de configuração do TextEmbedder
.
Resultados de exemplo
A semelhança de cosseno entre vetores de atributo normalizados retorna uma pontuação entre -1 e 1. Quanto maior, melhor. Por exemplo, uma semelhança de cosseno de 1 significa que os dois vetores são idênticos.
Cosine similarity: 0.954312
Teste a funcionalidade Ferramenta de demonstração da CLI para TextEmbedder com seu próprio modelo e dados de teste.
Requisitos de compatibilidade do modelo
A API TextEmbedder
espera um modelo TFLite com valores obrigatórios
Metadados de modelo do TFLite.
Há três tipos principais de modelos compatíveis:
Modelos baseados em BERT (consulte código-fonte para mais detalhes):
Exatamente três tensores de entrada (kTfLiteString)
- Tensor de IDs, com o nome de metadados "ids",
- Mascarar o tensor, com o nome de metadados "mask".
- Tensor de IDs de segmento, com o nome de metadados "segment_ids"
Exatamente um tensor de saída (kTfLiteUInt8/kTfLiteFloat32)
- com componentes
N
correspondentes às dimensõesN
do vetor de atributo retornado para esta camada final. - Duas ou quatro dimensões, por exemplo,
[1 x N]
ou[1 x 1 x 1 x N]
.
- com componentes
Um token input_process_units para o tokenizador do Wordnote/Sentencenote
Modelos baseados no codificador universal de frases (consulte código-fonte para mais detalhes):
Exatamente três tensores de entrada (kTfLiteString)
- Tensor de texto de consulta com o nome de metadados "inp_text".
- Tensor de contexto de resposta, com o nome de metadados "res_context".
- Tensor de texto de resposta, com o nome de metadados "res_text".
Exatamente dois tensores de saída (kTfLiteUInt8/kTfLiteFloat32)
- Tensor de codificação de consulta, com o nome de metadados "query_encoding".
- Tensor de codificação de resposta, com o nome de metadados "response_encoding".
- Ambos têm componentes
N
correspondentes às dimensõesN
do vetor de atributo retornado para esta camada final. - Ambos têm 2 ou 4 dimensões, por exemplo,
[1 x N]
ou[1 x 1 x 1 x N]
.
Qualquer modelo de embedder de texto com:
- Um tensor de texto de entrada (kTfLiteString)
Pelo menos um tensor de incorporação de saída (kTfLiteUInt8/kTfLiteFloat32)
- com componentes
N
correspondentes às dimensõesN
do vetor de atributo retornado para esta camada final. - Duas ou quatro dimensões, por exemplo,
[1 x N]
ou[1 x 1 x 1 x N]
.
- com componentes