Grazie per esserti sintonizzato su Google I/O. Visualizza tutte le sessioni su richiesta Guarda su richiesta

Integra gli incorporatori di testo.

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

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

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

Caratteristiche principali dell'API TextEmbedder

  • Elaborazione del testo di input, inclusa la tokenizzazione di Wordpiece o Sentencepiece nel grafico o fuori dal grafico sul testo di input.

  • Funzione di utilità incorporata per calcolare la somiglianza 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());

Vedere 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 comando seguente:

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)

Vedere 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 di 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 prova.

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 (vedi codice sorgente per maggiori dettagli):

    • Esattamente 3 tensori di ingresso (kTfLiteString)

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

      • con N componenti corrispondenti alle N dimensioni del vettore di feature restituito per questo livello di output.
      • 2 o 4 dimensioni, cioè [1 x N] o [1 x 1 x 1 x N] .
    • Un input_process_units per il token di Wordpiece/Sentencepiece

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

    • Esattamente 3 tensori di ingresso (kTfLiteString)

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

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

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

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