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.
Die Universal Sentence Encoder TFLite-Modell von TensorFlow Hub
Benutzerdefinierte Modelle, die den Anforderungen an die Modellkompatibilität.
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 denN
-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]
.
- wobei
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 denN
-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 denN
-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]
.
- wobei