Metin gömücüleri entegre edin.

Metin gömücüler, metnin semantik anlamını temsil eden yüksek boyutlu bir özellik vektörüne gömülmesine olanak tanır; bu daha sonra anlamsal benzerliklerini değerlendirmek için diğer metinlerin özellik vektörüyle karşılaştırılabilir.

Metin aramanın aksine, metin yerleştirici, bir bütünceden oluşturulan önceden tanımlanmış bir dizinde arama yapmak yerine, metinler arasındaki benzerliğin anında hesaplanmasına olanak tanır.

Özel metin yerleştiricinizi mobil uygulamalarınıza dağıtmak için Görev Kitaplığı TextEmbedder API'sini kullanın.

TextEmbedder API'sinin temel özellikleri

Desteklenen metin yerleştirme modelleri

Aşağıdaki modellerin TextEmbedder API ile uyumlu olduğu garanti edilir.

Çıkarımı C++'da çalıştırma

// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();

// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);

// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector()
    result_2.embeddings[0].feature_vector());

TextEmbedder yapılandırmaya yönelik daha fazla seçenek için kaynak koduna bakın.

Python'da çıkarımı çalıştırma

Adım 1: TensorFlow Lite Support Pypi paketini yükleyin.

TensorFlow Lite Support Pypi paketini aşağıdaki komutu kullanarak yükleyebilirsiniz:

pip install tflite-support

Adım 2: Modelin kullanılması

from tflite_support.task import text

# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)

# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

TextEmbedder yapılandırmaya yönelik daha fazla seçenek için kaynak koduna bakın.

Örnek sonuçlar

Normalleştirilmiş özellik vektörleri arasındaki kosinüs benzerliği, -1 ile 1 arasında bir puan döndürür. Ne kadar yüksek olursa o kadar iyidir, yani 1'lik bir kosinüs benzerliği, iki vektörün aynı olduğu anlamına gelir.

Cosine similarity: 0.954312

TextEmbedder için basit CLI demo aracını kendi modeliniz ve test verilerinizle deneyin.

Model uyumluluk gereksinimleri

TextEmbedder API, zorunlu TFLite Model Meta Verilerine sahip bir TFLite modeli bekler.

Üç ana model türü desteklenir:

  • BERT tabanlı modeller (daha fazla ayrıntı için kaynak koduna bakın):

    • Tam olarak 3 giriş tensörü (kTfLiteString)

      • Meta veri adı "ids" olan kimlik tensörü,
      • Meta veri adı "maske" olan maske tensörü.
      • Segment kimlikleri tensörü, meta veri adı "segment_ids"
    • Tam olarak bir çıkış tensörü (kTfLiteUInt8/kTfLiteFloat32)

      • bu çıktı katmanı için döndürülen özellik vektörünün N boyutuna karşılık gelen N bileşenle.
      • 2 veya 4 boyut, yani [1 x N] veya [1 x 1 x 1 x N] .
    • Kelime Parçası/Cümle Parçası Belirteci için bir input_process_units

  • Evrensel Cümle Kodlayıcı tabanlı modeller (daha fazla ayrıntı için kaynak koduna bakın):

    • Tam olarak 3 giriş tensörü (kTfLiteString)

      • Meta veri adı "inp_text" olan metin tensörünü sorgulayın.
      • "res_context" meta veri adına sahip yanıt bağlamı tensörü.
      • "res_text" meta veri adına sahip yanıt metni tensörü.
    • Tam olarak 2 çıkış tensörü (kTfLiteUInt8/kTfLiteFloat32)

      • Meta veri adı "query_encoding" olan kodlama tensörü sorgulayın.
      • "response_encoding" meta veri adına sahip yanıt kodlama tensörü.
      • Her ikisi de bu çıktı katmanı için döndürülen özellik vektörünün N boyutuna karşılık gelen N bileşene sahiptir.
      • Her ikisi de 2 veya 4 boyutludur, yani [1 x N] veya [1 x 1 x 1 x N] .
  • Aşağıdaki özelliklere sahip herhangi bir metin yerleştirme modeli:

    • Bir giriş metni tensörü (kTfLiteString)
    • En az bir çıkış gömme tensörü (kTfLiteUInt8/kTfLiteFloat32)

      • bu çıktı katmanı için döndürülen özellik vektörünün N boyutuna karşılık gelen N bileşenle.
      • 2 veya 4 boyut, yani [1 x N] veya [1 x 1 x 1 x N] .