בירור | RAG עם חיפוש וקטורי?
-
אם גם ככה בשביל RAG צריך קודם מודל שימצא את הנתונים המתאימים ואח"כ עוד מודל שיעשה מזה פלט, למה לעשות את זה וקטורי? אפשר לדלג על השלב הראשון ופשוט לתת את כל המידע למודל שמיצר את הפלט ושיעשה את כל העבודה? למה לעבוד כפול ומכופל?
@עידו300 יש פה אי-הבנה איך זה עובד.
המערכת מצמידה להקשר את הטקסטים הדומים מבחינה סמנטית לשאילתה, אחרי שביצעה אינדוקס סמנטי באמצעות מודל קטן של הטמעה.
בדרך כלל מדובר בכמויות עצומות של טקסטים, ואי אפשר לתת אותם למודל הראשי שיעבור על הכל, ולכן רק החלקים הרלוונטיים בטקסט מצורפים לשאילתה.
בנוסף, ככה מודל ההטמעה עובר רק פעם אחת על הטקסט באינדוקס, ואחר כך בכל שאילתא רק השאלה עוברת הטמעה סמנטית שזה לוקח רגע אחד, ולא צריך לסרוק שוב את כל התוכן. -
@עידו300 יש פה אי-הבנה איך זה עובד.
המערכת מצמידה להקשר את הטקסטים הדומים מבחינה סמנטית לשאילתה, אחרי שביצעה אינדוקס סמנטי באמצעות מודל קטן של הטמעה.
בדרך כלל מדובר בכמויות עצומות של טקסטים, ואי אפשר לתת אותם למודל הראשי שיעבור על הכל, ולכן רק החלקים הרלוונטיים בטקסט מצורפים לשאילתה.
בנוסף, ככה מודל ההטמעה עובר רק פעם אחת על הטקסט באינדוקס, ואחר כך בכל שאילתא רק השאלה עוברת הטמעה סמנטית שזה לוקח רגע אחד, ולא צריך לסרוק שוב את כל התוכן.@א.מ.ד. בשאילתא - המודל הקטן לא עובר על כל החומר שוב כדי למצוא אם יש משהו מתאים?
כמו שהבנתי זה ככה:
בהטמעה - מודל אמבדד "מקודד" (נקרא לזה ככה) את כל החומר.
בחיפוש - מודל אמבדד "מקודד" את השאלה ומחפש המאגר ה"מקודד" משהו מתאים, הן מבחינת התאמה בקידוד והן מבחינת התאמה בהקשר, זאת אומרת שמי שמחפש ספר על פנימיות התורה יקבל תוצאות של תניא וכד', למרות שמבחינת הקידוד זה לא מתאים.
את התוצאות מביאים למודל גדול כדי שינסח מזה תשובה.אם גם ככה המודל הקטן עובר על הכל (הרי הוא צריך למצוא כל מה שמתאים, גם מבחינת ההקשר) למה שהמודל הגדול לא יעשה את זה וזהו.
-
@א.מ.ד. בשאילתא - המודל הקטן לא עובר על כל החומר שוב כדי למצוא אם יש משהו מתאים?
כמו שהבנתי זה ככה:
בהטמעה - מודל אמבדד "מקודד" (נקרא לזה ככה) את כל החומר.
בחיפוש - מודל אמבדד "מקודד" את השאלה ומחפש המאגר ה"מקודד" משהו מתאים, הן מבחינת התאמה בקידוד והן מבחינת התאמה בהקשר, זאת אומרת שמי שמחפש ספר על פנימיות התורה יקבל תוצאות של תניא וכד', למרות שמבחינת הקידוד זה לא מתאים.
את התוצאות מביאים למודל גדול כדי שינסח מזה תשובה.אם גם ככה המודל הקטן עובר על הכל (הרי הוא צריך למצוא כל מה שמתאים, גם מבחינת ההקשר) למה שהמודל הגדול לא יעשה את זה וזהו.
@עידו300 בשאילתא המודל הקטן (ההטמעה/אמבדינג/מקודד) לא עובר על כל החומר אלא רק על בשאילתא, מקודד אותה לוקטור, ואז המערכת בפעולה חישובית מהירה של אלפית שניה משווה אותה לאינדקס המוכן מראש של החומר המלא ושולפת את ההתאמות הזדמנויות, כלומר לפי משמעות, ופנימיות התורה קרוב מאוד לתניא ולכן זה יעלה בתוצאות.
התוצאות הקרובות מבחינה סמנטית מצורפות לשאילתה שממשיכה אל המודל הגדול (שפה/מפענח), שהוא מנסח תשובה בהתאם להקשר שעלה בחיפוש.
אז קודם כל פנימיות התורה ותניא זה כן קרוב בקידוד הוקטורי. קרבה משמעותית (סמנטית) היא קרבה ב"קידוד".
בנוסף, המודל הקטן לא עובר בכל פעם על כל התוכן אלא רק על בשאילתא, והמערכת משווה אותה לאינדקס בפעולה שכמעט לא צורכת משאבים.
עוד דבר, בשביל לקודד טקסט לווקטור לא צריך מודל גדול ולכן מספיק מודל קטן וחסכוני.
אגב, המודל הקטן המקודד והמודל הגדול המפענח לא פועלים באותה דרך. הקטן יותר מתאים לקידוד טקסט כי הוא דו כיווני (קורא את הטקסט ישר והפוך) לעומת הגדול שקורא רק ישר.