בידוד נתונים רב-דייריים
כל דייר מקבל מפתח-מחיצה ClientId קפדני המיושם בכל שכבת אחסון. הטבלאות היחסיות ואוספי החיפוש-הווקטורי שלנו מקושרים ל-ClientId עם מסנני שורה ואוסף הנאכפים בשכבת השאילתה. תבנית ה-repository דוחה כל שאילתה ללא ClientId בזמן-הידור דרך כלל מנתח-סטטי. פרויקטי מעקב-השגיאות, יומני ביקורת ומיכלי blob כולם שומרים על אותה משמעת מחיצה. נתונים בין-דיירים הם בלתי-אפשרות מבנית, לא בדיקת זמן-ריצה.
צינור אחזור RAG
קליטה → chunk → embed → upsert: מסמכים (PDF, DOCX, HTML שנגרד, זוגות FAQ) מחולקים ל-chunks של 200-500 טוקנים עם חפיפה של 50 טוקנים. Chunks מוטמעים דרך מודל ההטמעה שלנו (וקטורים בני 1536 ממדים) ונכנסים למנוע החיפוש-הווקטורי שלנו עם metadata (ClientId, sourceUrl, chunkIndex). נתיב שאילתה: שאלה מוטמעת, חיפוש דמיון-קוסינוס top-K מסונן לפי ClientId, ScoreThreshold ברירת-מחדל 0.5. Chunks שאוחזרו עוברים ל-LLM עם metadata ציטוט מובנה כדי שהתשובה תישא Snippet לכל מקור. פיוס רץ לילית כשירות BackgroundService.
הפשטת ספק LLM
כל קריאות LLM עוברות דרך ILlmProvider - הפשטה דקה מעל כמה ספקי מודל-שפה (ספק ראשי וחלופת מסלול-Enterprise ל-failover). בחירת ספק לכל-דייר דרך תצורה; failover מנותב אוטומטית בהגבלת-קצב או 5xx. שימוש בטוקנים ועלות מדווחים לכל-קריאה במטען התגובה כדי שהדיירים יוכלו לעקוב אחר הוצאות בזמן-אמת. החלפת ספק אינה דורשת הגירה בצד-הלקוח - ההפשטה מבודדת קוד יישום.
תבנית מתאם ערוצים
כל ערוץ (web widget, Telegram, WhatsApp Business, Instagram DM, אימייל) מיישם IChannelAdapter - חוזה משותף המתרגם מעטפות הודעות מקומיות לערוץ למודל Conversation דומיין מאוחד. תבנית המתאם מאפשרת לצינור השאילתה הליבה לרוץ בלי-תלות-בערוץ; עיצוב לכל-ערוץ (מקלדות מוטמעות של Telegram, הודעות תבנית של WhatsApp) שוכן בתוך המתאם. הוספת ערוץ אינה נוגעת בצינור השאילתה.
צינור תגובת streaming
Streaming מבוסס-SSE דרך נקודת קצה /v1/query/ask-stream. אירוע ראשון הוא sources-early - פולט metadata ציטוט לפני שמתחיל streaming של LLM (כדי שווידג'טים יציגו hover-cards "לפי" בזמן שהתשובה עדיין זורמת). אירועים עוקבים הם chunks של טוקנים; אירוע סופי הוא done עם metadata מצטבר (סה"כ טוקנים, סה"כ עלות, מזהה יומן שיחה). חותך אחורית-נתפסת ב-~70% לעומת תגובה סינכרונית.
זרימת נתוני קבלן-משנה
שאילתת לקוח → ingress מוצפן TLS → שכבת ה-API שלנו → קריאת הטמעה לספק המודל שלנו (ארה"ב, SCC 2021/914) → חיפוש וקטור במנוע האחזור שלנו → קריאת LLM לספק מודל-השפה שלנו עם chunks שאוחזרו → תגובה חזרה דרך שכבת ה-API → SSE חזרה לווידג'ט. ספק ניטור השגיאות שלנו מקבל מעטפות שגיאה מנוקות (PII מנוקה לפני פליטה). ספק אימייל טרנזקציוני מטפל באימייל טרנזקציוני (ארה"ב, SCC 2021/914). ספק CDN ואבטחת קצה מפעיל WAF ו-CDN בקצה גלובלי. קבלני-משנה לפי קטגוריה ב-/he/sub-processors/; הרשימה המלאה עם שמות הספקים נמסרת לפי בקשה, תחת הסכם סודיות (NDA) או במסגרת הסכם עיבוד הנתונים (DPA) שלנו.
טופולוגיית פריסה
פלטפורמת ענן מנוהלת במלואה מריצה את ה-API הציבורי, אתר השיווק, פלטפורמת הניהול והרכזות האנכיות כשירותים נפרדים המתמדדים בנפרד. בסיס-נתונים יחסי מנוהל מחזיק את האחסון היחסי עם גיבוי יומי ושחזור לנקודת-זמן של 24 שעות. מנוע החיפוש-הווקטורי שלנו רץ עם אוספים לכל-דייר. מטמון מנוהל בזיכרון מגבה sessions ו-token bucket להגבלת-קצב. אחסון אובייקטים מחזיק blobs של מסמכים. ספק CDN ואבטחת קצה בחזית ל-WAF / הקלת DDoS / CDN. זרימות עבודה של CI מפעילות פריסות ייצור במיזוג לסניף השחרור.
עמדת התאוששות מאסון
RTO 4 שעות, RPO שעה. גיבויים יומיים של בסיס-הנתונים המנוהל עם שמירה של 35 ימים; שחזור לנקודת-זמן בתוך 24 השעות האחרונות. מנוע החיפוש-הווקטורי שלנו מצולם לילית לאחסון אובייקטים. Failover רב-אזורי לזמינות גבוהה. ספר-הפעלה של DR נבדק רבעונית עם כשל אזור מדומה. דף סטטוס ב-status.slatech.ai מראה את זמינות הרכיבים כרגע.
צינור הערכה
תשובות הבנויות על תוכן שאוחזר מנוקדות בקריאת-מודל שנייה על עובדתיות, הזיה וביטחון. הציונים נכתבים לכל שאילתה וגלויים ללקוח שהאתר שייך לו בתיבת הניהול. אין הרצה תקופתית מול סט-בדיקה קבוע - /he/eval/ מסביר מה תדרוש השוואה שניתן לפרסם.
מחסנית תצפיתיות
ניטור שגיאות לכל שירות backend עם ניקוי PII לפני פליטה. ניטור עסקאות סינתטיות בתדר 5-דקות. טווחים מאופיינים-OpenTelemetry לתזמוני צינור שאילתה. יומן ביקורת לכל-דייר ניתן ליצוא במסלול Enterprise. status.slatech.ai בודק 12 רכיבי ייצור ומראה אם כל אחד מהם עונה.