חיפוש עבודה בעזרת סוכנים חכמים – חלק 3

בחלקים הקודמים (חלק 1, חלק 2) נתקל סוכן המשרות החכם שלנו בבעיה של כמות הטוקנים הגדולה בפרומפט, בגלל גודלו של קובץ המשרות.

בחלק הזה ננסה למצוא דרך לעזור לסוכן החכם לאתר קרבה סמנטית של המשרה(ות) לפרומפט המבוקש. אחת הדרכים הנפוצות בדוגמאות רבות של RAG ומערכות סוכנים חכמים היא השימוש בהטמעות (embeddings) בכדי לאתר קרבה סמנטית. התהליך כולל בדרך כלל ייצור וקטורי הטמעות למסמכי החיפוש ולפרומפט (אני מסרב להשתמש במילה העברית מנחה) ומציאת הקרבה ביניהם. הסבר על התיאוריה וכל נושא ההטמעות הוא מעבר למתוכנן עבור פוסט זה – אבל ניתן למצוא מידע רב ברשת. יש כאלו הטוענים לחסרונות בשיטה זו (למשל: The Insanity of Relying on Vector Embeddings: Why RAG Fails) אבל לצורך הדוגמה שלנו זו כנראה שיטה לגיטימית לבדוק האם היא תניב תוצאות קבילות.

בהרבה מאוד דוגמאות, וכנראה במערכות פרודקשן, נעשה שימוש באכסון של וקטורי ההטמעות – בדרך כלל בבסיסי נתונים ייעודיים לנושא כמו Chroma DB ודומיו. אבל בדוגמה הפשוטה שלנו נייצר את ההטמעות בכל הרצה.

לצורך בדיקה, נשתמש בשתי משרות לדוגמה. האחת מתאימה מאוד לפרומפט של "Cloud Architect" , והאחרת פחות.

job-1.json
משרה זו מתאימה – job-1.json
job-2.json
משרה זו אינה מתאימה – job-2.json

נריץ את הקוד הזה למציאת מידת הקרבה לפרומפט:

כשמריצים מתקבלת התוצאה הבאה:

Cosine similarity to job1: 0.5836322943367188
Cosine similarity to job2: 0.5218661225791285
    

Cosine similarity to job1 title: 0.7767796108694911
Cosine similarity to job2 title: 0.46854531550568995

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

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

תמונת השער יוצרה באמצעות AI באתר tensor.art