Integra gli incorporatori di testo.

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

Al contrario di ricerca testuale, l'incorporamento del testo consente di calcolare all'istante la somiglianza tra i testi anziché cercare in un indice predefinito creato da un corpus.

Usa l'API TextEmbedder della libreria di attività per eseguire il deployment dell'incorporamento di testo personalizzato in le tue app mobile.

Funzionalità chiave dell'API TextEmbedder

  • Elaborazione del testo di input, incluso all'interno o fuori dal grafico Posizionato o Fondamentale tokenizzazioni sul testo di input.

  • Funzione di utilità integrata per calcolare somiglianza coseno tra vettori di caratteristiche.

Modelli di incorporamento di testo supportati

La compatibilità dei seguenti modelli è garantita con TextEmbedder tramite Google Cloud CLI o tramite l'API Compute Engine.

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 le codice sorgente per altre opzioni di configurazione di TextEmbedder.

Esegui l'inferenza in Python

Passaggio 1: installa il pacchetto Pypi di assistenza TensorFlow Lite

Puoi installare il pacchetto Pypi di assistenza TensorFlow Lite utilizzando quanto segue :

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)

Consulta le codice sorgente per altre opzioni di configurazione di TextEmbedder.

Risultati di esempio

La somiglianza coseno tra vettori di caratteristiche normalizzati restituisce un punteggio compreso tra -1 e 1. Maggiore è meglio, cioè una somiglianza coseno di 1 significa che i due vettori sono identici.

Cosine similarity: 0.954312

Prova la semplice Strumento dimostrativo dell'interfaccia a riga di comando per TextEmbedder con il tuo modello e dati di test.

Requisiti di compatibilità del modello

L'API TextEmbedder prevede un modello TFLite con requisiti obbligatori Metadati del modello TFLite.

Sono supportati tre tipi principali di modelli:

  • basati su BERT (vedi codice sorgente per ulteriori dettagli):

    • Esattamente 3 tensori di input (kTfLiteString)

      • tensore ID, con nome metadati "ids",
      • Tensore della maschera, con il nome dei metadati "mask".
      • Tensore di ID segmento, con nome dei metadati "segment_ids"
    • Esattamente un tensore di output (kTfLiteUInt8/kTfLiteFloat32)

      • con N componenti corrispondenti alle dimensioni N del vettore di caratteristiche restituito per questo livello di output.
      • Due o quattro dimensioni, ad esempio [1 x N] o [1 x 1 x 1 x N].
    • Un input_process_units per il tokenizzatore di pezzi di testo/frasi

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

    • Esattamente 3 tensori di input (kTfLiteString)

      • Tensore di testo della query, con nome metadati "inp_text".
      • Tensore di contesto della risposta, con nome dei metadati "res_context".
      • Tensore del testo della risposta, con il nome 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 metadati "response_encoding".
      • Entrambi con componenti N corrispondenti alle dimensioni N del vettore di caratteristiche restituito per questo livello di output.
      • Entrambe con 2 o 4 dimensioni, ad esempio [1 x N] o [1 x 1 x 1 x N].
  • Qualsiasi modello di incorporamento di testo con:

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

      • con N componenti corrispondenti alle dimensioni N del vettore di caratteristiche restituito per questo livello di output.
      • Due o quattro dimensioni, ad esempio [1 x N] o [1 x 1 x 1 x N].