Integrieren Sie Texteinbettungen.

Texteinbettungen ermöglichen die Einbettung von Text in einen hochdimensionalen Featurevektor die ihre semantische Bedeutung darstellt, die dann mit der Funktion Vektor anderer Texte, um ihre semantische Ähnlichkeit zu bewerten.

Im Gegensatz zu Textsuche Der Texteinbetter ermöglicht die spontane Berechnung der Ähnlichkeit zwischen Texten. anstatt in einem vordefinierten Index zu suchen, der aus einem Korpus erstellt wurde.

Verwenden Sie die Task Library TextEmbedder API, um Ihren benutzerdefinierten Texteinbetter in für mobile Apps.

Wichtige Funktionen der TextEmbedder API

  • Eingabetextverarbeitung, einschließlich In-Graph oder Out-of-Graph Wortstück oder Satzsatz Tokenisierungen für Eingabetext.

  • Integrierte Dienstprogrammfunktion zur Berechnung der Kosinus-Ähnlichkeit zwischen Featurevektoren.

Unterstützte Modelle für Texteinbettungen

Die folgenden Modelle sind garantiert kompatibel mit dem TextEmbedder der API erstellen.

Inferenz in C++ ausführen

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

Weitere Informationen finden Sie in der Quellcode finden Sie weitere Optionen zum Konfigurieren von TextEmbedder.

Inferenz in Python ausführen

Schritt 1: Pypi-Paket für das TensorFlow Lite-Support installieren

Sie können das Pypi-Paket für die TensorFlow Lite-Unterstützung so installieren: Befehl:

pip install tflite-support

Schritt 2: Modell verwenden

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)

Weitere Informationen finden Sie in der Quellcode finden Sie weitere Optionen zum Konfigurieren von TextEmbedder.

Beispielergebnisse

Die Kosinus-Ähnlichkeit zwischen normalisierten Featurevektoren gibt einen Wert zwischen -1 zurück und 1. Je höher, desto besser, d.h. eine Kosinus-Ähnlichkeit von 1 bedeutet, dass die beiden Vektoren identisch.

Cosine similarity: 0.954312

Probieren Sie die einfache CLI-Demotool für TextEmbedder mit eigenen Modell- und Testdaten.

Anforderungen an die Modellkompatibilität

Die TextEmbedder API erwartet ein TFLite-Modell mit obligatorischen TFLite-Modellmetadaten.

Es werden drei Haupttypen von Modellen unterstützt:

  • BERT-basierte Modelle (siehe Quellcode )

    • Genau 3 Eingabetensoren (kTfLiteString)

      • ID-Tensor mit dem Metadatennamen „ids“,
      • Maskierungstensor mit dem Metadatennamen „mask“.
      • Segment-ID-Tensor mit Metadatenname „segment_ids“
    • Genau ein Ausgabetensor (kTfLiteUInt8/kTfLiteFloat32)

      • wobei N-Komponenten den N-Dimensionen der hat einen Featurevektor für diese Ausgabeebene zurückgegeben.
      • Entweder zwei oder vier Dimensionen, z.B. [1 x N] oder [1 x 1 x 1 x N].
    • Ein Eingabe-Prozesseinheiten-Einheiten (input_process_units) für die Tokenizer-Funktion des Wortteils/Satzes.

  • Auf Universal Sentence Encoder basierende Modelle (siehe Quellcode )

    • Genau 3 Eingabetensoren (kTfLiteString)

      • Abfragetexttensor mit dem Metadatennamen „inp_text“.
      • Antwortkontexttensor mit dem Metadatennamen „res_context“.
      • Antworttexttensor mit dem Metadatennamen „res_text“.
    • Genau 2 Ausgabetensoren (kTfLiteUInt8/kTfLiteFloat32)

      • Tensor für Abfragecodierung mit dem Metadatennamen „query_encoding“.
      • Antwortcodierungs-Tensor mit dem Metadatennamen „response_encoding“.
      • Beide mit N-Komponenten, die den N-Dimensionen des hat einen Featurevektor für diese Ausgabeebene zurückgegeben.
      • Beide mit zwei oder vier Dimensionen, z.B. [1 x N] oder [1 x 1 x 1 x N].
  • Jedes Texteinbettungsmodell mit:

    • Einen Eingabetexttensor (kTfLiteString)
    • Mindestens ein Ausgabe-Einbettungstensor (kTfLiteUInt8/kTfLiteFloat32)

      • wobei N-Komponenten den N-Dimensionen der hat einen Featurevektor für diese Ausgabeebene zurückgegeben.
      • Entweder zwei oder vier Dimensionen, z.B. [1 x N] oder [1 x 1 x 1 x N].