Prompt and context (HE)

From Systems analysis Wiki
Jump to navigation Jump to search

Prompt וקונטקסט הם מושגים יסודיים ב-prompt engineering עבור מודלים שפתיים גדולים (LLM).

הקונטקסט הוא מרכיב קריטי של ה-prompt, הקובע את יכולת ה-LLM לייצר תשובות מדויקות, רלוונטיות ושימושיות. prompt engineering אפקטיבי הוא במידה רבה אומנות של איסוף, סינון, מיבנוי והצגת הקונטקסט הנכון למודל ברגע הנכון, תוך התגברות על מגבלות ה-LLM המודרניים.

הגדרת ה-Prompt

Prompt — הוא מכלול הנתונים הנכנסים המסופקים ל-LLM לצורך יצירת תשובה. זו אינה רק שאלה או פקודה, אלא טקסט מובנה שיכול לכלול:

  • הוראות: הנחיות ישירות למודל לגבי מה יש לעשות, באיזה פורמט, סגנון או טון.
  • שאילתה מרכזית (Query): שאלת המשתמש הישירה או תיאור המשימה העיקרית.
  • קונטקסט: מידע נוסף הנחוץ לביצוע תקין של הבקשה.
  • דוגמאות (Few-shot examples): הדגמה של הפורמט או הסגנון הרצוי של תשובה על משימות דומות.

איכות ה-prompt ושלמותו קובעות ישירות את הרלוונטיות, הדיוק והשימושיות של תשובת ה-LLM.

הגדרת הקונטקסט

קונטקסט במסגרת prompt engineering הוא כל מידע בתוך ה-prompt המסייע למודל להבין טוב יותר את המשימה, את הספציפיות של המצב או את ציפיות המשתמש, אך אינו חלק מנתוני האימון המקוריים שלה. הקונטקסט מספק פרטים סיטואציוניים הנחוצים לייצור תשובה הולמת.

