Integra gli incorporatori di testo.

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.

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 N componenti corrispondenti alle N dimensioni 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 N componenti corrispondenti alle N dimensioni 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 N componenti corrispondenti alle N dimensioni 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].