Mit der Aufgabe „MediaPipe-Texteinbettung“ können Sie eine numerische Darstellung von Textdaten erstellen, um ihre semantische Bedeutung zu erfassen. Hier erfährst du, wie du den Texteinbetter für Web- und JavaScript-Apps verwendest.
Weitere Informationen zu den Funktionen, Modellen und Konfigurationsoptionen dieser Aufgabe finden Sie in der Übersicht.
Codebeispiel
Der Beispielcode für Text Embedder bietet eine vollständige Implementierung dieser Aufgabe in JavaScript als Referenz. Mit diesem Code können Sie diese Aufgabe testen und mit dem Erstellen Ihrer eigenen Anwendung zum Einbetten von Text beginnen. Sie können den Beispielcode für den Texteinbetter einfach in Ihrem Webbrowser ansehen, ausführen und bearbeiten.
Einrichtung
In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Codeprojekte speziell für die Verwendung von Text Embedder beschrieben. Allgemeine Informationen zum Einrichten der Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich der Anforderungen an die Plattformversion, finden Sie im Einrichtungsleitfaden für das Web.
JavaScript-Pakete
Texteinbettercode ist über das Paket @mediapipe/tasks-text
verfügbar. Sie können diese Bibliotheken über die Links im Einrichtungsleitfaden für die Plattform herunterladen.
Mit dem folgenden Befehl können Sie die erforderlichen Pakete mit dem folgenden Code für das lokale Staging installieren:
npm install @mediapipe/tasks-text
Wenn die Bereitstellung auf einem Server erfolgen soll, können Sie einen Content Delivery Network-Dienst (CDN) wie jsDelivr verwenden, um Ihrer HTML-Seite Code direkt hinzuzufügen:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
crossorigin="anonymous"></script>
</head>
Modell
Die „MediaPipe-Texteinbettung“-Aufgabe erfordert ein trainiertes Modell, das mit dieser Aufgabe kompatibel ist. Weitere Informationen zu verfügbaren trainierten Modellen für Text Embedder finden Sie in der Aufgabenübersicht im Abschnitt „Modelle“.
Wählen Sie ein Modell aus, laden Sie es herunter und speichern Sie es dann in Ihrem Projektverzeichnis:
<dev-project-root>/app/shared/models
Aufgabe erstellen
Verwenden Sie eine der createFrom...()
-Funktionen von Text Embedder, um die Aufgabe zum Ausführen von Inferenzen vorzubereiten. Sie können die Funktion createFromModelPath()
mit einem relativen oder absoluten Pfad zur trainierten Modelldatei verwenden. Im Codebeispiel unten wird die Verwendung der Funktion createFromOptions()
veranschaulicht. Weitere Informationen zu den verfügbaren Konfigurationsoptionen finden Sie unter Konfigurationsoptionen.
Der folgende Code zeigt, wie diese Aufgabe erstellt und konfiguriert wird:
async function createEmbedder() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textEmbedder = await TextEmbedder.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
},
quantize: true
}
);
}
createEmbedder();
Konfigurationsoptionen
Diese Aufgabe bietet die folgenden Konfigurationsoptionen für Web- und JavaScript-Anwendungen:
Option | Beschreibung | Wertebereich | Standardwert |
---|---|---|---|
l2Normalize |
Gibt an, ob der zurückgegebene Featurevektor mit der L2-Norm normalisiert werden soll. Verwenden Sie diese Option nur, wenn das Modell noch keinen nativen L2_NORMALIZATION TFLite-Vorgang enthält. In den meisten Fällen ist dies bereits der Fall und die L2-Normalisierung wird daher durch TFLite-Inferenz erreicht, ohne dass diese Option erforderlich ist. | Boolean |
False |
quantize |
Gibt an, ob die zurückgegebene Einbettung über eine skalare Quantisierung in Byte quantisiert werden soll. Bei Einbettungen wird implizit davon ausgegangen, dass es sich um eine Einheitsnorm handelt. Daher hat jede Dimension garantiert einen Wert bei [-1,0, 1,0]. Wenn dies nicht der Fall ist, verwenden Sie die Option „l2Normalize“. | Boolean |
False |
Daten vorbereiten
Der Texteinbetter funktioniert mit Textdaten (string
). Die Aufgabe übernimmt die Vorverarbeitung der Dateneingabe, einschließlich Tokenisierung und Tensor-Vorverarbeitung. Die gesamte Vorverarbeitung erfolgt in der embed
-Funktion. Eine zusätzliche Vorverarbeitung des Eingabetexts ist im Voraus nicht erforderlich.
const inputText = "The input text to be embedded.";
Task ausführen
Der Texteinbetter nutzt die Funktion embed
, um Inferenzen auszulösen. Bei der Texteinbettung bedeutet dies, dass die Einbettungsvektoren für den Eingabetext zurückgegeben werden.
Der folgende Code zeigt, wie die Verarbeitung mit dem Aufgabenmodell ausgeführt wird.
// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
inputText
);
Ergebnisse verarbeiten und anzeigen
Der Texteinbetter gibt einen TextEmbedderResult
aus, der eine Liste der (entweder Gleitkomma- oder skalarquantisierten) Einbettungen für den Eingabetext enthält.
Im Folgenden sehen Sie ein Beispiel für die Ausgabedaten dieser Aufgabe:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Mit der Funktion TextEmbedder.cosineSimilarity
können Sie die semantische Ähnlichkeit von zwei Einbettungen vergleichen. Im folgenden Code sehen Sie ein Beispiel.
// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
embeddingResult.embeddings[0],
otherEmbeddingResult.embeddings[0]);
Der Beispielcode für Text Embedder zeigt, wie die von der Aufgabe zurückgegebenen Einbettungsergebnisse angezeigt werden. Weitere Informationen finden Sie im Codebeispiel.