הטכנולוגיה להטמעת טקסט מאפשרת להטמיע טקסט בווקטור תכונות רב-ממדי שמייצג את המשמעות הסמנטית שלו. לאחר מכן אפשר להשוות אותו לווקטור התכונות של טקסטים אחרים כדי להעריך את הדמיון הסמנטי שלהם.
בניגוד לחיפוש טקסט, הטכנולוגיה להטמעת טקסט מאפשרת לחשב את הדמיון בין טקסטים תוך כדי תנועה, במקום לחפש באינדקס מוגדר מראש שנבנה ממאגר מידע.
אפשר להשתמש ב-API של Task Library TextEmbedder כדי לפרוס את כלי ההטמעה של הטקסט המותאם אישית באפליקציות לנייד.
התכונות העיקריות של TextEmbedder API
עיבוד של טקסט קלט, כולל טוקניזציה של Wordpiece או Sentencepiece בתוך הגרף או מחוצה לו על טקסט קלט.
פונקציית כלי מובנית לחישוב דמיון הקוסינוס בין וקטורים של תכונות.
מודלים נתמכים של הטמעת טקסט
המודלים הבאים תואמים בוודאות ל-API של TextEmbedder.
מודלים בהתאמה אישית שעומדים בדרישות התאימות למודלים.
הרצת הסקה ב-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 Support Pypi.
אפשר להתקין את חבילת TensorFlow Lite Support Pypi באמצעות הפקודה הבאה:
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',
טנזור מסכה, עם שם המטא-נתונים mask.
טנזור של מזהי פלחים, עם שם המטא-נתונים segment_ids
טנסור פלט אחד בדיוק (kTfLiteUInt8/kTfLiteFloat32)
עם
Nרכיבים שמתאימים ל-Nהממדים של וקטור התכונות שמוחזר בשכבת הפלט הזו.2 או 4 מאפיינים, כלומר
[1 x N]או[1 x 1 x 1 x N].input_process_units עבור Wordpiece/Sentencepiece Tokenizer
מודלים שמבוססים על מקודד אוניברסלי למשפטים (פרטים נוספים זמינים בקוד המקור):
בדיוק 3 טנסורים של קלט (kTfLiteString)
טנסור של טקסט השאילתה, עם שם המטא-נתונים inp_text.
טנסור של הקשר התגובה, עם שם המטא-נתונים res_context.
טנסור של טקסט התגובה, עם שם המטא-נתונים res_text.
בדיוק 2 טנסורים של פלט (kTfLiteUInt8/kTfLiteFloat32)
טנסור קידוד השאילתה, עם שם המטא-נתונים query_encoding.
טנזור קידוד התגובה, עם שם המטא-נתונים response_encoding.
שניהם עם רכיבי
Nשמתאימים לממדיNשל וקטור התכונות שמוחזר בשכבת הפלט הזו.שניהם עם 2 או 4 מאפיינים, כלומר
[1 x N]או[1 x 1 x 1 x N].
כל מודל להטמעת טקסט עם:
- טנסור של טקסט קלט (kTfLiteString)
לפחות טנסור אחד של הטמעה בפלט (kTfLiteUInt8/kTfLiteFloat32)
עם
Nרכיבים שמתאימים ל-Nהממדים של וקטור התכונות שמוחזר בשכבת הפלט הזו.2 או 4 מאפיינים, כלומר
[1 x N]או[1 x 1 x 1 x N].