רווחים:
- הבינו שהטמעה הופכת את הטקסט לוקטור במרחב הסמנטי ומשמעויות דומות הן וקטורים קרובים
- הסבר כיצד פועל חיפוש ANN עם מדדי דמיון של קוסינוס ונקודות
- בחירת מסדי נתונים וקטוריים נפוצים בהתבסס על עלות, קנה מידה וצורך בסינון מטא נתונים
בלב RAG עומדת שאלה אחת: "איזה קטע טקסט הכי דומה לשאלת המשתמש?" המחשב מעבד טקסט עם מספרים, לא מילולית. לכן עלינו להמיר תחילה את הטקסט למספרים הנושאים את משמעותו. זה מהי הטבעה: תהליך המרת טקסט לרצף של מספרים (וקטור) המייצג את המשמעות של אותו טקסט. כשתסיים את היחידה הזו, תדע כיצד ההטמעה עובדת, כיצד נמדדת הדמיון וכיצד לבחור את מסד הנתונים הווקטוריים הנכון.
הטבעה: תרגום משמעות לקואורדינטות
מודל הטבעה (בינה מלאכותית שעבר הכשרה מיוחדת) ממיר את הטקסט שאתה מספק לווקטור של, למשל, 1024 מספרים. חשבו על הווקטור הזה כעל קואורדינטה במרחב רב מימדי. הקסם הוא כזה: טקסטים הדומים במשמעותם נופלים בקואורדינטות קרובות במרחב הזה.
דוגמה פשוטה: "חופשה שנתית", "זכאות לחופשה" ו"חופשה שנתית בתשלום" משתמשות במילים שונות אך אומרות אותו דבר - הווקטורים שלהן קרובים זה לזה. "חשבון שכר" הוא עניין אחר - הווקטור שלו מרוחק. אז המשתמש שואל "כמה ימי חופשה יש לי?" כשתשאלו, נוכל אפילו למצוא מסמך שלא מכיל את המילה "חג" אלא אומר "חופשה שנתית היא 14 ימים". זה מה שחיפוש מילות מפתח קלאסי (חיפוש שמתאים בדיוק למילה) לא יכול לעשות.
טיפ: חשבו על הטבעה כעל "טביעת אצבע של משמעות". טביעות האצבע של שני משפטים בעלי אותה משמעות נראות דומות; גם אם המילים שונות.
כלל חשוב: המודל שבו אתה משתמש בעת הטבעת השאלה צריך להיות אותו מודל שבו אתה משתמש בעת הטבעת מסמכים. דגמים שונים מייצרים חללים שונים; הקואורדינטות הופכות ללא השוואה.
כיצד למדוד דמיון?
ישנן מספר שיטות למדוד עד כמה דומים שני וקטורים. הדמיון הנפוץ ביותר הוא קוסינוס: הוא מודד את הזווית בין שני וקטורים. אם הזווית קטנה (וקטורים מצביעים לאותו כיוון), הדמיון גבוה. הערך הוא בין -1 ל-1; קרוב ל-1 = מאוד דומה.
קריטריון
מה זה מודד?
מתי זה מועדף?
קוסינוס
זווית (כיוון) בין וקטורים
הנפוץ ביותר; ברירת מחדל בדמיון סמנטי של טקסט
מוצר נקודה
כיוון + גודל ביחד
אם הוקטורים מנורמלים, זה נותן את אותה תוצאה כמו קוסינוס; הוא מהיר
אוקלידי (מרחק אוקלידי)
מרחק ישר בין קואורדינטות
בכמה תרחישי מקבץ; פחות בשימוש בטקסט
בפועל, רוב המודלים המטמעים מייצרים וקטורים מנורמלים (הגודל מוגדר ל-1); במקרה זה, מוצר קוסינוס ונקודה נותנים את אותה הסדר. אל תהיה משותק החלטה: התחל עם קוסינוס.
בין מיליוני וקטורים, ההשוואה ביניהם אחד אחד בכל פעם היא איטית. לכן מסדי נתונים וקטוריים משתמשים באלגוריתמים של ANN (Approximate Nearest Neighbor). ANN מוצאת מהר מאוד את "הכי קרוב בדיוק" ולא את "הכי קרוב בדיוק". לדוגמה, השיטה שנקראת HNSW יכולה להחזיר תוצאות תוך מספר אלפיות שניות אפילו עבור 10 מיליון וקטורים. אתה צובר מהירות גדולה עבור הקרבה קטנה של דיוק.
מה עושה מסד נתונים וקטור?
מסד נתונים וקטור עושה שלושה דברים בבת אחת: (1) מאחסן וקטורים, (2) מוצא במהירות וקטורים הדומים ביותר לווקטור שאילתה, (3) מסנן לפי מטא נתונים ליד כל וקטור. מטא נתונים הם התגים שאתה מצרף ליצירה זו: קובץ מקור, תאריך, מחלקה, רמת פרטיות וכו'. סינון מטא נתונים הוא קריטי ב-RAG ארגוני; כי אתה צריך להיות מסוגל להגדיר הגבלות כגון "חפש רק במסמכי מחלקת הכספים של 2025".
# הרשמה למסד הנתונים הווקטורי (קונספציאלי)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("חופשה שנתית בתשלום היא 14 ימים..."), text="חופשה שנתית בתשלום היא 14 ימים...", metadata={"source": "ik_el_kitabi.pdf", "department"5": "20", "department": "620", "private":" "ic")
# חיפוש מסונן עם מטא נתונים (רעיוני) = vektor_db.search( vektor=embed("כמה ימי חופשה יש לי?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
בחירת מסד הנתונים הנכון
רכב
היבט נבחר
מצב מתאים
מובנה / מבוסס קבצים (ספרייה משובצת)
ללא התקנה, מכונה אחת
אב טיפוס, ערכה קטנה (< כמה מאות אלפי חלקים)
שירות ענן מנוהל
קנה מידה ותחזוקה אינם באחריותך
ייצור, נתונים שגדלים במהירות, צוות קטן
קוד פתוח בשרת משלך
שליטה מלאה, הנתונים שלך נשארים שלך
חובת פרטיות, תשתית קיימת
תוספת למסד נתונים קיים
אתה לא מנהל מערכות נפרדות
הוספת תמיכה וקטורית ל-DB שבו אתה כבר משתמש
שאל בעת הבחירה: כמה חלקים יהיו? עד כמה סינון מטא נתונים קריטי? האם הנתונים יכולים לצאת מחוץ לחברה (סודיות)? האם הצוות יכול להפעיל תשתית? לעתים קרובות זה חכם להתחיל בקטן ולהרחיב לפי הצורך.
גישה חלשה / גישה חזקה
חלש (מאחסן הטבעה רגילה, ללא מטא נתונים):
פשוט שמור את הטקסט והווקטור. חיפוש: החזר את 4 הוקטורים הדומים ביותר. # בעיה: לא יכול לסנן כמו "רק מסמכי משאבי אנוש נוכחיים"; # חלקים ישנים/לא מורשים עשויים להיכלל בתגובה.
רב עוצמה (מטא נתונים עשירים + חיפוש מסונן):
הוסף מקור, תאריך, מחלקה ותג פרטיות לכל יצירה. סנן לפי סמכות המשתמש והעדכניות במהלך החיפוש: filter = {"privacy": user_authority, "date_date": "2024-01"}# לפיכך, התוצאה בטוחה ועדכנית כאחד.
שלושה מיני מארזים
מקרה 1 - תמהיל דגמים שגוי. צוות הטמיע מסמכים עם דגם A ושאלות עם מודל B. החיפושים הניבו תוצאות חסרות משמעות, ושיעור התשובות הנכונות נותר על 31%. כאשר עברתי לדגם בודד (שניהם אותו דגם הטמעה), השיעור קפץ ל-88%. שיעור: שאלה ומסמך צריכים להיות באותו מקום.
מקרה 2 - סיכון פרטיות ללא מטא נתונים. בחברת בריאות, כל מסמכי המחלקה נזרקו למאגר אחד ללא מטא נתונים. כאשר עמית מכירות שאל שאלה, המערכת תייחסה להקשר נתוני מטופל. כאשר נוספו מטא נתונים + מסנן (לפי רמת ההרשאה), סיכון זה בוטל; בשליפת, 12 חלקים לא מורשים כלל לא מובאים.
מקרה 3 - צוואר בקבוק בקנה מידה. חברת מסחר אלקטרוני חיפשה 8 מיליון תיאורי מוצרים בשיטת "סרוק הכל" פשוטה; כל שאילתה ארכה 6 שניות. כאשר עברנו ל-ANN מבוסס HNSW, הזמן ירד ל-45 מילישניות, עם אובדן דיוק של 1% בלבד. שיעור: ANN חובה בסט הגדול.
טעויות נפוצות
- הטמעת השאלה והמסמך במודלים שונים: התוצאות חסרות משמעות; תמיד דגם אחד.
- דילוג על מטא נתונים: אינך יכול לסנן; אתה מאבד שליטה על הפרטיות והעדכניות.
- הטעות בטעות בהצפנה: הטמעה נושאת מידע הפיך; לא נכון להניח שמידע רגיש "מוסתר".
- בניית תשתית גדולה שלא לצורך על סט קטן: אשכול ענק המנוהל על 5,000 חלקים היא מורכבות מיותרת.
- אל תדאג יותר מדי לגבי קריטריון הדמיון: התחל עם קוסינוס בטקסט; כוונון עדין מגיע מאוחר יותר.
זהירות: הטבעה מטביעה את משמעות הטקסט במספרים, אך אינה "הורסת" את התוכן. אם מסד נתונים וקטורי דלף, הטקסטים המקוריים המאוחסנים (ברוב ההתקנות גם הטקסט מאוחסן) נפגעים. שמור על מאגר הווקטורים חסוי כמו המסמכים שבתוכו.
לסיכום
- הטבעה הופכת טקסט לווקטור של מספרים הנושא את משמעותו; משמעויות דומות הן וקטורים קרובים.
- דמיון נמדד לרוב בקוסינוס; עבור וקטורים מנורמלים, תוצר הנקודה נותן את אותה תוצאה.
- ב-Big Data, ANN (למשל, HNSW) מחליפה את החיפוש המדויק: מהירות גדולה עם הקרבה קטנה של דיוק.
- מסד נתונים וקטור מבצע אחסון וקטור + חיפוש דמיון + סינון מטא נתונים; מטא נתונים חיוניים עבור RAG ארגוני.
- יש לתרגם את השאלה והמסמך באותו דגם הטבעה; אחרת לא ניתן להשוות את הקואורדינטות.
משימת יישום
חלץ 10 קטעים קצרים (3-6 משפטים כל אחד) מהמסמך שבחרת ביחידה הקודמת. (1) עצב לפחות שלושה תגיות מטא נתונים עבור כל חלק (מקור, תאריך ושלישי המתאים להקשר העסקי שלך: מחלקה, מוצר, פרטיות וכו'). (2) כתוב איזה מסנן מטא נתונים יש להחיל עבור 3 שאלות משתמש שונות. (3) מצא 3 צמדי שאלות-חלק המבטאים את אותה משמעות במילים שונות (למשל "זכאות לחופשה" ↔ "חופשה שנתית") והסבירו במשפט אחד מדוע הם לא יתאימו לחיפוש מילות מפתח אלא יתאימו להטמעה.
רשימת בדיקה
- [ ] אני יכול לומר שהטמעה הופכת את הטקסט לווקטור במרחב הסמנטי ומשמעויות דומות קרובות.
- אני יודע ש-[ ] דמיון קוסינוס מודד זווית והוא העדפת ברירת המחדל בטקסט.
- [ ] אני יכול להסביר מדוע ANN נחוצה בביג דאטה.
- [ ] אני יודע מדוע מטא נתונים הם קריטיים עבור סודיות ובקרת רעננות.
- [ ] אני פועל לפי הכלל של תרגום השאלה והמסמך באותו מודל הטבעה.