Mengintegrasikan sematan teks.

Penyematan teks memungkinkan penyematan teks ke dalam vektor fitur berdimensi tinggi yang merepresentasikan makna semantiknya, yang kemudian dapat dibandingkan dengan vektor fitur teks lain untuk mengevaluasi kesamaan semantiknya.

Berbeda dengan penelusuran teks, penyemat teks memungkinkan penghitungan kemiripan antara teks secara langsung, bukan menelusuri indeks yang telah ditentukan sebelumnya yang dibuat dari korpus.

Gunakan Task Library TextEmbedder API untuk men-deploy penyemat teks kustom ke dalam aplikasi seluler Anda.

Fitur utama TextEmbedder API

  • Pemrosesan teks input, termasuk tokenisasi Wordpiece dalam grafik atau di luar grafik atau tokenisasi Sentencepiece pada teks input.

  • Fungsi utilitas bawaan untuk menghitung kemiripan kosinus antara vektor fitur.

Model penyematan teks yang didukung

Model berikut dijamin kompatibel dengan TextEmbedder API.

Menjalankan inferensi di 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());

Lihat kode sumber untuk opsi lainnya dalam mengonfigurasi TextEmbedder.

Menjalankan inferensi di Python

Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.

Anda dapat menginstal paket Pypi Dukungan TensorFlow Lite menggunakan perintah berikut:

pip install tflite-support

Langkah 2: Menggunakan model

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)

Lihat kode sumber untuk opsi lainnya dalam mengonfigurasi TextEmbedder.

Hasil contoh

Kemiripan kosinus antara vektor fitur yang dinormalisasi menampilkan skor antara -1 dan 1. Semakin tinggi nilainya, semakin baik, yaitu kesamaan kosinus 1 berarti kedua vektor identik.

Cosine similarity: 0.954312

Coba alat demo CLI sederhana untuk TextEmbedder dengan model dan data pengujian Anda sendiri.

Persyaratan kompatibilitas model

API TextEmbedder mengharapkan model TFLite dengan Metadata Model TFLite wajib.

Tiga jenis model utama yang didukung:

  • Model berbasis BERT (lihat kode sumber untuk mengetahui detail selengkapnya):

    • Tepat 3 tensor input (kTfLiteString)

    • Tensor ID, dengan nama metadata "ids",

    • Tensor mask, dengan nama metadata "mask".

    • Tensor ID segmen, dengan nama metadata "segment_ids"

    • Tepat satu tensor output (kTfLiteUInt8/kTfLiteFloat32)

    • dengan komponen N yang sesuai dengan dimensi N dari vektor fitur yang ditampilkan untuk lapisan output ini.

    • 2 atau 4 dimensi, yaitu [1 x N] atau [1 x 1 x 1 x N].

    • input_process_units untuk Wordpiece/Sentencepiece Tokenizer

  • Model berbasis Universal Sentence Encoder (lihat kode sumber untuk mengetahui detail selengkapnya):

    • Tepat 3 tensor input (kTfLiteString)

    • Tensor teks kueri, dengan nama metadata "inp_text".

    • Tensor konteks respons, dengan nama metadata "res_context".

    • Tensor teks respons, dengan nama metadata "res_text".

    • Tepat 2 tensor output (kTfLiteUInt8/kTfLiteFloat32)

    • Tensor encoding kueri, dengan nama metadata "query_encoding".

    • Tensor encoding respons, dengan nama metadata "response_encoding".

    • Keduanya dengan komponen N yang sesuai dengan dimensi N dari vektor fitur yang ditampilkan untuk lapisan output ini.

    • Keduanya dengan 2 atau 4 dimensi, yaitu [1 x N] atau [1 x 1 x 1 x N].

  • Model penyematan teks apa pun dengan:

    • Tensor teks input (kTfLiteString)
    • Setidaknya satu tensor sematan output (kTfLiteUInt8/kTfLiteFloat32)

    • dengan komponen N yang sesuai dengan dimensi N dari vektor fitur yang ditampilkan untuk lapisan output ini.

    • 2 atau 4 dimensi, yaitu [1 x N] atau [1 x 1 x 1 x N].