Intégrez des intégrateurs de texte.

Les représentations vectorielles continues de texte permettent d'intégrer du texte dans un vecteur de caractéristiques de grande dimension représentant sa signification sémantique, qui peut ensuite être comparée à la caractéristique d'autres textes pour évaluer leur similarité sémantique.

Par opposition à recherche textuelle, La représentation vectorielle continue de texte permet de calculer la similarité entre les textes à la volée au lieu d'effectuer une recherche dans un index prédéfini construit à partir d'un corpus.

Déployez votre outil d'intégration de texte personnalisé à l'aide de l'API TextEmbedder de la bibliothèque de tâches. vos applications mobiles.

Principales fonctionnalités de l'API TextEmbedder

  • Traitement du texte d'entrée, y compris dans et hors graphique Texte verbal ou Extrait de phrase et tokenisations sur le texte d'entrée.

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

Modèles de système d'intégration de texte compatibles

La compatibilité des modèles suivants avec TextEmbedder est garantie. API.

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());

Consultez le code source pour afficher d'autres options de configuration de TextEmbedder.

Exécuter une inférence en Python

Étape 1: Installez le package Pypi de support TensorFlow Lite.

Vous pouvez installer le package Pypi de support TensorFlow Lite à 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)

Consultez le code source pour afficher d'autres options de configuration de TextEmbedder.

Exemples de résultats

La similarité cosinus entre les vecteurs de caractéristiques normalisés renvoie un score compris entre -1 et 1. Plus elle est élevée, mieux c'est. En d'autres termes, une similarité cosinus de 1 signifie que les deux vecteurs identiques.

Cosine similarity: 0.954312

Essayez la méthode la plus simple Outil de démonstration de la CLI 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 attributs Métadonnées du modèle TFLite.

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

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

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

      • Tensor d'identifiants, avec le nom de métadonnées "ids",
      • Tensor de masque, avec le nom de métadonnées "mask".
      • Tensor des ID de segment, avec le nom de métadonnées "segment_ids"
    • Un seul Tensor de sortie (kTfLiteUInt8/kTfLiteFloat32)

      • avec des composants N correspondant aux dimensions N du vecteur de caractéristiques renvoyé pour cette couche de sortie.
      • Deux ou quatre dimensions ([1 x N] ou [1 x 1 x 1 x N], par exemple).
    • Une valeur "input_process_units" pour la fonction de tokenisation de WordFragment/Sentenceroom

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

    • 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 du texte de réponse, avec le nom de métadonnées "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 réponse, avec le nom de métadonnées "response_encoding".
      • Tous deux avec des composants N correspondant aux dimensions N du vecteur de caractéristiques renvoyé pour cette couche de sortie.
      • Les deux valeurs doivent comporter 2 ou 4 dimensions (par exemple, [1 x N] ou [1 x 1 x 1 x N]).
  • Tout modèle d'intégration de texte avec:

    • Tensor de texte d'entrée (kTfLiteString)
    • Au moins un Tensor de représentation vectorielle continue de sortie (kTfLiteUInt8/kTfLiteFloat32)

      • avec des composants N correspondant aux dimensions N du vecteur de caractéristiques renvoyé pour cette couche de sortie.
      • Deux ou quatre dimensions ([1 x N] ou [1 x 1 x 1 x N], par exemple).