למה אפליקציית ה-RAG שלי המשיכה להזות ואיך תיקנתי את זה
לפני כמה חודשים, עשיתי דמו לבוט התמיכה מבוסס ה-RAG שלי. הוא אמר לקולגה שלנו שמדיניות ההחזרים שלנו היא 30 יום. המדיניות האמיתית שלנו היא 14 יום. הבוט לא היסס. הוא לא אמר שהוא לא בטוח. הוא המציא תשובה בביטחון מוחלט.
RAG אמור לצמצם הזיות (hallucinations). ההגדרה שלי רק העבירה אותן ממקום למקום. למדתי חמישה שיעורים בזמן שביצעתי debugging למערכת הזו.
הפסיקו להשתמש במספר תווים קבוע עבור chunks השתמשתי ב-chunks של 1000 תווים עם חפיפה קלה. זה גרם לבעיות. chunk אחד לעיתים קרובות ערבב בין חוקי משלוח לחוקי החזרות. המודל מיזג את הסעיפים השונים הללו לתשובה אחת שגויה. תיקון: עברתי ל-semantic chunking. חילקתי את הנתונים לפי כותרות ופסקאות. זה שומר על מידע קשור יחד.
דמיון אינו אומר רלוונטיות ה-retriever שלי שלף את 3 ה-chunks המובילים על בסיס cosine similarity. chunk יכול להיראות דומה לשאלה מבלי להכיל את התשובה. המודל מניח שכל מה שנמצא ב-context הוא נכון. תיקון: הוספתי שלב reranking באמצעות cross-encoder. התחלתי גם לתעד (logging) את ה-retrieval scores. זה מראה מתי למערכת חסרה תשובה אמיתית.
אמרו למודל שזה בסדר להיכשל ה-prompt המקורי שלי היה פשוט: השתמש ב-context כדי לענות על השאלה. הוא לא נתן למודל הנחיות למקרה שה-context חסר. המודל מילא את הפערים בניחושים. תיקון: הוספתי הנחיה ספציפית. אם התשובה אינה ב-context, אמור שאינך יודע. ההזיות ירדו מיד.
קבעו סף (threshold) לשליפה המודל עדיין השתמש בידע כללי כאשר השליפה נכשלה. קיוויתי שה-prompt יעבוד, אבל תקווה היא לא אסטרטגיה. תיקון: הגדרתי סף ציון קשיח (hard score threshold). אם ה-retrieval score הגבוה ביותר נמוך מדי, המערכת עוצרת. היא מחזירה הודעת fallback במקום לתת למודל לנחש.
בדקו כשלים, לא רק הצלחות בדקתי רק שאלות קלות שידעתי שהמסמכים מכסים. התעלמתי משאילתות מעורפלות וממידע חסר. הזיות חיים בתוך הפערים האלו. תיקון: בניתי סט הערכה (evaluation set) של "שאלות מלכודת". אלו מקרים שבהם התשובה הנכונה אינה קיימת במערכת. אני מריץ את הבדיקות הללו בכל פעם שאני מבצע שינוי.
RAG לא עוצר הזיות לחלוטין. הוא הופך אותן לשליטות. הבוט שלי עדיין לא יודע הכל. אבל עכשיו, כשהוא לא בטוח, הוא אומר זאת. זה מה שהופך את הכלי לשימושי.
מקור: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10