מבוא להטמעות ולחיפוש וקטורי
במאמר הזה מפורטת סקירה כללית על הטמעות ועל חיפוש וקטורים ב-BigQuery. חיפוש וקטורי הוא טכניקה להשוואה בין אובייקטים דומים באמצעות הטמעה, והוא משמש להפעלת מוצרי Google, כולל חיפוש Google, YouTube ו-Google Play. אתם יכולים להשתמש בחיפוש וקטורי כדי לבצע חיפושים בהיקף גדול. כשמשתמשים באינדקסים של וקטורים עם חיפוש וקטורי, אפשר לנצל טכנולוגיות בסיסיות כמו אינדקס קובץ הפוך (IVF) ואלגוריתם ScaNN.
חיפוש וקטורי מבוסס על הטמעות. הטמעות הן וקטורים מספריים רב-ממדיים שמייצגים ישות נתונה, כמו קטע טקסט או קובץ אודיו. מודלים של למידת מכונה (ML) משתמשים בהטמעות כדי לקודד סמנטיקה לגבי ישויות כאלה, וכך להקל על ההסקה וההשוואה שלהן. לדוגמה, פעולה נפוצה במודלים של אשכולות, סיווג והמלצות היא מדידת המרחק בין וקטורים במרחב הטמעה כדי למצוא פריטים שהדמיון הסמנטי ביניהם הוא הגדול ביותר.
כדי להבין את המושג הזה של דמיון סמנטי ומרחק במרחב הטמעה, כדאי לראות איך פריטים שונים יכולים להיות ממוקמים על הגרף. לדוגמה, מונחים כמו חתול, כלב ואריה, שכולם מייצגים סוגים של בעלי חיים, מקובצים קרוב זה לזה במרחב הזה בגלל המאפיינים הסמנטיים המשותפים שלהם. באופן דומה, מונחים כמו מכונית, משאית והמונח הכללי יותר רכב ייצרו עוד אשכול. כפי שמוצג בתמונה הבאה:
אפשר לראות שקבוצות בעלי החיים וכלי הרכב ממוקמות רחוק זו מזו. ההפרדה בין הקבוצות ממחישה את העיקרון שלפיו ככל שהאובייקטים קרובים יותר במרחב ההטמעה, כך הם דומים יותר מבחינה סמנטית, וככל שהמרחק גדול יותר, כך השוני הסמנטי גדול יותר.
תרחישים לדוגמה
השילוב של יצירת הטמעה וחיפוש וקטורי מאפשר תרחישי שימוש מעניינים רבים. הנה כמה תרחישי שימוש אפשריים:
- שליפה משופרת של יצירה (RAG): ניתוח מסמכים, ביצוע חיפוש וקטורי בתוכן ויצירת תשובות מסוכמות לשאלות בשפה טבעית באמצעות מודלים של Gemini, והכול בתוך BigQuery. במאמר פיתוח אפליקציית חיפוש וקטורי באמצעות BigQuery DataFrames יש מחברת שממחישה את התרחיש הזה.
- המלצה על מוצרים חלופיים או מוצרים תואמים: שיפור אפליקציות למסחר אלקטרוני באמצעות הצעת מוצרים חלופיים על סמך התנהגות הלקוחות ודמיון בין מוצרים.
- ניתוח יומנים: עוזר לצוותים לתעדף באופן יזום אנומליות ביומנים ולזרז את החקירות. אפשר גם להשתמש ביכולת הזו כדי להוסיף הקשר ל-LLM, כדי לשפר את זיהוי האיומים, את הפורנזיקה הדיגיטלית ואת תהליכי העבודה לפתרון בעיות. למחברת שממחישה את התרחיש הזה, ראו Log Anomaly Detection & Investigation with Text Embeddings + BigQuery Vector Search.
- אשכולות וטירגוט: פילוח מדויק של קהלים. לדוגמה, רשת בתי חולים יכולה לאגד מטופלים באמצעות הערות בשפה טבעית ונתונים מובְנים, או שמשווק יכול לטרגט מודעות על סמך כוונת השאילתה. מחברת שממחישה את התרחיש הזה זמינה במאמר Create-Campaign-Customer-Segmentation.
- זיהוי ישויות והסרת כפילויות: ניקוי ואיחוד של נתונים. לדוגמה, חברת פרסום יכולה לבטל כפילויות ברשומות של פרטים אישיים מזהים (PII), או שחברת נדל"ן יכולה לזהות כתובות למשלוח דואר שזהות זו לזו.
יצירת הטמעות
בקטעים הבאים מפורטות הפונקציות ש-BigQuery מציע כדי לעזור לכם ליצור הטמעות או לעבוד איתן.
יצירת הטבעות יחידות
אפשר להשתמש בפונקציה AI.EMBED עם מודלים של הטמעות ב-Vertex AI כדי ליצור הטמעה יחידה של הקלט.
הפונקציה AI.EMBED תומכת בסוגי הקלט הבאים:
- נתוני טקסט.
- נתוני התמונה מיוצגים על ידי ערכי
ObjectRef. (תצוגה מקדימה) - נתוני התמונה מיוצגים על ידי ערכי
ObjectRefRuntime.
יצירת טבלת הטמעה
אתם יכולים להשתמש ב-AI.GENERATE_EMBEDDING כדי ליצור טבלה עם הטמעות של כל הנתונים בעמודה של טבלת הקלט. בכל סוגי המודלים הנתמכים, AI.GENERATE_EMBEDDING
עובד עם נתונים מובנים בטבלאות רגילות. במודלים של הטמעה מולטי-מודאלית, AI.GENERATE_EMBEDDING פועל גם עם תוכן חזותי מעמודות בטבלה רגילה שמכילות ערכי ObjectRef או מטבלאות אובייקטים.
במודלים מרוחקים, כל ההסקה מתבצעת ב-Vertex AI. בסוגים אחרים של מודלים, כל ההסקה מתבצעת ב-BigQuery. התוצאות מאוחסנות ב-BigQuery.
כדי לנסות להטמיע יצירה ב-BigQuery ML, אפשר להיעזר בנושאים הבאים:
- יצירת טקסט, תמונות או סרטונים באמצעות הפונקציה
AI.GENERATE_EMBEDDING. - יצירה וחיפוש של הטמעות מולטי-מודאליות
- ביצוע חיפוש סמנטי ויצירה משופרת באמצעות אחזור
יצירת הטמעה אוטונומית
אתם יכולים להשתמש ביצירה אוטונומית של הטמעות כדי לפשט את התהליך של יצירה, תחזוקה ושאילתות של הטמעות. BigQuery שומר עמודה של הטמעות בטבלה על סמך עמודת מקור. כשמוסיפים נתונים לעמודת המקור או משנים אותם, BigQuery יוצר או מעדכן באופן אוטומטי את עמודת ההטמעה של הנתונים האלה באמצעות מודל הטמעה של Vertex AI. האפשרות הזו שימושית אם רוצים לאפשר ל-BigQuery לתחזק את ההטמעות כשנתוני המקור מתעדכנים באופן קבוע.
חיפוש
אלה פונקציות החיפוש שזמינות:
VECTOR_SEARCH: ביצוע חיפוש וקטורי באמצעות SQL.
AI.SEARCH(תצוגה מקדימה): חיפוש תוצאות שקרובות למחרוזת שסיפקתם. אפשר להשתמש בפונקציה הזו אם בטבלה מופעלת יצירה אוטונומית של הטמעה.
AI.SIMILARITY(תצוגה מקדימה): השוואה בין שני קלטים באמצעות חישוב הדמיון הקוסינוסי בין ההטמעות שלהם. הפונקציה הזו שימושית אם רוצים לבצע מספר קטן של השוואות ולא חישבתם מראש הטבעות. כדאי להשתמש ב-VECTOR_SEARCHכשביצועים הם קריטיים ואתם עובדים עם מספר גדול של הטמעות. משווים בין הפונקציות כדי לבחור את הפונקציה שהכי מתאימה לתרחיש לדוגמה שלכם.
אפשר גם ליצור אינדקס וקטורי באמצעות ההצהרה CREATE VECTOR INDEX.
כשמשתמשים באינדקס וקטורי, הפונקציות VECTOR_SEARCH ו-AI.SEARCH משתמשות בטכניקת החיפוש Approximate Nearest Neighbor כדי לשפר את הביצועים של חיפוש וקטורי, אבל בתמורה לכך ההחזרה מצטמצמת ולכן התוצאות הן יותר משוערות. בלי אינדקס וקטורי, הפונקציות האלה משתמשות בחיפוש Brute Force כדי למדוד את המרחק של כל רשומה. אפשר גם לבחור להשתמש בשיטת הכוח הגס כדי לקבל תוצאות מדויקות גם כשזמין אינדקס וקטורי.
תמחור
הפונקציות VECTOR_SEARCH ו-AI.SEARCH וההצהרה CREATE VECTOR INDEX משתמשות בתמחור של מחשוב ב-BigQuery.
הפונקציות
VECTOR_SEARCHו-AI.SEARCH: אתם מחויבים על חיפוש דמיון לפי תמחור לפי דרישה או לפי מהדורה.- על פי דרישה: אתם מחויבים על כמות הבייטים שנסרקו בטבלת הבסיס, באינדקס ובשאילתת החיפוש.
תמחור מהדורות: אתם מחויבים על המשבצות שנדרשות להשלמת העבודה במהדורה שהזמנתם. חישובים גדולים ומורכבים יותר של דמיון כרוכים בחיובים גבוהים יותר.
CREATE VECTOR INDEXדף חשבון: לא חל חיוב על העיבוד שנדרש ליצירה ולרענון של אינדקסים וקטוריים, כל עוד הגודל הכולל של נתוני הטבלה המאונדקסים נמוך מהמגבלה לכל ארגון. כדי לתמוך באינדוקס מעבר למגבלה הזו, צריך לספק הזמנה משלכם לטיפול במשימות ניהול האינדקס.
גם נפח האחסון הוא שיקול חשוב כשמדובר בהטמעות ובאינדקסים. מספר הבייטים שנשמרים כהטמעות וכאינדקסים כפוף לעלויות אחסון פעיל.
- אינדקסים של וקטורים צוברים עלויות אחסון כשהם פעילים.
- אפשר לראות את גודל האחסון של האינדקס באמצעות התצוגה
INFORMATION_SCHEMA.VECTOR_INDEXES. אם כיסוי האינדקס הווקטורי עדיין לא הגיע ל-100%, עדיין תחויבו על מה שנוסף לאינדקס. אפשר לבדוק את הכיסוי באינדקס באמצעות התצוגהINFORMATION_SCHEMA.VECTOR_INDEXES.
מכסות ומגבלות
מידע נוסף זמין במאמרים בנושא מגבלות של אינדקס וקטורי ומגבלות של פונקציות AI גנרטיבי.
מגבלות
שאילתות שמכילות את הפונקציה VECTOR_SEARCH או AI.SEARCH לא מואצות על ידי BigQuery BI Engine.
המאמרים הבאים
- מידע נוסף על יצירת אינדקס וקטורי
VECTOR_SEARCHכאן מוסבר איך לבצע חיפוש וקטורי באמצעות הפונקציה.- איך מבצעים חיפוש סמנטי באמצעות הפונקציה
AI.SEARCH - מידע נוסף על יצירה אוטונומית של הטמעות
- כדי ללמוד איך ליצור אינדקס וקטורי, ואז לבצע חיפוש וקטורי של הטמעות עם האינדקס ובלעדיו, אפשר לנסות את המדריך Search embeddings with vector search.
כדאי לנסות את המדריך ביצוע חיפוש סמנטי ו-Retrieval-Augmented Generation (יצירה משולבת-אחזור, RAG) כדי ללמוד איך לבצע את המשימות הבאות:
- ליצור הטמעות טקסט.
- יוצרים אינדקס וקטורי בהטמעות.
- מבצעים חיפוש וקטורי באמצעות ההטבעות כדי לחפש טקסט דומה.
- ביצוע יצירה משולבת-אחזור (RAG) באמצעות תוצאות חיפוש וקטורי כדי להרחיב את קלט ההנחיה ולשפר את התוצאות.
כדי ללמוד איך ליצור צינור RAG שמבוסס על תוכן PDF מנותח, אפשר לנסות את המדריך בנושא ניתוח קובצי PDF בצינור ליצירת תוכן עם שליפה משופרת.
אפשר גם לבצע חיפושי וקטורים באמצעות BigQuery DataFrames ב-Python. לדוגמה למחברת שממחישה את הגישה הזו, ראו Build a Vector Search application using BigQuery DataFrames.