אוצריא AI היא מערכת חיפוש סמנטי מקומית למאגר תורני המבוסס על מסד הנתונים של אוצריא.
המערכת משלבת חיפוש וקטורי עם FAISS, חיפוש טקסטואלי ב־SQLite FTS, הרחבת מונחים, תיקון איות, וסינון לפי ספרים מתוך עץ הספרייה.
- מחפשת טקסטים רלוונטיים על בסיס משמעות ולא רק התאמה מילולית.
- בונה אינדקס מקומי מהמסד כדי לאפשר חיפוש מהיר.
- תומכת בטעינת מודל embeddings מ־Hugging Face או מקובץ ZIP מקומי.
- מאפשרת סינון לפי ספרים וקטגוריות.
- מספקת השלמה אוטומטית, הצעת תיקון איות והצגת הקשר רחב לתוצאה.
- פועלת כשרת Flask מקומי עם ממשק אינטרנטי בכתובת
http://127.0.0.1:8000.
- Python 3.10 ומעלה מומלץ
- Windows מומלץ להרצה הנוכחית
- מסד נתונים של אוצריא בפורמט
db,sqliteאוzip - חיבור אינטרנט רק אם רוצים להוריד מודל מ־Hugging Face או את מסד הנתונים אוטומטית
הערה: הקוד משתמש גם ב־tkinter כדי לפתוח חלונות בחירת קבצים מקומיים. ברוב התקנות הסטנדרטיות של Python ב־Windows הוא כבר מגיע מובנה.
- צור סביבה וירטואלית:
python -m venv .venv
.venv\Scripts\Activate.ps1- התקן את התלויות:
pip install -r requirements.txtהתוכנה עובדת על בסיס מסד הנתונים של אוצריא או של זית. אם אחת מהתוכנות האלו מוגדרת בנתיב ברירת המחדל, התוכנה תזהה את המיקום לבד, באם לא יש להגדיר את נתיב מסד הנתונים בהגדרות.
אם התוכנות אינן מותקנות, ניתן להוריד ידנית את אחד ממסדי הנתונים לבחירה:
- מסד הנתונים הדחוס של אוצריא: seforim.db.zst
- מסד הנתונים הדחוס של זית, חלק ראשון: seforim_bundle.tar.zst.part01
- מסד הנתונים הדחוס של זית, חלק שני: seforim_bundle.tar.zst.part02
שימו לב - עבור מסד הנתונים של זית יש להוריד את שני החלקים של זית כדי לחלץ את הקובץ בהצלחה.
לאחר ההורדה יש להגדיר את הנתיב של הקבצים המחולצים בהגדרות התוכנה.
הרץ את היישום:
python app_ai.pyלאחר ההפעלה פתח בדפדפן:
http://127.0.0.1:8000
בעת העלייה המערכת תנסה:
- לטעון הגדרות מתוך
runtime/settings.json - לטעון את מסד הנתונים שהוגדר
- לטעון את מודל ה־embeddings
- לבנות או לטעון אינדקס חיפוש קיים מתוך תיקיית
runtime
הגדרות הריצה נשמרות בקובץ:
runtime/settings.json
דוגמאות לפרמטרים מרכזיים:
db_path- נתיב למסד הנתוניםedition- גרסת המודל, למשלv3model_source- מקור המודל:hfאוzipzip_path- נתיב לקובץ ZIP של המודלmax_chunks- מספר הקטעים המקסימלי לאינדוקסtop_k- מספר תוצאות להצגהmin_score- ציון מינימלי לסינון תוצאות
app_ai.py- קובץ היישום הראשיapp_ai.html- קובץ HTML נוסף/ישן של הממשקstatic/- קבצי CSS, JS, פונטים ואייקוניםruntime/- קבצי אינדקס, SQLite ביניים והגדרותdb/- מסדי נתונים שהועלו או הורדוhf_cache/- מטמון מודלים שהורדו מ־Hugging Facelocal_models/- מודלים שחולצו מקובצי ZIPmodels_zips/- קובצי ZIP של מודליםאחרים/- קבצי גרסאות וניסויים ישנים
- חיפוש היברידי: שילוב בין חיפוש וקטורי לבין חיפוש FTS
- חלוקה חכמה לקטעים לפי מילים וסימני פיסוק
- נרמול טקסט עברי והסרת ניקוד
- גזירה בסיסית של תחיליות בעברית
- הרחבת שאילתה לפי מילים דומות במרחב הווקטורי
- בדיקת איות בסגנון Norvig
- הצגת עץ ספרייה וטעינת הקשר סביב תוצאה
GET /- עמוד החיפוש הראשיGET /status- מצב טעינה/אינדוקסGET /api/autocomplete- השלמה אוטומטיתGET /api/get_tree- עץ הספרייהGET /api/get_context- שורות הקשר סביב תוצאהPOST /setup- שמירת הגדרות והפעלה מחדש של טעינה/אינדוקסPOST /upload_db- העלאת מסד נתוניםPOST /upload_model- העלאת מודל ZIPPOST /download_db- הורדת מסד נתונים
כברירת מחדל הקוד מצפה למודל embeddings מהמאגר:
ArieLLL123/otzaria-embeddings
- אם אין אינדקס קיים בתיקיית
runtime, הבנייה הראשונה עלולה לקחת זמן. - קבצי אינדקס ו־SQLite ביניים נשמרים מקומית כדי להאיץ הרצות חוזרות.
- אם מסד הנתונים הוחלף, יש לבצע בנייה מחדש של האינדקס.
- אם עובדים ללא אינטרנט, כדאי להשתמש במודל ZIP מקומי או במטמון קיים בתיקיית
hf_cache.
קובץ התלויות של הפרויקט נמצא ב־requirements.txt.