整合文字搜尋工具

文字搜尋可讓使用者搜尋語料庫中語意相似的文字。可以正常運作 也就是將搜尋查詢嵌入代表圖片的高維度向量 查詢的語意含義,後面接著在預先定義、 自訂索引 ScaNN (可大規模擴充的最近鄰點)。

與文字分類 (例如 BERT 自然語言分類器) 擴大可辨識的辨識項目數量,不需要重新訓練 整個模型如要加入新的項目,只需重新建構索引即可。這也 協助大型公司 (超過 10 萬件) 企業合作。

使用工作程式庫 TextSearcher API 將自訂文字搜尋工具部署至 您的行動應用程式

TextSearcher API 的主要功能

  • 取用單一字串做為輸入內容,執行嵌入擷取並 索引中最鄰近搜尋的項目。

  • 輸入文字處理,包括圖形或非圖形 文字片段語句 符記化

必要條件

使用 TextSearcher API 前,必須先根據 要搜尋的文字語料庫此功能可以使用 Model Maker Searcher API 遵循並調整 教學課程)

為此,您需要符合以下條件:

  • TFLite 文字嵌入程式模型,例如 Universal Sentence Encoder適用對象 例如
    • 這個 重新訓練而成 Colab, 此指標經過最佳化調整,適合用於裝置端推論。查詢 。
    • 這個 量化 一個小於上述的,但每次嵌入需要 38 毫秒
  • 文字語料庫

完成這個步驟後,您應該擁有獨立的 TFLite 搜尋工具模型 (例如 mobilenet_v3_searcher.tflite),這是含有 Transformer 的原始文字嵌入器模型 附加至 TFLite 模型中繼資料

在 Java 中執行推論

步驟 1:匯入 Gradle 依附元件和其他設定

.tflite 搜尋工具模型檔案複製到 Android 的素材資源目錄 也就是要用來執行模型的模組指定 並將 TensorFlow Lite 程式庫新增至模組的 build.gradle 檔案:

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

步驟 2:使用模型

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

詳情請參閱 原始碼和 javadoc 取得更多設定 TextSearcher 的選項。

在 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();

詳情請參閱 原始碼 取得更多設定 TextSearcher 的選項。

在 Python 中執行推論

步驟 1:安裝 TensorFlow Lite Support Pypi 套件。

您可以使用下列指令安裝 TensorFlow Lite Support Pypi 套件 指令:

pip install tflite-support

步驟 2:使用模型

from tflite_support.task import text

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

# Run inference
result = text_searcher.search(text)

詳情請參閱 原始碼 取得更多設定 TextSearcher 的選項。

搜尋結果範例

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

試試簡易設計 TextSearcher 適用的 CLI 示範工具 使用自己的模型與測試資料