Intégrez des intégrateurs de texte.

Les embeddeurs de texte permettent d'intégrer du texte dans un vecteur de caractéristiques de grande dimension représentant sa signification sémantique. Ce vecteur peut ensuite être comparé à celui d'autres textes pour évaluer leur similarité sémantique.

Contrairement à la recherche de texte, l'outil d'embedding de texte permet de calculer la similarité entre les textes à la volée au lieu de rechercher dans un index prédéfini construit à partir d'un corpus.

Utilisez l'API Task Library TextEmbedder pour déployer votre embedder de texte personnalisé dans vos applications mobiles.

Principales fonctionnalités de l'API TextEmbedder

  • Traitement du texte d'entrée, y compris les tokenisations Wordpiece ou Sentencepiece dans ou hors graphique sur le texte d'entrée.

  • Fonction utilitaire intégrée permettant de calculer la similarité cosinus entre les vecteurs de caractéristiques.

Modèles d'embedding de texte compatibles

Les modèles suivants sont garantis d'être compatibles avec l'API TextEmbedder.

Exécuter une inférence en 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());

Pour découvrir d'autres options de configuration de TextEmbedder, consultez le code source.

Exécuter l'inférence en Python

Étape 1 : Installez le package Pypi TensorFlow Lite Support.

Vous pouvez installer le package Pypi TensorFlow Lite Support à l'aide de la commande suivante :

pip install tflite-support

Étape 2 : Utiliser le modèle

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)

Pour découvrir d'autres options de configuration de TextEmbedder, consultez le code source.

Exemples de résultats

La similarité cosinus entre les vecteurs de caractéristiques normalisés renvoie un score compris entre -1 et 1. Plus la valeur est élevée, mieux c'est. Par exemple, une similarité cosinus de 1 signifie que les deux vecteurs sont identiques.

Cosine similarity: 0.954312

Essayez l'outil de démonstration simple de l'interface de ligne de commande pour TextEmbedder avec votre propre modèle et vos données de test.

Exigences de compatibilité des modèles

L'API TextEmbedder attend un modèle TFLite avec des métadonnées de modèle TFLite obligatoires.

Trois principaux types de modèles sont acceptés :

  • Modèles basés sur BERT (pour en savoir plus, consultez le code source) :

    • Exactement trois Tensors d'entrée (kTfLiteString)

    • Tensor d'ID, avec le nom de métadonnées "ids",

    • Tensor de masque, avec le nom de métadonnées "mask".

    • Tensor d'ID de segment, avec le nom de métadonnées "segment_ids"

    • Exactement un Tensor de sortie (kTfLiteUInt8/kTfLiteFloat32)

    • avec N composants correspondant aux N dimensions du vecteur de caractéristiques renvoyé pour cette couche de sortie.

    • Deux ou quatre dimensions, c'est-à-dire [1 x N] ou [1 x 1 x 1 x N].

    • input_process_units pour le tokenizer Wordpiece/Sentencepiece

  • Modèles basés sur Universal Sentence Encoder (pour en savoir plus, consultez le code source) :

    • Exactement trois Tensors d'entrée (kTfLiteString)

    • Tensor de texte de requête, avec le nom de métadonnées "inp_text".

    • Tensor de contexte de réponse, avec le nom de métadonnées "res_context".

    • Tensor de texte de réponse, avec le nom de métadonnée "res_text".

    • Exactement deux Tensors de sortie (kTfLiteUInt8/kTfLiteFloat32)

    • Tensor d'encodage de requête, avec le nom de métadonnées "query_encoding".

    • Tensor d'encodage de la réponse, avec le nom de métadonnées "response_encoding".

    • Les deux avec des composants N correspondant aux dimensions N du vecteur de caractéristiques renvoyé pour cette couche de sortie.

    • Les deux doivent avoir 2 ou 4 dimensions, c'est-à-dire [1 x N] ou [1 x 1 x 1 x N].

  • Tout modèle d'embedding de texte avec :

    • Tensor de texte d'entrée (kTfLiteString)
    • Au moins un Tensor d'embedding de sortie (kTfLiteUInt8/kTfLiteFloat32)

    • avec N composants correspondant aux N dimensions du vecteur de caractéristiques renvoyé pour cette couche de sortie.

    • Deux ou quatre dimensions, c'est-à-dire [1 x N] ou [1 x 1 x 1 x N].