Tính năng tìm kiếm bằng 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 ngữ liệu. Công cụ này hoạt động bằng cách nhúng cụm từ tìm kiếm vào một vectơ nhiều chiều biểu thị ý nghĩa ngữ nghĩa của cụm từ tìm kiếm, sau đó là tìm kiếm mức độ tương đồng trong một chỉ mục tuỳ chỉnh, được xác định trước bằng cách sử dụng ScaNN (Tìm kiếm lân cận có thể mở rộng).
Không giống như phân loại văn bản (ví dụ: trình phân loại ngôn ngữ tự nhiên Bert), việc mở rộng số lượng mục có thể nhận dạng không yêu cầu bạn phải huấn luyện lại toàn bộ mô hình. Bạn có thể thêm các mục mới bằng cách chỉ cần tạo lại chỉ mục. Điều này cũng cho phép làm việc với các kho ngữ liệu lớn hơn (hơn 100.000 mục).
Sử dụng API Thư viện tác vụ TextSearcher để triển khai trình tìm kiếm văn bản tuỳ chỉnh vào các ứng dụng 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 việc trích xuất dữ liệu nhúng và tìm kiếm lân cận trong chỉ mục.
Xử lý văn bản đầu vào, bao gồm cả việc mã hoá Wordpiece hoặc Sentencepiece trong hoặc ngoài biểu đồ 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 tuỳ chỉnh để tìm kiếm. Bạn có thể thực hiện việc này bằng cách sử dụng API Công cụ tìm kiếm của Trình tạo mô hình bằng cách làm theo và điều chỉnh hướng dẫn.
Để làm được việc này, bạn sẽ cần:
- một mô hình nhúng văn bản TFLite, chẳng hạn như Bộ mã hoá câu tổng quát. Ví dụ:
- một được huấn luyện lại trong Colab này, đượ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.
- một lượng tử hoá, nhỏ hơn lượng tử hoá ở trên nhưng mất 38 mili giây cho mỗi lượt nhúng.
- ngữ liệu văn bản của bạn.
Sau bước này, bạn sẽ có một mô hình 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 có chỉ mục được đính kèm vào Siêu dữ liệu mô hình TFLite.
Chạy suy luận bằng 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 công cụ tìm kiếm .tflite vào thư mục tài sản của mô-đun Android nơi 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 tệp build.gradle của mô-đun:
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);
Hãy xem mã nguồn và javadoc để biết thêm các lựa chọn định cấu hình TextSearcher.
Chạy suy luận bằng 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();
Hãy xem mã nguồn để biết thêm các 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 Pypi hỗ trợ TensorFlow Lite.
Bạn có thể cài đặt gói TensorFlow Lite Support Pypi bằng lệ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)
Hãy xem mã nguồn để biết thêm các 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
Dùng thử công cụ minh hoạ CLI đơn giản cho TextSearcher bằng mô hình và dữ liệu kiểm thử của riêng bạn.