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.