היי חברים,
אני רוצה לשתף אתכם בנסיונות ליצור חיפוש תורני חכם מבוסס בינה מלאכותית.
אז לפני כמה חודשים הדגמתי חיפוש חכם בשולחן ערוך, וזה היה מבוסס על מודל שידע לסווג משפטים לסעיפים הנכונים בשולחן ערוך. אך זה היה כרוך באימון של המודל, מה שגרם לזה להיות מורכב.
הפעם השתמשתי בשיטה אחרת, היתרון שלה הוא שהיא ניתנת להרחבה בקלות גם למאגרים גדולים (אוצריא?) וגם לא הייתי צריך לאמן שום מודל, השתמשתי במודל קיים (עם זאת, יתכן שאימון כן יכול לעזור לו, במיוחד במושגים תורניים שהוא לא מכיר).
העקרון הוא כזה: יש מודל שיודע לתת לכל משפט ייצוג מספרי מתאים, שזה בעצם סדרה של מספרים, שאפשר להתייחס אליה כמציינת את המיקום של המשפט במרחב המשפטים. לדוגמה שני מספרים יכולים לשמש ציון של מיקום על ציר הX והY במרחב דו מימדי. אבל כאן משתמשים בהרבה מספרים, וזה בעצם מיקום במרחב רב מימדי. לוקחים את כל המשפטים שרוצים לחפש בהם, ונותנים להם את המספרים הללו. אחר כך לוקחים את השאילתה שהמשתמש רוצה, וגם לה נותנים ייצוג באותה שיטה, ומחפשים את הנקודה הקרובה ביותר במרחב.
תמונה להמחשה: 
איך בעצם מייצרים את המספרים הללו? למעשה מדובר במודל שפה מתוחכם עם הרבה למידת מכונה, שהתאמן על משפטים דומים ושונים. אבל לסבר את האוזן נוכל להראות איך ניצור כאלו מספרים פשוט ממספר המילים שחוזרות על עצמן בכל קטע.
נניח שיש לנו שני קטעי מתכונים ושני קטעים מספר על טיולים, ואנ ורוצים לתת לכל קטע ייצוג, אז נספור את מספר הפעמים שמופיעים המילים "חלב" "ביצים" "ירושלים" "כביש", בכל אחד מהקטעים הללו, ונגלה שבעצם הייצוג של שני קטעי המתכונים די דומה (נניח שאחד מהם הוא 2,3,0,0 והשני הוא 1,2,0,0 - כלומר המילה חלב מופיעה פעם אחת, ביצים פעמיים וכביש וירושלים בכלל לא.) אבל קטעי הטיולים דווקא כן דומים למדי (0,0,3,5 ו1,0,2,6).
אז זה השלב הראשון.
לפעמים זה לא מספיק, אז בשביל זה יש את השלב השני. שולחים את התוצאות (נניח 10 התוצאות הראשונות) למודל שפה גדול (נניח GPT 3.5) ונותנים לו למיין את התוצאות לפי הרלוונטיות שלהם. זה אמור לשפר מאד את התוצאות, כי מודל השפה אמור להבין איזו תשובה הכי רלוונטית לשאלה.
השתמשתי להדגמה בספר "ילקוט יוסף - קיצושו"ע אורח חיים" של מרן הראשל"צ משום שהוא כתוב בשפה קלה, שגם מודלי שפה יכולים להבין. אבל די בקלות אפשר להרחיב אותו לכל ספר שהוא.
יאללה מספיק דיבורים, תביא את הלינק וגמרנו:
https://huggingface.co/spaces/sivan22/Halacha-semantic-search
שימו לב שכדי להשתמש במודל שפה (שלב ב) צריך לספק לו מפתח API של openAI, ניתן להשיג אותו (בתשלום) באתר של openAI. אבל החיפוש הרגיל עובד לכולם.