Tích hợp trình tìm kiếm văn bản

Tính năng tìm kiếm văn bản cho phép tìm kiếm văn bản tương tự về mặt ngữ nghĩa trong một tập sao lục. Hoạt động bằng cách nhúng truy vấn tìm kiếm vào một vectơ cao chiều biểu thị cho ý nghĩa ngữ nghĩa của truy vấn, theo sau là tìm kiếm tương tự trong chỉ mục tuỳ chỉnh đang sử dụng ScaNN (Vị trí lân cận có thể mở rộng).

Khác với việc phân loại văn bản (ví dụ: Thuật toán phân loại ngôn ngữ tự nhiên của Bert), để tăng số lượng mục có thể được công nhận không cần phải đào tạo lại toàn bộ mô hình. Các mục mới có thể được thêm vào chỉ cần tạo lại chỉ mục. Việc này cũng cho phép làm việc với các tập sao lục lớn hơn (hơn 100 nghìn mục).

Sử dụng API TextSearcher của Thư viện tác vụ để triển khai trình tìm kiếm văn bản tuỳ chỉnh vào ứng dụng dành cho thiết bị di động của bạn.

Các tính năng chính của TextSearcher API

  • Lấy một chuỗi duy nhất làm dữ liệu đầu vào, thực hiện trích xuất nhúng và tìm kiếm lân cận gần nhất trong chỉ mục.

  • Xử lý văn bản đầu vào, bao gồm cả trong biểu đồ hoặc ngoài biểu đồ Từ vựng hoặc Đoạn câu mã hoá trên văn bản đầu vào.

Điều kiện tiên quyết

Trước khi sử dụng API TextSearcher, bạn cần tạo một chỉ mục dựa trên tập hợp văn bản tùy chỉnh để tìm kiếm. Có thể thực hiện điều này bằng cách sử dụng API Trình tìm kiếm mô hình Maker bằng cách làm theo và điều chỉnh hướng dẫn.

Để làm được điều này, bạn sẽ cần:

  • một mô hình nhúng văn bản TFLite, chẳng hạn như Universal Sentence Encoder. Cho ví dụ:
    • thời gian một đã được đào tạo lại về chủ đề này Colab, được tối ưu hoá cho suy luận trên thiết bị. Chỉ mất 6 mili giây để truy vấn một chuỗi văn bản trên Pixel 6.
    • thời gian lượng tử hoá một giá trị nhỏ hơn giá trị trên nhưng mất 38 mili giây cho mỗi lần nhúng.
  • tập hợp văn bản của bạn.

Sau bước này, bạn sẽ có một mô hình người tìm kiếm TFLite độc lập (ví dụ: mobilenet_v3_searcher.tflite), đây là mô hình nhúng văn bản gốc với chỉ mục được đính kèm vào Siêu dữ liệu mô hình TFLite.

Chạy dự đoán trong Java

Bước 1: Nhập phần phụ thuộc Gradle và các chế độ cài đặt khác

Sao chép tệp mô hình người tìm kiếm .tflite vào thư mục tài sản của Android mô-đun mà mô hình sẽ chạy. Chỉ định rằng tệp không được nén và thêm thư viện TensorFlow Lite vào build.gradle của mô-đun tệp:

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
    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'
}

Bước 2: Sử dụng mô hình

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

Xem mã nguồn và javadoc để có thêm lựa chọn để định cấu hình TextSearcher.

Chạy dự đoán trong 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();

Xem mã nguồn để có thêm lựa chọn để định cấu hình TextSearcher.

Chạy suy luận trong Python

Bước 1: Cài đặt gói TensorFlow Lite Support Pypi.

Bạn có thể cài đặt gói TensorFlow Lite Support Pypi bằng cách dùng như sau :

pip install tflite-support

Bước 2: Sử dụng mô hình

from tflite_support.task import text

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

# Run inference
result = text_searcher.search(text)

Xem mã nguồn để có thêm lựa chọn để định cấu hình TextSearcher.

Kết quả mẫu

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

Thử mẹo đơn giản Công cụ minh hoạ CLI cho TextSearcher thông qua mô hình và dữ liệu thử nghiệm của riêng bạn.