הדרכות

טוקנים, הקשר וחלון הקשר: למה המודל "שוכח" ואיך לנצח את זה

המודל לא באמת זוכר את השיחה שלכם — הוא קורא מחדש חלון מוגבל בכל פנייה. ברגע שמבינים איך עובד ה-context window, מפסיקים להאשים את ה-AI ומתחילים לכתוב פרומפטים ושיחות שלא נשמטים.

טוקנים, הקשר וחלון הקשר: למה המודל "שוכח" ואיך לנצח את זה

בואו נטוס גבוה. אתם משוחחים עם מודל שפה, הכל זורם, התשובות מדויקות — ופתאום, אחרי שיחה ארוכה, הוא שוכח את השם שאמרתם בהתחלה, מתעלם מהוראה שנתתם לפני עשרים הודעות, וממציא פרטים. זה לא באג ולא "המודל התעצל". זה מבנה. כדי לנצח את ה"שכחה" הזו צריך להבין שלושה מושגים שעובדים יחד: טוקן, הקשר, וחלון הקשר. בואו נפרק כל אחד מהיסוד, עם ה"למה" המלא.

טוקן: היחידה שהמודל באמת קורא

המודל לא קורא מילים. הוא קורא טוקנים — חתיכות טקסט קטנות. טוקן הוא פיסת טקסט שהמודל מטפל בה כיחידה אחת: לפעמים מילה שלמה, לפעמים חצי מילה, לפעמים סימן פיסוק או רווח.

למה לפרק כך ולא לפי מילים שלמות? כי שפה אנושית עצומה — מיליוני מילים, נטיות, שמות, שגיאות כתיב. אם לכל מילה אפשרית היה "תא" נפרד, ה"מילון" של המודל היה ענק ובלתי-מנוהל, וכל מילה חדשה שלא נראתה באימון (התהליך שבו המודל "למד" מטקסט עצום לפני שהגיע אליכם) הייתה שוברת אותו. הפתרון: לבנות אוצר של חתיכות נפוצות. מילה שכיחה כמו "the" היא טוקן אחד; מילה נדירה כמו "אנטי-דיסאסטבלישמנטריאניזם" מתפרקת לכמה טוקנים. ככה המודל יכול להרכיב כל מילה מחתיכות, גם כזו שמעולם לא ראה.

כלל אצבע מעשי באנגלית: ==בערך 4 תווים = טוקן אחד, או בערך 100 טוקנים ל-75 מילים.== בעברית זה פחות יעיל — אותיות בעברית לרוב נשברות ליותר טוקנים מאשר אנגלית, כך שטקסט עברי "אוכל" יותר טוקנים על אותו תוכן. למה זה חשוב לכם בפועל? כי החיוב (כמה תשלמו), המהירות והמגבלות נמדדים בטוקנים, לא במילים. משפט עברי ארוך עולה יותר ממשפט אנגלי באותו אורך.

הקשר: כל מה שהמודל "רואה" עכשיו

עכשיו המושג השני. כשאתם שולחים הודעה, המודל לא רואה רק אותה. הוא רואה את ההקשרכל הטקסט שמוזן למודל באותו רגע: הוראת המערכת (הוראת רקע קבועה שמכתיבה למודל איך להתנהג, נכתבת פעם אחת ופועלת לכל אורך השיחה), כל ההיסטוריה של השיחה, הקבצים שצירפתם, והשאלה הנוכחית — הכל יחד כרצף אחד של טוקנים.

הנה האינטואיציה הכי חשובה במאמר הזה: דמיינו עובד מבריק עם אפס זיכרון לטווח ארוך. בכל פעם שאתם פונים אליו, הוא קורא מחדש את כל הדף שמונח לפניו, עונה — ושוכח הכל. אין לו "אתמול". הדף שלפניו הוא כל עולמו. במודל שפה (LLM — Large Language Model, מודל שפה גדול), ה"דף" הזה הוא ההקשר. המודל לא "זוכר" את השיחה הקודמת בזיכרון פנימי — בכל תור, התוכנה שולחת לו מחדש את כל ההיסטוריה כטקסט. כשזה מרגיש כאילו הוא זוכר, זה כי המערכת מצרפת שוב את כל מה שנאמר לתוך ההקשר.

למה ה"למה" כאן קריטי? כי ברגע שהבנתם ש"זיכרון" = "טקסט שמוזרק מחדש כל פעם", הכל מתבהר: אם משהו לא נמצא בהקשר הנוכחי, מבחינת המודל הוא לא קיים. לא "נשכח" — פשוט לא שם.

חלון הקשר: הגבול הפיזי של הדף

המושג השלישי סוגר את הסיפור. ל"דף" יש גודל מקסימלי. חלון ההקשר (context window) הוא המספר המרבי של טוקנים שהמודל יכול להחזיק ולעבד בבת אחת — הקלט והפלט גם יחד. אם דגם מסוים נושא חלון של 200,000 טוקנים, זה כל מה שיש. הכל — ההוראות, השיחה, המסמכים, והתשובה שעוד תיכתב — חייב להיכנס לתוך התקרה הזו.

