Przewodnik umieszczania tekstu w internecie

Zadanie MediaPipe Text Embedder umożliwia tworzenie numerycznej reprezentacji danych tekstowych w celu uchwycenia ich znaczenia semantycznego. Z tych instrukcji dowiesz się, jak używać narzędzia do osadzania tekstu w aplikacjach internetowych i aplikacjach JavaScript.

Więcej informacji o możliwościach, modelach i opcjach konfiguracji tego zadania znajdziesz w Przeglądzie.

Przykładowy kod

Przykładowy kod Text Embedder zawiera kompletną implementację tego zadania w JavaScript. Ten kod pomoże Ci przetestować to zadanie i zacząć tworzyć własną aplikację do wektora dystrybucyjnego tekstu. Możesz wyświetlać, uruchamiać i edytować przykład wektora dystrybucyjnego tekstu w przeglądarce.

Konfiguracja

W tej sekcji opisujemy najważniejsze kroki konfigurowania środowiska programistycznego i projektów kodu pod kątem korzystania z Text Embedder. Ogólne informacje o konfigurowaniu środowiska programistycznego do korzystania z interfejsu MediaPipe Tasks, w tym wymagania dotyczące wersji platformy, znajdziesz w przewodniku po konfiguracji na potrzeby internetu.

Pakiety JavaScript

Kod Text Embedder jest dostępny w pakiecie @mediapipe/tasks-text. Te biblioteki możesz znaleźć i pobrać, korzystając z linków podanych w przewodniku po konfiguracji platformy.

Wymagane pakiety możesz zainstalować za pomocą tego kodu w przypadku lokalnego środowiska testowego za pomocą tego polecenia:

npm install @mediapipe/tasks-text

Jeśli chcesz wdrożyć kod na serwerze, możesz użyć usługi sieci dostarczania treści (CDN), np. jsDelivr, aby dodać kod bezpośrednio do strony HTML w ten sposób:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

Model

Zadanie MediaPipe Text Embedder wymaga wytrenowanego modelu, który jest z nim zgodny. Więcej informacji o dostępnych wytrenowanych modelach do osadzania tekstu znajdziesz w sekcji Modele w omówieniu zadania.

Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:

<dev-project-root>/app/shared/models

Tworzenie zadania

Użyj jednej z funkcji Text Embedder createFrom...(), aby przygotować zadanie do uruchomienia wnioskowania. Funkcji createFromModelPath() możesz używać ze ścieżką względną lub bezwzględną do wytrenowanego pliku modelu. Poniższy przykład kodu pokazuje, jak używać funkcji createFromOptions(). Więcej informacji o dostępnych opcjach konfiguracji znajdziesz w artykule Opcje konfiguracji.

Poniższy kod pokazuje, jak utworzyć i skonfigurować to zadanie:

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

Opcje konfiguracji

To zadanie ma te opcje konfiguracji w przypadku aplikacji internetowych i aplikacji napisanych w języku JavaScript:

Nazwa opcji Opis Zakres wartości Wartość domyślna
l2Normalize Określa, czy zwrócony wektor cech ma być znormalizowany za pomocą normy L2. Używaj tej opcji tylko wtedy, gdy model nie zawiera jeszcze natywnej operacji L2_NORMALIZATION TFLite. W większości przypadków tak jest, więc normalizacja L2 jest osiągana przez wnioskowanie TFLite bez potrzeby używania tej opcji. Boolean False
quantize Określa, czy zwrócony wektor dystrybucyjny ma być skwantyzowany do bajtów za pomocą kwantyzacji skalarnej. Wektory dystrybucyjne są domyślnie normalizowane, więc każda wartość wymiaru mieści się w zakresie [-1,0, 1,0]. Jeśli tak nie jest, użyj opcji l2Normalize. Boolean False

Przygotuj dane

Komponent Text Embedder działa na danych tekstowych (string). Zadanie obsługuje wstępne przetwarzanie danych wejściowych, w tym tokenizację i przetwarzanie wstępne tensorów. Całe przetwarzanie wstępne odbywa się w funkcji embed. Nie musisz wcześniej dodatkowo przetwarzać tekstu wejściowego.

const inputText = "The input text to be embedded.";

Uruchamianie zadania

Moduł do osadzania tekstu używa funkcji embed do wywoływania wnioskowania. W przypadku wektorów dystrybucyjnych tekstu oznacza to zwracanie wektorów dystrybucyjnych dla tekstu wejściowego.

Poniższy kod pokazuje, jak wykonać przetwarzanie za pomocą modelu zadania.

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

Obsługa i wyświetlanie wyników

Narzędzie Text Embedder zwraca TextEmbedderResult, który zawiera listę wektorów (z reprezentacją zmiennoprzecinkową lub skwantowanych skalarnie) dla tekstu wejściowego.

Poniżej znajdziesz przykład danych wyjściowych tego zadania:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

Możesz porównać podobieństwo semantyczne 2 wektorów za pomocą funkcji TextEmbedder.cosineSimilarity. Przykład znajdziesz w poniższym kodzie.

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

Przykładowy kod Text Embedder pokazuje, jak wyświetlać wyniki osadzania zwrócone przez zadanie. Więcej informacji znajdziesz w przykładzie.