Integrasikan pencari teks

Pencarian teks memungkinkan pencarian teks yang serupa secara semantik dalam sebuah korpus. Ia bekerja dengan menyematkan kueri penelusuran ke dalam vektor berdimensi tinggi yang mewakili makna semantik kueri, diikuti dengan penelusuran kesamaan dalam indeks khusus yang telah ditentukan sebelumnya menggunakan ScaNN (Scalable Nearest Neighbors).

Berbeda dengan klasifikasi teks (misalnya pengklasifikasi bahasa alami Bert ), menambah jumlah item yang dapat dikenali tidak memerlukan pelatihan ulang seluruh model. Item baru dapat ditambahkan hanya dengan membangun kembali indeks. Hal ini juga memungkinkan bekerja dengan korpus yang lebih besar (100k+ item).

Gunakan API TextSearcher Pustaka Tugas untuk menyebarkan pencari teks khusus ke dalam aplikasi seluler Anda.

Fitur utama dari API TextSearcher

  • Mengambil satu string sebagai masukan, melakukan ekstraksi penyematan dan pencarian tetangga terdekat dalam indeks.

  • Pemrosesan teks masukan, termasuk tokenisasi Wordpiece atau Kalimat dalam grafik atau di luar grafik pada teks masukan.

Prasyarat

Sebelum menggunakan TextSearcher API, indeks perlu dibuat berdasarkan korpus teks khusus yang akan dicari. Hal ini dapat dicapai dengan menggunakan Model Maker Searcher API dengan mengikuti dan mengadaptasi tutorial .

Untuk melakukan ini, Anda memerlukan:

  • model penyematan teks TFLite, seperti Universal Sentence Encoder. Misalnya,
    • yang dilatih ulang di Colab ini, yang dioptimalkan untuk inferensi di perangkat. Hanya diperlukan waktu 6 mdtk untuk menanyakan string teks di Pixel 6.
    • yang terkuantisasi , yang lebih kecil dari yang di atas tetapi membutuhkan 38 ms untuk setiap penyematan.
  • kumpulan teks Anda.

Setelah langkah ini, Anda akan memiliki model pencari TFLite mandiri (misalnya mobilenet_v3_searcher.tflite ), yang merupakan model penyematan teks asli dengan indeks yang dilampirkan ke Metadata Model TFLite .

Jalankan inferensi di Java

Langkah 1: Impor ketergantungan Gradle dan pengaturan lainnya

Salin file model pencari .tflite ke direktori aset modul Android tempat model akan dijalankan. Tentukan bahwa file tersebut tidak boleh dikompresi, dan tambahkan pustaka TensorFlow Lite ke file build.gradle modul:

android {
    // Other settings

    // Specify tflite index file should not be compressed for the app apk
    aaptOptions {
        noCompress "tflite"
    }

}

dependencies {
    // Other dependencies

    // Import the Task Vision Library dependency (NNAPI is included)
    implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.4'
    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4'
}

Langkah 2: Menggunakan model

// Initialization
TextSearcherOptions options =
    TextSearcherOptions.builder()
        .setBaseOptions(BaseOptions.builder().useGpu().build())
        .setSearcherOptions(
            SearcherOptions.builder().setL2Normalize(true).build())
        .build();
TextSearcher textSearcher =
    textSearcher.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<NearestNeighbor> results = textSearcher.search(text);

Lihat kode sumber dan javadoc untuk opsi lebih lanjut untuk mengonfigurasi TextSearcher .

Jalankan inferensi di C++

// Initialization
TextSearcherOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
options.mutable_embedding_options()->set_l2_normalize(true);
std::unique_ptr<TextSearcher> text_searcher = TextSearcher::CreateFromOptions(options).value();

// Run inference with your input, `input_text`.
const SearchResult result = text_searcher->Search(input_text).value();

Lihat kode sumber untuk opsi lebih lanjut untuk mengonfigurasi TextSearcher .

Jalankan inferensi dengan Python

Langkah 1: Instal paket Pypi Dukungan TensorFlow Lite.

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

pip install tflite-support

Langkah 2: Menggunakan model

from tflite_support.task import text

# Initialization
text_searcher = text.TextSearcher.create_from_file(model_path)

# Run inference
result = text_searcher.search(text)

Lihat kode sumber untuk opsi lebih lanjut untuk mengonfigurasi TextSearcher .

Contoh hasil

Results:
 Rank#0:
  metadata: The sun was shining on that day.
  distance: 0.04618
 Rank#1:
  metadata: It was a sunny day.
  distance: 0.10856
 Rank#2:
  metadata: The weather was excellent.
  distance: 0.15223
 Rank#3:
  metadata: The cat is chasing after the mouse.
  distance: 0.34271
 Rank#4:
  metadata: He was very happy with his newly bought car.
  distance: 0.37703

Cobalah alat demo CLI sederhana untuk TextSearcher dengan model dan data pengujian Anda sendiri.