Textsuchfunktionen einbinden

Mit der Textsuche kann nach semantisch ähnlichem Text in einem Korpus gesucht werden. Funktioniert indem die Suchanfrage in einen hochdimensionalen Vektor eingebettet wird, der die die semantische Bedeutung der Abfrage, gefolgt von der Ähnlichkeitssuche benutzerdefinierter Index mit ScaNN (Skalierbare nächstgelegene Nachbarn).

Im Gegensatz zur Textklassifizierung (z.B. Bert-Klassifikator für natürliche Sprache) Wenn die Anzahl der Elemente, die erkannt werden können, erhöht werden soll, ist kein erneutes Training erforderlich. für das gesamte Modell. Neue Elemente können hinzugefügt werden, indem der Index einfach neu erstellt wird. Dies gilt auch für ermöglicht die Arbeit mit größeren (mehr als 100.000) Elementen.

Verwenden Sie die Task Library TextSearcher API, um Ihre benutzerdefinierte Textsuche in diesem Bereich bereitzustellen: für mobile Apps.

Wichtige Features der TextSearcher API

  • Nimmt einen einzelnen String als Eingabe, führt die Einbettungsextraktion aus und Suche nach dem nächsten Nachbarn im Index.

  • Eingabetextverarbeitung, einschließlich In-Graph oder Out-of-Graph Wortstück oder Satzsatz Tokenisierungen für Eingabetext.

Vorbereitung

Bevor Sie die TextSearcher API verwenden können, muss ein Index auf der Grundlage des benutzerdefinierter Textkorpus für die Suche. Dies kann mithilfe von Model Maker Searcher API indem Sie die Anleitung.

Dazu benötigen Sie Folgendes:

  • ein TFLite-Texteinbettungsmodell wie den Universal Sentence Encoder. Für Beispiel: <ph type="x-smartling-placeholder">
      </ph>
    • die eins in diesem Colab das für On-Device-Inferenz optimiert ist. Es dauert nur 6 ms, eine Abfrage Textstring auf Pixel 6.
    • die quantisiert eine. Diese ist kleiner als die oben genannte, aber für jede Einbettung 38 ms benötigt.
  • Ihres Textkorpus.

Nach diesem Schritt sollten Sie ein eigenständiges TFLite-Suchmodell haben (z.B. mobilenet_v3_searcher.tflite), das ursprüngliche Modell zur Texteinbettung mit den Index an die TFLite-Modellmetadaten.

Inferenz in Java ausführen

Schritt 1: Gradle-Abhängigkeit und andere Einstellungen importieren

Kopieren Sie die Modelldatei der Suche .tflite in das Asset-Verzeichnis des Android- Modul, in dem das Modell ausgeführt wird. Geben Sie an, dass die Datei nicht komprimiert und fügen Sie die TensorFlow Lite-Bibliothek zum build.gradle des Moduls hinzu. Datei:

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

Schritt 2: Modell verwenden

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

Weitere Informationen finden Sie in der Quellcode und Javadoc finden Sie weitere Optionen zum Konfigurieren von TextSearcher.

Inferenz in C++ ausführen

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

Weitere Informationen finden Sie in der Quellcode finden Sie weitere Optionen zum Konfigurieren von TextSearcher.

Inferenz in Python ausführen

Schritt 1: Pypi-Paket für das TensorFlow Lite-Support installieren

Sie können das Pypi-Paket für die TensorFlow Lite-Unterstützung so installieren: Befehl:

pip install tflite-support

Schritt 2: Modell verwenden

from tflite_support.task import text

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

# Run inference
result = text_searcher.search(text)

Weitere Informationen finden Sie in der Quellcode finden Sie weitere Optionen zum Konfigurieren von TextSearcher.

Beispielergebnisse

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

Probieren Sie die einfache CLI-Demotool für TextSearcher mit eigenen Modell- und Testdaten.