Integrieren Sie Texteinbettungen.

Mit Texteinbettungen lässt sich Text in einen hochdimensionalen Featurevektor einbetten, der seine semantische Bedeutung repräsentiert. Dieser kann dann mit dem Featurevektor anderer Texte verglichen werden, um ihre semantische Ähnlichkeit zu bewerten.

Im Gegensatz zur Textsuche ermöglicht der Text-Embedder, die Ähnlichkeit zwischen Texten spontan zu berechnen, anstatt einen vordefinierten Index zu durchsuchen, der aus einem Korpus erstellt wurde.

Mit der Task Library-API TextEmbedder können Sie Ihren benutzerdefinierten Text-Embedder in Ihren mobilen Apps bereitstellen.

Wichtige Funktionen der TextEmbedder API

  • Verarbeitung von Eingabetext, einschließlich In-Graph- oder Out-of-Graph-Wordpiece- oder Sentencepiece-Tokenisierung von Eingabetext.

  • Integrierte Dienstprogrammfunktion zum Berechnen der Kosinusähnlichkeit zwischen Featurevektoren.

Unterstützte Modelle für Texteinbettungen

Die folgenden Modelle sind garantiert mit der TextEmbedder API kompatibel.

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 Optionen zum Konfigurieren von TextEmbedder finden Sie im Quellcode.

Inferenz in Python ausführen

Schritt 1: TensorFlow Lite Support-PyPI-Paket installieren

Sie können das TensorFlow Lite Support-PyPI-Paket mit dem folgenden Befehl installieren:

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 Optionen zum Konfigurieren von TextEmbedder finden Sie im Quellcode.

Beispielergebnisse

Die Kosinusähnlichkeit zwischen normalisierten Feature-Vektoren ergibt einen Wert zwischen -1 und 1. Je höher der Wert, desto besser. Eine Kosinusähnlichkeit von 1 bedeutet, dass die beiden Vektoren identisch sind.

Cosine similarity: 0.954312

Testen Sie das einfache CLI-Demotool für TextEmbedder mit Ihrem eigenen Modell und Ihren eigenen Testdaten.

Anforderungen an die Modellkompatibilität

Für die TextEmbedder API ist ein TFLite-Modell mit obligatorischen TFLite-Modellmetadaten erforderlich.

Es werden drei Haupttypen von Modellen unterstützt:

  • BERT-basierte Modelle (weitere Informationen finden Sie im Quellcode):

    • Genau 3 Eingabetensoren (kTfLiteString)

    • Tensor „IDs“ mit dem Metadatennamen „ids“

    • Maskentensor mit dem Metadaten-Namen „mask“.

    • Tensor mit Segment-IDs, mit dem Metadatennamen „segment_ids“

    • Genau ein Ausgabetensor (kTfLiteUInt8/kTfLiteFloat32)

    • mit N Komponenten, die den N Dimensionen des zurückgegebenen Feature-Vektors für diese Ausgabeschicht entsprechen.

    • Entweder 2 oder 4 Dimensionen, d.h. [1 x N] oder [1 x 1 x 1 x N].

    • input_process_units für Wordpiece-/Sentencepiece-Tokenizer

  • Modelle, die auf dem Universal Sentence Encoder basieren (weitere Informationen finden Sie im Quellcode):

    • Genau 3 Eingabetensoren (kTfLiteString)

    • Texttensor für die Anfrage mit dem Metadatennamen „inp_text“.

    • Antwortkontext-Tensor mit dem Metadatennamen „res_context“.

    • Tensor für Antworttext mit dem Metadaten-Namen „res_text“.

    • Genau 2 Ausgabetensoren (kTfLiteUInt8/kTfLiteFloat32)

    • Tensor für die Abfragecodierung mit dem Metadaten-Namen „query_encoding“.

    • Tensor für die Antwortcodierung mit dem Metadaten-Namen „response_encoding“.

    • Beide mit N-Komponenten, die den N-Dimensionen des zurückgegebenen Feature-Vektors für diese Ausgabeschicht entsprechen.

    • Beide mit 2 oder 4 Dimensionen, d.h. [1 x N] oder [1 x 1 x 1 x N].

  • Jedes Texteinbettungsmodell mit:

    • Ein Eingabetext-Tensor (kTfLiteString)
    • Mindestens ein Ausgabeeinbettungs-Tensor (kTfLiteUInt8/kTfLiteFloat32)

    • mit N Komponenten, die den N Dimensionen des zurückgegebenen Feature-Vektors für diese Ausgabeschicht entsprechen.

    • Entweder 2 oder 4 Dimensionen, d.h. [1 x N] oder [1 x 1 x 1 x N].