שילוב של כלי הטמעה של טקסט.

כלי הטמעה של טקסט מאפשרים הטמעת טקסט בווקטור מאפיין של ממדים גבוהים שמייצג את המשמעות הסמנטית שלה, שאפשר להשוות אותה לתכונה של טקסטים אחרים להערכת הדמיון הסמנטי שלהם.

בניגוד ל- חיפוש טקסט, כלי הטמעת הטקסט מאפשר לחשב את הדמיון בין טקסטים בזמן אמת במקום לחפש באינדקס מוגדר מראש שנוצר מתוך קורפוס.

משתמשים ב-API של ספריית המשימות TextEmbedder כדי לפרוס את הכלי להטמעת טקסט בהתאמה אישית באפליקציות לנייד.

תכונות מרכזיות של TextEmbedder API

מודלים נתמכים של כלי להטמעת טקסט

מובטח שהמודלים הבאים יתאימו לTextEmbedder API.

הרצת ההסקה ב-C++

// 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.

הרצת ההסקה ב-Python

שלב 1: מתקינים את חבילת התמיכה TensorFlow Lite מסוג Pypi.

אפשר להתקין את חבילת Pypi לתמיכה של TensorFlow Lite באמצעות הפקודה:

pip install tflite-support

שלב 2: שימוש במודל

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.

תוצאות לדוגמה

דמיון קוסינוס בין וקטורים של מאפיינים מנורמלים מחזיר ציון בין 1- ו-1. ככל שגבוה יותר הוא טוב יותר, כלומר, דמיון קוסינוס של 1 פירושו ששני הווקטורים זהה.

Cosine similarity: 0.954312

תנסו את השיטה הפשוטה כלי ההדגמה של CLI ל-TextEmbedder את המודל ונתוני הבדיקה שלכם.

דרישות התאימות של המודלים

ל-API TextEmbedder נדרש מודל TFLite עם מטא-נתונים של מודל TFLite.

יש תמיכה בשלושה סוגי מודלים עיקריים:

  • במודלים המבוססים על BERT, קוד מקור לפרטים נוספים):

    • בדיוק 3 רכיבי קלט (kTfLiteString)

      • מפריד מזהים עם שם המטא-נתונים 'ids',
      • מסכה מסוג tensor, עם שם המטא-נתונים "mask".
      • Tensor של מזהי פלחים, עם שם המטא-נתונים "segment_id"
    • טנזור פלט אחד בדיוק (kTfLiteUInt8/kTfLiteFloat32)

      • עם רכיבי N שתואמים למידות של N והחזיר את הווקטור של המאפיין, לשכבת הפלט הזו.
      • 2 או 4 מאפיינים, כלומר [1 x N] או [1 x 1 x 1 x N].
    • קלט_תהליך_units לרכיב כלשהו של טקסט מעוצב/אסימונים

  • מודלים מבוססי-מקודד של משפטים (Universal משפט) (ראו קוד מקור לפרטים נוספים):

    • בדיוק 3 רכיבי קלט (kTfLiteString)

      • רכיב img_tensor של שאילתה, עם שם המטא-נתונים 'inp_text'.
      • רכיב tensor של התשובה, עם שם המטא-נתונים 'res_context'.
      • רכיב tensor של תשובה, עם שם המטא-נתונים 'res_text'.
    • בדיוק 2 משתני פלט (kTfLiteUInt8/kTfLiteFloat32)

      • tensor לקידוד של שאילתות, עם שם המטא-נתונים "query_encoding".
      • tensor לקידוד של תגובות, עם שם המטא-נתונים "response_encoding".
      • שניהם עם רכיבי N שתואמים למידות של N של והחזיר את הווקטור של המאפיין, לשכבת הפלט הזו.
      • בשני המאפיינים יש 2 או 4 מאפיינים, כלומר [1 x N] או [1 x 1 x 1 x N].
  • כל מודל של כלי להטמעת טקסט עם:

    • רכיב tensor של טקסט קלט (kTfLiteString)
    • חיישן הטמעה אחד לפחות של פלט אחד (kTfLiteUInt8/kTfLiteFloat32)

      • עם רכיבי N שתואמים למידות של N והחזיר את הווקטור של המאפיין, לשכבת הפלט הזו.
      • 2 או 4 מאפיינים, כלומר [1 x N] או [1 x 1 x 1 x N].