חיפוש היברידי בייצור: איך Papers with Code הרכיבו מערכת על גבי Hugging Face

פלטפורמת Papers with Code חשפה את הארכיטקטורה שמאחורי מנוע החיפוש שלה, מערכת היברידית שמשלבת חיפוש לקסיקלי מלא ב-PostgreSQL עם אחזור סמנטי דרך pgvector, כשאלגוריתם RRF (Reciprocal Rank Fusion) ממזג את התוצאות. המערכת משרתת כיום יותר מ-110,000 מאמרים שמקורם ב-arXiv וב-Daily Papers, ונבנתה כך שתתמודד עם שאילתות ניווטיות ("המאמר המקורי של BERT"), כותרות חלקיות, שגיאות הקלדה, וגם עם מצבים שבהם שירות ההטמעות (embeddings) קר, עמוס או לא זמין.
הפרדה בין בנייה אופליין לשאילתה אונליין
הצוות חילק את העבודה בכוונה: את בניית הקורפוס היקרה, שדורשת תפוקה גבוהה, מריצים כ-Hugging Face Jobs, מחשוב GPU פריץ (burstable) לפי דרישה. התוצרים המאוחסנים (וקטורים, מטא-דאטה) יושבים ב-Hugging Face Storage Buckets, שמשמשים כתחנת מעבר עמידה בין בסיס הנתונים, הניסויים וה-Jobs. רק שלב הטמעת השאילתה החי (query embedding) רץ על נתיב הבקשה (request path), מאחורי Hugging Face Inference Endpoint מוגן, עם נפילה מיידית לחיפוש טקסט מלא אם האנדפוינט לא מגיב בזמן. ההפרדה הזו מאפשרת גם עוצמה סמנטית וגם זמן תגובה נמוך.
פורמט הטמעה כ-API מגורסן
צינורות הטמעה נוטים להישבר בדרכים שקטות: גרסת מודל משתנה, פרומפטים של שאילתה ומסמך מתערבבים, וקטורים נחתכים אחרת, או תקציר מעודכן כבר לא תואם את הווקטור השמור. הפתרון שנבחר הוא להתייחס לפורמט ההטמעה כ-API מגורסן. כל מאמר מקודד ככותרת מנורמלת + "\n\n" + תקציר מנורמל, ולכל הרצת וקטורים נרשמים: מאגר המודל וגרסה מדויקת (revision), ממד פלט, גרסת פורמט קלט, האם הקלט הוא שאילתה או מסמך, שיטת נרמול, ו-content hash של הכותרת והתקציר. הגישה הזו מונעת drift שקט ומאפשרת שחזור ושחזוריות (reproducibility) מלאים.
בחירת מודל: Qwen3-Embedding-0.6B ב-256 ממדים
לייצור נבחר Qwen/Qwen3-Embedding-0.6B, נעול ל-revision ספציפי, עם וקטורים L2-מנורמלים ב-256 ממדים. הבחירה נשענה על לוח ההישגים של MTEB, הבנצ'מרק המקובל להשוואת מודלי הטמעה. דור ה-Qwen3 מוסיף שתי יכולות רלוונטיות: תמיכה בגודל הטמעה דינמי דרך MRL (Matryoshka Representation Learning), שמאפשר סחר-חלף (trade-off) בין איכות למהירות ואחסון, הצוות בחר 256 ממדים כדי לשמור על חיפוש מהיר, ואפשרות להעביר instruction prompt שמכוון את המודל לאופי המשימה. שתי התכונות הללו שולבו בצינור הייצור.
לקחים: נפילה חיננית (graceful degradation) זה לא אופציונלי
התובנה המרכזית מהפריסה לייצור היא שהפרדת המסלול היקר (offline) מהמסלול החם (online) אינה רק עניין של ארכיטקטורה נקייה, היא תנאי לאמינות. כשאנדפוינט ההטמעות לא זמין, המערכת לא מחזירה שגיאה אלא נופלת לחיפוש לקסיקלי מלא, שעדיין מוצא כותרות מדויקות ומזהי arXiv. במקביל, גירסור פורמט הקלט וה-content hash מונעים את הבעיה הקלאסית של וקטורים מיושנים שנשארים בבסיס הנתונים אחרי עדכון תקציר או החלפת מודל. התוצאה: מנוע חיפוש שמבין סמנטיקה אבל לא נתקע כשהתשתית מגמגמת.