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

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

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

משתמשים ב-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 לרכיב כלשהו של טקסטורה/רכיב לאסימונים

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

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

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

      • Tensor לקידוד שאילתות, עם שם המטא-נתונים "query_encoding".
      • חיישן קידוד של תגובה, עם שם המטא-נתונים "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].