Integra gli incorporamenti di testo.

Gli incorporatori di testo consentono di incorporare il testo in un vettore di caratteristiche ad alta dimensionalità che ne rappresenta il significato semantico, che può quindi essere confrontato con il vettore di caratteristiche di altri testi per valutarne la somiglianza semantica.

A differenza della ricerca di testo , l'incorporamento di testo consente di calcolare al volo la somiglianza tra i testi invece di cercare attraverso un indice predefinito costruito da un corpus.

Utilizza l'API TextEmbedder della libreria attività per distribuire il tuo incorporamento di testo personalizzato nelle tue app mobili.

Funzionalità principali dell'API TextEmbedder

  • Elaborazione del testo di input, incluse le tokenizzazioni di Wordpiece o Sentencepiece all'interno o all'esterno del grafico sul testo di input.

  • Funzione di utilità incorporata per calcolare la somiglianza del coseno tra i vettori delle caratteristiche.

Modelli di incorporamento del testo supportati

È garantita la compatibilità dei seguenti modelli 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());

Vedi il codice sorgente per ulteriori opzioni per configurare TextEmbedder .

Esegui l'inferenza in Python

Passaggio 1: installare il pacchetto Pypi di supporto TensorFlow Lite.

È possibile installare il pacchetto TensorFlow Lite Support Pypi utilizzando il seguente comando:

pip install tflite-support

Passaggio 2: utilizzo del 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)

Vedi il codice sorgente per ulteriori opzioni per configurare TextEmbedder .

Risultati di esempio

La somiglianza del coseno tra i vettori delle caratteristiche normalizzate restituisce un punteggio compreso tra -1 e 1. Più alto è meglio è, ovvero una somiglianza 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 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 (vedere il codice sorgente per maggiori dettagli):

    • Esattamente 3 tensori di input (kTfLiteString)

      • Tensore ID, con nome di metadati "ids",
      • Tensore della maschera, con nome di metadati "maschera".
      • Tensore degli ID dei segmenti, con nome di metadati "segment_ids"
    • Esattamente un tensore di uscita (kTfLiteUInt8/kTfLiteFloat32)

      • con N componenti corrispondenti alle N dimensioni del vettore di caratteristiche restituito per questo livello di output.
      • 2 o 4 dimensioni, ovvero [1 x N] o [1 x 1 x 1 x N] .
    • Un input_process_units per Wordpiece/Sentencepiece Tokenizer

  • Modelli basati su Universal Sentence Encoder (vedere il codice sorgente per maggiori dettagli):

    • Esattamente 3 tensori di input (kTfLiteString)

      • Tensore di testo della query, con nome di metadati "inp_text".
      • Tensore del contesto della risposta, con nome di metadati "res_context".
      • Tensore del testo di risposta, con nome di metadati "res_text".
    • Esattamente 2 tensori di uscita (kTfLiteUInt8/kTfLiteFloat32)

      • Tensore di codifica delle query, con nome di metadati "query_encoding".
      • Tensore di codifica della risposta, con nome di metadati "response_encoding".
      • Entrambi con N componenti corrispondenti alle N dimensioni del vettore di 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 incorporamento del testo con:

    • Un tensore del testo di input (kTfLiteString)
    • Almeno un tensore di incorporamento dell'output (kTfLiteUInt8/kTfLiteFloat32)

      • con N componenti corrispondenti alle N dimensioni del vettore di caratteristiche restituito per questo livello di output.
      • 2 o 4 dimensioni, ovvero [1 x N] o [1 x 1 x 1 x N] .