Zintegruj narzędzia do osadzania tekstu.

Narzędzia do osadzania tekstu umożliwiają osadzanie tekstu w wielowymiarowym wektorze cech reprezentującym jego znaczenie semantyczne, który można następnie porównać z wektorem cech innych tekstów w celu oceny ich podobieństwa semantycznego.

W przeciwieństwie do wyszukiwania tekstu , moduł umieszczania tekstu umożliwia obliczanie podobieństwa między tekstami na bieżąco, zamiast przeszukiwać wstępnie zdefiniowany indeks zbudowany z korpusu.

Użyj interfejsu API TextEmbedder biblioteki zadań, aby wdrożyć niestandardowy moduł osadzania tekstu w aplikacjach mobilnych.

Najważniejsze funkcje interfejsu API TextEmbedder

  • Przetwarzanie tekstu wejściowego, w tym tokenizacje Wordpiece lub Zdanie na wykresie lub poza wykresem w tekście wejściowym.

  • Wbudowana funkcja użyteczności do obliczania cosinusa podobieństwa między wektorami cech.

Obsługiwane modele osadzania tekstu

Gwarantujemy kompatybilność następujących modeli z interfejsem API TextEmbedder .

Uruchom wnioskowanie w C++

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

Zobacz kod źródłowy , aby uzyskać więcej opcji konfiguracji TextEmbedder .

Uruchom wnioskowanie w Pythonie

Krok 1: Zainstaluj pakiet Pypi obsługujący TensorFlow Lite.

Możesz zainstalować pakiet TensorFlow Lite Support Pypi za pomocą następującego polecenia:

pip install tflite-support

Krok 2: Korzystanie z modelu

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)

Zobacz kod źródłowy , aby uzyskać więcej opcji konfiguracji TextEmbedder .

Przykładowe wyniki

Podobieństwo cosinusowe między znormalizowanymi wektorami cech zwraca wynik od -1 do 1. Im wyższy, tym lepszy, tj. podobieństwo cosinusowe wynoszące 1 oznacza, że ​​oba wektory są identyczne.

Cosine similarity: 0.954312

Wypróbuj proste narzędzie demonstracyjne CLI dla TextEmbedder, korzystając z własnego modelu i danych testowych.

Wymagania dotyczące kompatybilności modelu

Interfejs API TextEmbedder oczekuje modelu TFLite z obowiązkowymi metadanymi modelu TFLite .

Obsługiwane są trzy główne typy modeli:

  • Modele oparte na BERT (więcej szczegółów można znaleźć w kodzie źródłowym ):

    • Dokładnie 3 tensory wejściowe (kTfLiteString)

      • Tensor identyfikatorów z nazwą metadanych „ids”,
      • Tensor maski z nazwą metadanych „maska”.
      • Tensor identyfikatorów segmentów z nazwą metadanych „segment_ids”
    • Dokładnie jeden tensor wyjściowy (kTfLiteUInt8/kTfLiteFloat32)

      • z N składnikami odpowiadającymi N wymiarom zwróconego wektora cech dla tej warstwy wyjściowej.
      • Albo 2, albo 4 wymiary, tj. [1 x N] lub [1 x 1 x 1 x N] .
    • input_process_units dla tokenizera Wordpiece/Sentencepiece

  • Modele oparte na Universal Sentence Encoder (więcej szczegółów znajdziesz w kodzie źródłowym ):

    • Dokładnie 3 tensory wejściowe (kTfLiteString)

      • Zapytanie o tensor tekstu z nazwą metadanych „inp_text”.
      • Tensor kontekstu odpowiedzi z nazwą metadanych „res_context”.
      • Tensor tekstu odpowiedzi z nazwą metadanych „res_text”.
    • Dokładnie 2 tensory wyjściowe (kTfLiteUInt8/kTfLiteFloat32)

      • Tensor kodowania zapytania z nazwą metadanych „query_encoding”.
      • Tensor kodowania odpowiedzi z nazwą metadanych „response_encoding”.
      • Obydwa z N składnikami odpowiadającymi N wymiarom zwróconego wektora cech dla tej warstwy wyjściowej.
      • Oba z 2 lub 4 wymiarami, tj. [1 x N] lub [1 x 1 x 1 x N] .
  • Dowolny model osadzania tekstu z:

    • Tensor tekstu wejściowego (kTfLiteString)
    • Co najmniej jeden tensor osadzania wyjścia (kTfLiteUInt8/kTfLiteFloat32)

      • z N składnikami odpowiadającymi N wymiarom zwróconego wektora cech dla tej warstwy wyjściowej.
      • Albo 2, albo 4 wymiary, tj. [1 x N] lub [1 x 1 x 1 x N] .