Gli incorporatori di testo consentono di incorporare il testo in un vettore di caratteristiche ad alta dimensione che ne rappresenta il significato semantico, che può poi essere confrontato con il vettore di caratteristiche di altri testi per valutare la loro somiglianza semantica.
A differenza della ricerca di testo, l'incorporatore di testo consente di calcolare la somiglianza tra i testi al volo anziché eseguire ricerche in un indice predefinito creato da un corpus.
Utilizza l'API Task Library TextEmbedder per eseguire il deployment dell'incorporatore di testo personalizzato nelle tue app mobile.
Funzionalità chiave dell'API TextEmbedder
Elaborazione del testo di input, inclusi i token Wordpiece o Sentencepiece in-graph o out-of-graph sul testo di input.
Funzione di utilità integrata per calcolare la similarità del coseno tra i vettori delle caratteristiche.
Modelli di incorporamento di testo supportati
I seguenti modelli sono garantiti per essere compatibili con l'API TextEmbedder.
Il modello Universal Sentence Encoder TFLite di TensorFlow Hub
Modelli personalizzati che soddisfano i requisiti di compatibilità dei modelli.
Esegui l'inferenza in 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());
Consulta il codice
sorgente
per altre opzioni di configurazione di TextEmbedder.
Esegui l'inferenza in Python
Passaggio 1: installa il pacchetto Pypi di TensorFlow Lite Support.
Puoi installare il pacchetto Pypi di TensorFlow Lite Support utilizzando il seguente comando:
pip install tflite-support
Passaggio 2: utilizza il modello
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)
Consulta il codice
sorgente
per altre opzioni di configurazione di TextEmbedder.
Risultati di esempio
La similarità del coseno tra i vettori delle caratteristiche normalizzati restituisce un punteggio compreso tra -1 e 1. Più è alto, meglio è. Ad esempio, una similarità del coseno pari a 1 significa che i due vettori sono identici.
Cosine similarity: 0.954312
Prova il semplice strumento demo CLI per TextEmbedder con il tuo modello e i tuoi dati di test.
Requisiti di compatibilità del modello
L'API TextEmbedder prevede un modello TFLite con metadati del modello TFLite obbligatori.
Sono supportati tre tipi principali di modelli:
Modelli basati su BERT (per ulteriori dettagli, consulta il codice sorgente):
Esattamente 3 tensori di input (kTfLiteString)
Tensore ID, con il nome dei metadati "ids".
Tensore maschera, con il nome dei metadati "mask".
Tensore degli ID segmento, con il nome dei metadati "segment_ids"
Esattamente un tensore di output (kTfLiteUInt8/kTfLiteFloat32)
con
Ncomponenti corrispondenti alleNdimensioni del vettore delle caratteristiche restituito per questo livello di output.Due o quattro dimensioni, ovvero
[1 x N]o[1 x 1 x 1 x N].Un input_process_units per il tokenizzatore Wordpiece/Sentencepiece
Modelli basati su Universal Sentence Encoder (per ulteriori dettagli, consulta il codice sorgente):
Esattamente 3 tensori di input (kTfLiteString)
Tensore di testo della query, con il nome dei metadati "inp_text".
Tensore del contesto della risposta, con il nome dei metadati "res_context".
Tensore di testo della risposta, con il nome dei metadati "res_text".
Esattamente 2 tensori di output (kTfLiteUInt8/kTfLiteFloat32)
Tensore di codifica della query, con il nome dei metadati "query_encoding".
Tensore di codifica della risposta, con il nome dei metadati "response_encoding".
Entrambi con
Ncomponenti corrispondenti alleNdimensioni del vettore delle caratteristiche restituito per questo livello di output.Entrambi con 2 o 4 dimensioni, ovvero
[1 x N]o[1 x 1 x 1 x N].
Qualsiasi modello di text embedding con:
- Un tensore di testo di input (kTfLiteString)
Almeno un tensore di incorporamento di output (kTfLiteUInt8/kTfLiteFloat32)
con
Ncomponenti corrispondenti alleNdimensioni del vettore delle caratteristiche restituito per questo livello di output.Due o quattro dimensioni, ovvero
[1 x N]o[1 x 1 x 1 x N].