הקונטקסט יכול לכלול:

  • היסטוריית דיאלוג קודמת (בצ'אט-בוטים).
  • נתונים שהוצאו ממקורות חיצוניים (מסמכים, בסיסי נתונים, דפי אינטרנט) — הבסיס של RAG.
  • מידע על המשתמש (פרופיל, העדפות).
  • פרטים ספציפיים של המשימה או המצב הנוכחי.
  • דוגמאות לביצוע משימות דומות (כחלק מ-few-shot prompting).

חשוב להבחין בין קונטקסט המסופק ב-prompt לבין הידע הכללי שנרכש על ידי המודל במהלך אימון המוקדם שלה. prompt engineering מתמקד בהספקה אפקטיבית של קונטקסט סיטואציוני דווקא.

הקשר ההדדי וההשפעה

Prompt וקונטקסט — מושגים יסודיים בעבודה עם transformers, הקובעים כיצד המודל תופסת את הנתונים הנכנסים ועל בסיס מה היא מייצרת את התוצאה. מבחינה ארכיטקטורית, ה-transformer אינו מבחין ספציפית בין "prompt" ל"קונטקסט" — שניהם הם חלקים מרצף ה-tokens הנכנסים, המומרים ל-embeddings, מועשרים במידע פוזיציוני ומעובדים יחד על ידי שכבות self-attention.

Prompt וקונטקסט קשורים בקשר בל יינתק: הקונטקסט הוא מרכיב של ה-prompt.

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

אפקטיביות ה-prompt תלויה במידה רבה בכך שהמהנדס הצליח לאסוף, לסנן ולהציג את הקונטקסט הרלוונטי למודל.

סוגי הקונטקסט

ניתן לסווג קונטקסט לפי קריטריונים שונים:

לפי מקור:

  • מסופק על ידי המשתמש: קלט מפורש של המשתמש, שאלתו או תיאור המשימה.
  • מהיסטוריית הדיאלוג: הודעות קודמות של המשתמש והעוזר (זיכרון לטווח קצר).
  • מחולץ (Retrieved): נתונים ממקורות חיצוניים (מסמכים, בסיסי נתונים, אינטרנט) באמצעות RAG.
  • מפרופיל/בסיס ידע: מידע ארוך טווח על המשתמש או הדומיין.
  • סטטי/הוראתי: מידע שהוטמע על ידי המהנדס בתבנית ה-prompt (הוראות, דוגמאות, הגדרות תפקידים).

לפי דינמיות:

  • קונטקסט סטטי: חלק קבוע של ה-prompt (הוראות, הגדרות, דוגמאות). קובע את המשימה הכללית.
  • קונטקסט דינמי: מידע המשתנה מבקשה לבקשה (נתוני משתמש, תוצאות RAG, שעה נוכחית). מספק פרטים ספציפיים.

לפי משך האחסון (זיכרון):

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

ניהול הקונטקסט

ניהול קונטקסט אפקטיבי הוא משימת המפתח של prompt engineering, במיוחד לנוכח מגבלות חלון הקונטקסט של LLM. שיטות עיקריות:

  • RAG: השיטה הנפוצה ביותר לעבודה עם כמויות מידע גדולות. מאפשרת למצוא באופן דינמי ולכלול ב-prompt רק את השברים הרלוונטיים ביותר מבסיס ידע נרחב. דורשת בסיס נתונים וקטורי ומנגנוני חיפוש אפקטיביים (לקסיקלי או סמנטי).
  • Chunking (חלוקה לחתיכות): פיצול מסמכים גדולים לחלקים קשורים סמנטית או בגודל קבוע לצורך אינדוקס ושליפה עוקבת דרך RAG.
  • סיכום (Summarization): דחיסת היסטוריית דיאלוג ארוכה או מסמכים נרחבים להעברת המשמעות העיקרית בחלון קונטקסט מוגבל.
  • ניהול זיכרון (Memory Management): שימוש באסטרטגיות שונות לאחסון ושליפה של היסטוריית דיאלוג בצ'אט-בוטים ובסוכנים (למשל, ConversationBufferMemory, ConversationSummaryBufferMemory ב-LangChain).
  • חלון הזזה (Sliding Window): שמירת N ההודעות האחרונות בלבד של הדיאלוג בקונטקסט.
  • סינון ותעדוף: ברירת השברים הרלוונטיים ביותר של הקונטקסט על סמך חשיבותם (למשל, על ידי ציוני רלוונטיות שהתקבלו בחיפוש) לפני הרכבת ה-prompt הסופי.

תפקיד הקונטקסט ב-Prompt Engineering

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

מגבלות

  • מגבלת חלון הקונטקסט: למרות הגידול עד 1–2 מיליון tokens במודלים מודרניים, עיבוד כמויות כאלה עשוי להיות יקר ואיטי. דורש אסטרטגיות אפקטיביות של דחיסה וברירה (RAG, סיכום).
  • חיפוש קונטקסט רלוונטי: אפקטיביות ה-RAG תלויה באיכות החיפוש. קונטקסט שחולץ שלא כהלכה עלול לבלבל את המודל ("זבל בכניסה — זבל ביציאה").
  • "עמק האדישות" (Valley of Meh): מידע הממוקם באמצע prompt ארוך מאוד עלול להתעלם על ידי המודל. דורש מיבנוי של ה-prompt (למשל, "טכניקת הסנדוויץ'").
  • סיכון של הזרקת קונטקסט (Context Injection): אם הקונטקסט מחולץ ממקורות לא מהימנים (למשל, דפי אינטרנט), הוא עשוי להכיל הוראות זדוניות (prompt injection).

ספרות

  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
  • Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
  • Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
  • Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.

ראו גם

  • מודלים שפתיים גדולים
  • חלון קונטקסט
  • בסיסי נתונים וקטוריים
  • LangChain