Integracja z umieszczaniem tekstu.

Narzędzia do tworzenia wektorów dystrybucyjnych 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, aby ocenić ich podobieństwo semantyczne.

W przeciwieństwie do wyszukiwania tekstowego moduł do osadzania tekstu umożliwia obliczanie podobieństwa między tekstami na bieżąco, zamiast przeszukiwania wstępnie zdefiniowanego indeksu utworzonego na podstawie korpusu.

Użyj interfejsu Task Library TextEmbedder API, aby wdrożyć niestandardowy moduł do osadzania tekstu w aplikacjach mobilnych.

Kluczowe funkcje interfejsu TextEmbedder API

Obsługiwane modele wektorów dystrybucyjnych tekstu

Te modele są zgodne z TextEmbedderAPI.

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

Więcej opcji konfigurowania TextEmbedder znajdziesz w kodzie źródłowym.

Uruchamianie wnioskowania w Pythonie

Krok 1. Zainstaluj pakiet TensorFlow Lite Support Pypi.

Pakiet TensorFlow Lite Support Pypi możesz zainstalować za pomocą tego 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)

Więcej opcji konfigurowania TextEmbedder znajdziesz w kodzie źródłowym.

Przykładowe wyniki

Podobieństwo cosinusowe między znormalizowanymi wektorami cech zwraca wynik z zakresu od -1 do 1. Im wyższa wartość, tym lepiej. Podobieństwo cosinusowe równe 1 oznacza, że 2 wektory są identyczne.

Cosine similarity: 0.954312

Wypróbuj proste narzędzie demonstracyjne CLI dla TextEmbedder z własnym modelem i danymi testowymi.

Wymagania dotyczące zgodności modeli

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

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

  • Modele oparte na BERT (więcej informacji znajdziesz w kodzie źródłowym):

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

    • tensor identyfikatorów o nazwie metadanych „ids”,

    • Tensor maski z nazwą metadanych „mask”.

    • Tensor identyfikatorów segmentów z nazwą metadanych „segment_ids”

    • Dokładnie 1 tensor wyjściowy (kTfLiteUInt8/kTfLiteFloat32)

    • N komponentami odpowiadającymi N wymiarom zwróconego wektora cech dla tej warstwy wyjściowej.

    • Może to być 2 lub 4 wymiary, czyli [1 x N] lub [1 x 1 x 1 x N].

    • Jednostki input_process_units dla tokenizera Wordpiece/Sentencepiece

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

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

    • Tensor tekstu zapytania z nazwą metadanych „inp_text”.

    • Tensor kontekstu odpowiedzi o nazwie metadanych „res_context”.

    • Tensor tekstu odpowiedzi z nazwą metadanych „res_text”.

    • Dokładnie 2 tensory wyjściowe (kTfLiteUInt8/kTfLiteFloat32)

    • Tensor kodowania zapytania o nazwie metadanych „query_encoding”.

    • Tensor kodowania odpowiedzi o nazwie metadanych „response_encoding”.

    • Oba mają komponenty N odpowiadające wymiarom N zwróconego wektora cech dla tej warstwy wyjściowej.

    • Oba z 2 lub 4 wymiarami, czyli [1 x N] lub [1 x 1 x 1 x N].

  • dowolny model wektorów dystrybucyjnych tekstu, który:

    • Tensor tekstu wejściowego (kTfLiteString)
    • Co najmniej 1 tensor osadzania danych wyjściowych (kTfLiteUInt8/kTfLiteFloat32)

    • N komponentami odpowiadającymi N wymiarom zwróconego wektora cech dla tej warstwy wyjściowej.

    • Może to być 2 lub 4 wymiary, czyli [1 x N] lub [1 x 1 x 1 x N].