העלאת מסמך
מי שמנהל חדר מעלה אליו מסמכים בפורמט PDF או Word, בדף המסמכים של החדר. עמודים סרוקים, שאין בהם שכבת טקסט, עוברים OCR אוטומטי.
המערכת שבנינו לא שולחת למודל השפה את כל המסמכים. היא הופכת כל קטע במסמכים לווקטור של מספרים שמייצג את המשמעות שלו, מוצאת את הקטעים הקרובים ביותר לשאלה, ורק אותם שולחת ל-AI לניסוח התשובה.
קורה פעם אחת, כשמעלים מסמך למערכת.
מי שמנהל חדר מעלה אליו מסמכים בפורמט PDF או Word, בדף המסמכים של החדר. עמודים סרוקים, שאין בהם שכבת טקסט, עוברים OCR אוטומטי.
הטקסט מחולץ מכל עמוד. בעברית זה לא מובן מאליו: כלים רגילים מחזירים מספרים, תאריכים וסוגריים בסדר שבור. לכן המערכת בונה כל שורה מחדש לפי המיקום הפיזי של כל תו בעמוד.
. עובד במשרה מלאה זכאי ל22
11. עובד במשרה מלאה זכאי ל-22 ימי חופשההטקסט מחולק לקטעים של עד 1,200 תווים, עם חפיפה של 200 תווים בין קטע לקטע, כדי שמשפט לא ייחתך באמצע. כל קטע זוכר מאיזה מסמך ומאיזה עמוד הוא הגיע.
כל קטע נשלח למודל Embedding, שמחזיר וקטור של 768 מספרים. קטעים עם משמעות דומה מקבלים וקטורים קרובים, גם כשהמילים שונות לגמרי.
כל הווקטורים נשמרים יחד כמטריצה, שורה לכל קטע. זה כל "מאגר הידע" של המערכת, והוא מוכן לחיפוש מהיר.
קורה בכל שאלה, תוך שניות. הדוגמה כאן היא ריצה אמיתית על המסמכים במערכת.
השאלה עוברת דרך אותו מודל Embedding, ולכן היא נמצאת באותו מרחב של הקטעים. עכשיו אפשר להשוות ביניהם. מכיוון שהמרחב משותף, אפשר לשאול בכל שפה: גם שאלה באנגלית או ברוסית מוצאת את הקטעים בעברית שמתאימים לה.
וקטור השאלה מוכפל בכל הווקטורים שבמטריצה, בפעולה אחת. התוצאה היא ציון דמיון (Cosine similarity) לכל קטע: ככל שהוא קרוב ל-1, הקטע קרוב יותר במשמעות לשאלה.
הקטעים ממוינים לפי הציון, ונבחרים 10 הקרובים ביותר (Top-K), ואיתם עד 4 קטעים שצמודים לקרובים שבהם במסמך, כדי שרשימה או תהליך לא ייקטעו באמצע. כל השאר נשארים בשרת ולא נשלחים לשום מקום.
מודל השפה מקבל רק הנחיות (לענות רק מהקטעים ולציין מקור לכל טענה), את 10 הקטעים ואת השאלה. בשאלת המשך מצורפות גם השאלות האחרונות בשיחה. זה הכול, ולא כל מאגר המסמכים.
התשובה נכתבת בזרם, מילה אחרי מילה, עם הפניות. לחיצה על הפניה פותחת את העמוד המקורי, עם הקטע שעליו התבססה התשובה מודגש.
לשאלות מורכבות, בכפתור "מחקר מעמיק" בצ'אט: מודל השפה מתכנן את החיפוש, בודק מה נמצא ומחליט אם לחפש שוב. הדוגמאות כאן להמחשה.
מודל השפה מפרק את השאלה לשתיים עד ארבע שאלות משנה, שכל אחת מובנת בפני עצמה. כל היבט נבדק בנפרד, כך שאף חלק של השאלה לא נשכח.
כל היבט מחופש בשתי דרכים: לפי משמעות (וקטורים), ולפי מילים מדויקות (BM25), כמו מספר סעיף, ראשי תיבות או שם של טופס. שני הדירוגים מאוחדים לרשימה אחת, וקטע שגבוה בשניהם עולה ראשון.
| קטע | משמעות | מילים | מאוחד |
|---|---|---|---|
| תנאים לעבודה מהבית | #2 | #1 | 1 |
| שעות נוספות מהבית | #1 | #3 | 2 |
| דיווח על שעות העבודה מהבית | #4 | #2 | 3 |
| זמינות במהלך יום העבודה | #3 | – | 4 |
מודל השפה קורא את הקטעים שנמצאו ונותן לכל אחד ציון רלוונטיות מ־0 עד 3. רק הקטעים הרלוונטיים נשלחים לתשובה, החשובים ביותר קודם.
המודל גם בודק אם כל היבט קיבל תשובה. להיבט שחסר הוא מנסח שאילתת חיפוש חדשה, והחיפוש והבדיקה חוזרים. מה שעדיין לא נמצא מסומן, והתשובה אומרת זאת במקום לנחש.
דיווח שעות נוספות בעבודה מהביתשאלו שאלה, והפעילו את "מצב מהנדס" כדי לראות את הווקטורים והציונים של כל תשובה.
כניסה לצ'אט