מבוא להטמעות ולחיפוש וקטורי
במאמר הזה מוסבר על הטמעות וחיפוש וקטורי ב-BigQuery. חיפוש וקטורי הוא שיטה להשוואה בין אובייקטים דומים באמצעות הטמעות, והוא משמש להפעלת מוצרי Google, כולל חיפוש Google, YouTube ו-Google Play. אתם יכולים להשתמש בחיפוש וקטורי כדי לבצע חיפושים סמנטיים בקנה מידה נרחב, או לבצע חיפוש משולב שמשלב חיפוש סמנטי עם חיפוש לקסיקלי (מילת מפתח). כשמשתמשים באינדקסים וקטוריים עם חיפוש וקטורי, אפשר לנצל טכנולוגיות בסיסיות כמו הוספה לאינדקס של קובץ הפוך (IVF) ואלגוריתם ScaNN.
חיפוש וקטורי מבוסס על הטמעות. הטמעות הן וקטורים מספריים רב-ממדיים שמייצגים ישות נתונה, כמו קטע טקסט או קובץ אודיו. מודלים של למידת מכונה (ML) משתמשים בהטמעות כדי לקודד סמנטיקה של ישויות כאלה, כדי שיהיה קל יותר להבין אותן ולהשוות ביניהן. לדוגמה, פעולה נפוצה במודלים של אשכולות, סיווג והמלצות היא למדוד את המרחק בין וקטורים במרחב הטמעה כדי למצוא פריטים שהכי דומים מבחינה סמנטית.
המושג של דמיון סמנטי ומרחק במרחב הטמעה מודגם באופן חזותי כשבוחנים איך פריטים שונים עשויים להיות משורטטים. לדוגמה, מונחים כמו חתול, כלב ואריה, שכולם מייצגים סוגים של בעלי חיים, מקובצים קרוב זה לזה במרחב הזה בגלל המאפיינים הסמנטיים המשותפים שלהם. באופן דומה, מונחים כמו מכונית, משאית והמונח הכללי יותר רכב ייצרו אשכול אחר. כמו שמוצג בתמונה הבאה:
אפשר לראות שאשכולות בעלי החיים וכלי הרכב ממוקמים רחוק זה מזה. ההפרדה בין הקבוצות ממחישה את העיקרון שככל שהאובייקטים קרובים יותר במרחב ההטמעה, כך הם דומים יותר מבחינה סמנטית, ומרחקים גדולים יותר מצביעים על חוסר דמיון סמנטי גדול יותר.
תרחישים לדוגמה
השילוב של יצירת הטמעות וחיפוש וקטורי מאפשר הרבה תרחישים מעניינים. הנה כמה תרחישים לדוגמה:
- Retrieval-augmented generation (RAG): ניתוח מסמכים, חיפוש וקטורי בתוכן ויצירת תשובות מסוכמות לשאלות בשפה טבעית באמצעות מודלים של Gemini, והכול ב-BigQuery. ב-Notebook פיתוח אפליקציה של חיפוש וקטורי באמצעות BigQuery DataFrames מוסבר איך לעשות את זה.
- המלצה על מוצרים חלופיים או מוצרים תואמים: שיפור אפליקציות של מסחר אלקטרוני על ידי הצעת מוצרים חלופיים על סמך התנהגות הלקוחות ודמיון בין מוצרים.
- ניתוח נתוני יומן: עוזר לצוותים לזהות באופן יזום חריגות ביומנים ולזרז את החקירות. אתם יכולים גם להשתמש ביכולת הזו כדי להעשיר את ההקשר של מודלי LLM, במטרה לשפר את זיהוי האיומים, את הניתוח הפורנזי ואת תהליכי העבודה לפתרון בעיות. ב-Notebook Log Anomaly Detection & Investigation with Text Embeddings + BigQuery Vector Search מוסבר איך עושים את זה.
- אשכולות וטירגוט: פילוח קהלים בצורה מדויקת. לדוגמה, רשת בתי חולים יכולה לקבץ מטופלים באמצעות הערות בשפה טבעית ונתונים מובְנים, ומשווקים יכולים לטרגט מודעות על סמך כוונת השאילתה. ב-notebook Create-Campaign-Customer-Segmentation מופיעה דוגמה לתרחיש הזה.
- זיהוי ישויות וביטול כפילויות: ניקוי ואיחוד של נתונים. לדוגמה, חברת פרסום יכולה לבטל כפילויות של רשומות עם פרטים אישיים מזהים (PII), או שחברת נדל"ן יכולה לזהות כתובות תואמות למשלוח דואר.
יצירת הטמעות
בקטעים הבאים מתוארות הפונקציות ש-BigQuery מציע כדי לעזור לכם ליצור הטמעות או לעבוד איתן.
יצירת הטמעות בודדות
אתם יכולים להשתמש בפונקציה AI.EMBED עם מודלים להטמעה של Gemini Enterprise Agent Platform כדי ליצור הטמעה אחת של הקלט.
הפונקציה AI.EMBED תומכת בסוגי הקלט הבאים:
- נתוני טקסט.
- נתוני תמונה שמיוצגים על ידי ערכי
ObjectRef.
יצירת טבלה של הטמעות
אתם יכולים להשתמש ב-AI.GENERATE_EMBEDDING כדי ליצור טבלה עם הטמעות לכל הנתונים בעמודה של טבלת הקלט. בכל סוגי המודלים הנתמכים, AI.GENERATE_EMBEDDING עובד עם נתונים מובְנים בטבלאות רגילות. במודלים של הטמעות מולטימודליות, AI.GENERATE_EMBEDDING פועל גם עם תוכן חזותי מעמודות סטנדרטיות בטבלה שמכילות ערכי ObjectRef, או מטבלאות אובייקטים.
במודלים מרוחקים, כל ההסקה מתרחשת ב-Agent Platform. בסוגי מודלים אחרים, כל ההסקה מתרחשת ב-BigQuery. התוצאות נשמרות ב-BigQuery.
כדי לנסות ליצור הטמעות ב-BigQuery ML, השתמשו בנושאים הבאים:
- אפשר ליצור טקסט, תמונות או סרטונים באמצעות הפונקציה
AI.GENERATE_EMBEDDING. - יצירה וחיפוש של הטמעות מולטי-מודאליות
- ביצוע חיפוש סמנטי ו-Retrieval-Augmented Generation (יצירה משולבת-אחזור, RAG)
יצירת הטמעת נתונים אוטונומית
אתם יכולים להשתמש ביצירת הטמעות אוטונומיות כדי לפשט את התהליך של יצירה, תחזוקה ושאילתות של הטמעות. ב-BigQuery נשמרת עמודה של הטמעות בטבלה, על סמך עמודת מקור. כשמוסיפים או משנים נתונים בעמודת המקור, BigQuery יוצר או מעדכן באופן אוטומטי את עמודת ההטמעה של הנתונים האלה באמצעות מודל הטמעה של Agent Platform. האפשרות הזו שימושית אם רוצים ש-BigQuery יתחזק את ההטמעות כשנתוני המקור מתעדכנים באופן קבוע.
חיפוש
אתם יכולים להשתמש בפונקציות החיפוש הבאות כדי לבצע חיפוש וקטורי סמנטי, או חיפוש היברידי שמשלב חיפוש סמנטי עם חיפוש מילות מפתח לקסיקלי:
VECTOR_SEARCH: הרצת חיפוש וקטורי סמנטי או חיפוש היברידי באמצעות SQL.
AI.SEARCH: חיפוש סמנטי או היברידי של תוצאות שקרובות למחרוזת שציינתם. אפשר להשתמש בפונקציה הזו אם בטבלה מופעלת יצירת הטמעות אוטונומית.
AI.SIMILARITY: משווה בין שני קלטים על ידי חישוב דמיון הקוסינוס בין ההטמעות שלהם. הפונקציה הזו מתאימה אם רוצים לבצע מספר קטן של השוואות ולא חישבתם מראש הטמעות. כדאי להשתמש ב-VECTOR_SEARCHכשהביצועים קריטיים ואתם עובדים עם מספר גדול של הטמעות. השוואה בין הפונקציות כדי לבחור את הפונקציה שהכי מתאימה לתרחיש לדוגמה שלכם.
אפשר גם ליצור אינדקס וקטורי באמצעות ההצהרה CREATE VECTOR INDEX.
כשמשתמשים באינדקס וקטורי, הפונקציות VECTOR_SEARCH ו-AI.SEARCH משתמשות בטכניקת החיפוש Approximate Nearest Neighbor כדי לשפר את ביצועי החיפוש הווקטורי, אבל זה בא על חשבון צמצום האחזור, ולכן התוצאות שמתקבלות הן יותר מקורבות. בלי אינדקס וקטורי, הפונקציות האלה משתמשות בחיפוש Brute Force כדי למדוד את המרחק של כל רשומה. אתם יכולים גם לבחור להשתמש ב-brute force כדי לקבל תוצאות מדויקות, גם כשיש אינדקס וקטורי זמין.
טיפול בהוצאה משימוש של מודל הטמעה
כשהמודל להטמעה יוצא משימוש, צריך להעביר את תהליכי העבודה למודל חלופי נתמך לפני שהמודל שהוצא משימוש יושבת. המודלים הבאים יצאו משימוש ב-1 באפריל 2027:
text-embedding-005text-embeding-004text-multilingual-embedding-002multimodalembedding@001
למידע נוסף על תאריכי ההוצאה משימוש של מודלים ועל מודלים חלופיים, קראו את המאמר גרסאות ומחזור החיים של מודלים.
הטמעות שנוצרות על ידי מודלים שונים, או על ידי גרסאות שונות של אותו מודל, קיימות במרחבי הטמעה נפרדים ובדרך כלל לא תואמות מבחינה מתמטית. חוסר התאימות הזה חל גם כשיש לווקטורים אותו מספר של מאפיינים. השוואה בין הטמעות ממודלים שונים מניבה תוצאות חיפוש ודמיון לא מדויקות.
כדי לעבור למודל הטמעה חלופי:
- ליצור מחדש את ההטמעות בטבלאות הקיימות באמצעות המודל החלופי, כדי שכל ההטמעות המאוחסנות ישתפו את אותו מרחב הטמעה.
- אם אתם משתמשים בפונקציה
AI.EMBEDאוAI.GENERATE_EMBEDDING, אתם צריכים לעדכן את השאילתות או את המודלים המרוחקים כך שישתמשו במודל החלופי, ואז ליצור מחדש את ההטמעות של הטבלאות. - אם אתם משתמשים ביצירת הטמעות אוטונומית, הסירו את עמודת ההטמעות שנוצרו והוסיפו עמודת הטמעות שנוצרו באמצעות המודל החלופי.
- אם אתם משתמשים בפונקציה
- מעדכנים את השאילתות או את צינורות עיבוד הנתונים שיוצרים הטמעות בזמן החיפוש, כדי להשתמש באותו מודל חלופי כמו בהטמעות של הטבלה.
- אחרי שיוצרים מחדש את ההטמעות בטבלה, צריך ליצור מחדש את האינדקסים של הווקטורים בעמודת ההטמעה.
תמחור
הפונקציות VECTOR_SEARCH ו-AI.SEARCH וההצהרה CREATE VECTOR INDEX משתמשות בתמחור המחשוב של BigQuery.
הפונקציות
VECTOR_SEARCHו-AI.SEARCH: החיוב על חיפוש דמיון מתבצע לפי תמחור VOD או לפי מהדורות.- על פי דרישה: אתם מחויבים על כמות הבייטים שנסרקו במסד הנתונים הטבלאי, באינדקס ובשאילתת החיפוש.
תמחור לפי מהדורות: אתם מחויבים על המשבצות שנדרשות להשלמת המשימה במסגרת המהדורה שלכם. חישובים גדולים ומורכבים יותר של דמיון כרוכים בחיובים גבוהים יותר.
הצהרה לגבי
CREATE VECTOR INDEX: אין חיוב על העיבוד שנדרש כדי ליצור ולרענן את האינדקסים של הווקטורים, כל עוד הגודל הכולל של נתוני הטבלה שנוספו לאינדקס קטן מהמגבלה של הארגון. כדי לתמוך בהוספה לאינדקס מעבר למגבלה הזו, צריך לספק הזמנה משלכם לטיפול במשימות של ניהול האינדקס.
צריך להביא בחשבון גם את נפח האחסון של ההטמעות והאינדקסים. מספר הבייטים שמאוחסנים כהטמעות ואינדקסים כפוף לעלויות אחסון פעיל.
- אינדקסים של וקטורים צוברים עלויות אחסון כשהם פעילים.
- אפשר למצוא את גודל האחסון של האינדקס באמצעות התצוגה
INFORMATION_SCHEMA.VECTOR_INDEXES. אם אינדקס הווקטורים עדיין לא הגיע ל-100% כיסוי, עדיין תחויבו על מה שנוסף לאינדקס. אפשר לבדוק את הדפים שנכללים באינדקס באמצעות התצוגהINFORMATION_SCHEMA.VECTOR_INDEXES.
מכסות ומגבלות
מידע נוסף זמין במאמרים מגבלות על אינדקסים וקטוריים ומגבלות על פונקציות AI גנרטיבי.
מגבלות
- שאילתות שמכילות את הפונקציה
VECTOR_SEARCHאוAI.SEARCHלא מואצות על ידי BigQuery BI Engine. - צמצום הנתונים בסינון מקדים בשאילתות
VECTOR_SEARCHו-AI.SEARCHעובר אופטימיזציה רק כשמסננים לפי עמודות מחולקות למחיצות או עמודות מאוחסנות, ולא לפי עמודות מקובצות. אם משתמשים בעמודות מקובצות שלא נשמרו בשאילתת משנה של סינון מקדים, מתבצעת סריקה של כל הטבלה. מידע נוסף מופיע בקטע מגבלות הסינון המקדים.
המאמרים הבאים
- איך יוצרים אינדקס וקטורי ואיך משתמשים באינדקסים וקטוריים בחיפוש משולב.
- איך מבצעים חיפוש סמנטי או היברידי באמצעות הפונקציה
VECTOR_SEARCH - איך מבצעים חיפוש סמנטי או היברידי באמצעות הפונקציה
AI.SEARCH - מידע נוסף על יצירת הטמעות אוטונומיות
- במדריך חיפוש הטמעות באמצעות חיפוש וקטורי מוסבר איך ליצור אינדקס וקטורי, ואז לבצע חיפוש וקטורי של הטמעות עם ובלי האינדקס.
במדריך ביצוע חיפוש סמנטי ו-RAG מוסבר איך לבצע את המשימות הבאות:
- ליצור הטמעות טקסט.
- יוצרים אינדקס וקטורי במערכים המוטמעים.
- מבצעים חיפוש וקטורי באמצעות ההטמעות כדי לחפש טקסט דומה.
- לבצע יצירה משולבת-אחזור (RAG) באמצעות תוצאות של חיפוש וקטורי כדי להרחיב את הקלט של ההנחיה ולשפר את התוצאות.
במדריך ניתוח קובצי PDF בצינור עיבוד נתונים של יצירת נתונים משולבת אחזור (RAG) מוסבר איך ליצור צינור עיבוד נתונים של RAG שמבוסס על תוכן מנותח של קובצי PDF.
אתם יכולים גם לבצע חיפושים וקטוריים באמצעות BigQuery DataFrames ב-Python. ב-Notebook פיתוח אפליקציה של חיפוש וקטורי באמצעות BigQuery DataFrames מוסבר איך לעשות את זה.