למה בכלל יש גבול? כי המנגנון שמאפשר למודל "לשים לב" לכל טוקן ביחס לכל טוקן אחר (נקרא attention — מנגנון שמשקלל כמה כל מילה רלוונטית לכל מילה אחרת ברצף) מתייקר בערך ריבועית עם האורך. "ריבועית" פירושו: כפול טוקנים = פי-ארבעה עבודה וזיכרון, פי-שלושה טוקנים = פי-תשעה. לכן לא סתם פותחים את החלון לאינסוף — זה יקר וכבד.

ועכשיו ה"שכחה" מקבלת הסבר מדויק. כשהשיחה גדלה מעבר לחלון, המערכת חייבת לזרוק טוקנים ישנים כדי לפנות מקום — בדרך כלל את ההתחלה. השם שנתתם בהודעה הראשונה? נדחף החוצה מהדף. זו הסיבה שהמודל "שוכח": לא בגלל חולשת זיכרון, אלא כי הטקסט שלכם יצא פיזית מחלון ההקשר. תופעה מתועדת נוספת היא "אובדן באמצע" (באנגלית: lost in the middle): גם כשהכל בתוך החלון, מודלים שמים לב חזק יותר להתחלה ולסוף, ופחות למה שתקוע באמצע. לכן הוראה קריטית שקברתם בפסקה 12 מתוך 30 — עלולה להתפספס גם אם טכנית היא עוד בדף.

בדקו את עצמכם

בשיחה ארוכה המודל פתאום שכח שם שנתתם בהתחלה. מה ההסבר הנכון ביותר?

איך מנצחים את זה — מעשי, עכשיו

עכשיו שיש לכם את המנגנון, הטקטיקות הופכות מובנות מאליהן:

1. שימו את החשוב בקצוות. הוראות מפתח — בהתחלה ובסוף הפרומפט (הטקסט שאתם כותבים למודל), לא קבורות באמצע. למה? בגלל "אובדן באמצע". אם יש הוראה שאסור לפספס, חזרו עליה בסוף: "תזכורת: ענה רק בעברית, בפורמט JSON" (JSON — פורמט טקסט מסודר שמחשבים קוראים בקלות, בנוי מזוגות של שם וערך).

2. תמצתו לפני שמתפוצצים. בשיחה ארוכה, כשמרגישים שהמודל מתחיל לטשטש — בקשו ממנו: "סכם את כל מה שסיכמנו עד כה בפסקה אחת." עכשיו פתחו שיחה חדשה והדביקו את הסיכום בהתחלה. למה זה עובד? דחסתם 50 הודעות ל-200 טוקן, ופיניתם את החלון מבלי לאבד את המהות.

3. אל תזרקו מסמך ענק שלם. אם יש לכם ספר של 500 עמודים ושאלה אחת, אל תדחפו את כולו לחלון — זה יקר, איטי, ומזמין "אובדן באמצע". במקום זה שלפו רק את הקטעים הרלוונטיים והכניסו אותם. הטכניקה שעושה זאת אוטומטית נקראת RAG (Retrieval-Augmented Generation) — שיטה שמחפשת במאגר את הקטעים הרלוונטיים לשאלה ומזריקה רק אותם להקשר, במקום את הכל.

4. אל תסמכו על "הוא בטח זוכר". אם פרט קריטי — מספר לקוח, החלטה, כלל — צריך להישאר נכון לאורך שיחה ארוכה, כתבו אותו מחדש בכל פנייה חשובה. זול, פשוט, ועובד.

צעד אחר צעד

לנצח את 'השכחה' בשיחה ארוכה — צעד אחר צעד

1

זהו את הסימן

המודל מתחיל לטשטש, סותר את עצמו, או מתעלם מהוראה שנתתם מזמן. זה הרמז שההקשר מתמלא ופרטים ישנים נדחפים החוצה.

1 / 5

הנקודה שתיקח אתכם הביתה: המודל לא "שוכח" כמו אדם עייף — הוא פשוט לא רואה מה שכבר לא נמצא בחלון ההקשר. ברגע שתחשבו במונחים של "מה נמצא על הדף ברגע זה", תפסיקו להאשים את המודל ותתחילו לנהל את ההקשר כמו מקצוענים. וזה בדיוק ההבדל בין מי שמשתמש ב-AI לבין מי ששולט בו. בואו נטוס גבוה.

אמ;לק

5 הדברים שצריך לדעת

בכל פנייה המערכת מגישה למודל את כל היסטוריית השיחה כטקסט אחד; אין לו זיכרון מתמשך כמו לבן אדם.

באנגלית טוקן שווה בערך שלושת רבעי מילה, ובעברית אותו רעיון עולה לרוב יותר טוקנים — כלומר השיחה מתמלאת מהר יותר.

זהו מספר הטוקנים המקסימלי שהמודל קורא בבת אחת; כשמתקרבים אליו ההתחלה נחתכת או נדחסת — וזו ה'שכחה'.

תופעת 'lost in the middle' גורמת למודל לשים לב טוב יותר להתחלה ולסוף ולפספס מידע שקבור באמצע הקשר ארוך.

שימו את החשוב בקצוות, פתחו שיחה חדשה לכל נושא, תמצתו בעצמכם, ואל תדביקו מסמכים שלמים מיותרים.

פניות תקשורת

לראיונות, שיתופי פעולה והרצאות — נשמח לדבר.

info@yuv.ai