צ׳אטבוט בינה מלאכותית בתווית לבנה: RAG, ריבוי דיירים וחיוב למפיצים

מפיץ צריך צ׳אטבוט שעובד באמינות זהה אצל כל לקוח — עם נתונים וחיובים נפרדים. אנו מפתחים צ׳אטבוטים של בינה מלאכותית בתווית לבנה במפתח-סופי: בידוד דיירים, ערכת קונפיגורציות ותקנונים, ומסירה מובנת. הפעלת מצב ריבוי לקוחות מקצרת את זמן החיבור של לקוח חדש פי כמה.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

White-label AI צ'אטבוט: היכן נשברת המולטיטננטיות

ה-White-label AI צ'אטבוט הראשון כמעט תמיד נבנה עבור לקוח אחד: בסיס ידע אחד, מפתח אחד למודל, תור עיבוד אחד. כל עוד הדייר אחד, הכול עובד. זה נשבר בדיוק כשמתחילים למכור את הפתרון למספר חברות, והמנוע נשאר משותף: צ'אטבוט מולטיטננטי בהרכבה כזו נשען על הסכמים ידניים.

השבירה היקרה ביותר — בסיס ידע משותף ללא שיוך לדייר. חיפוש אחר «תנאי אספקה» מוצא ביושר את הקטעים הקרובים, וביניהם מופיעים פסקאות ממסמכים של השכן: מחירים, פרטי התקשרות, התכתבות פנימית.

הפרדה ברמת PostgreSQL — סכימה נפרדת, מזהה דייר חובה בכל רשומה ובכל שאילתה — מסירה את סוג הדליפות הזה לחלוטין, ולא «הופכת אותו לבלתי סביר».

הקרע השני — תמחור. צריכת המודל נופלת לחשבון משותף: הרסאלר לא יכול להראות ללקוח כמה הוא צרך, ואנחנו לא יכולים להאט משתמש כבד אחד בלי לפגוע באחרים. נדרש חשבון צריכה לפי כל דייר, מכסות והרעה צפויה כשהן נגמרות.

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

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

מה נותנים בידוד דיירים וחישובים נפרדים

ב-White-label AI צ'אטבוט תחת מעטפת אחת חיים עשרות לקוחות, ובידוד דיירים הוא לא רק שמירת נתונים. כל לקוח מקבל מרחב נפרד של סכימה, אינדקס ואחסון, ולכן תקלה במעגל אחד מפסיקה להיות תקלה משותפת: אינדוקס מחדש כושל של הקורפוס או כשל קונפיגורציה כבר לא מפילים את כולם בבת אחת.

חשבונאות צריכה נפרדת נבנית על מונים אידמפוטנטיים — קריאות למודל, נפח טוקנים מעובדים ואחסון נספרים בכל שאילתה ונרשמים ביומן לפי דייר. התמחור הופך לשחזורי: את המספר רואים עד השורה האחרונה, והעבודה הידנית בסגירת תקופה מצטמצמת להתאמת פערים במקום חישוב מחדש של לוגים ביד.

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

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

העומס על התמיכה משנה אופי: במקום לנתח תקריות של הרשאות ונתונים נשארות שאלות על הרחבת מגבלות. זו התוצאה המדידה — זמן החיבור של לקוח חדש מתקצר להליך חוזר, הפעולות הידניות בתמחור נעלמות, וכשלים בגלל נתונים זרים לא משוחזרים.

אפשרויות ארכיטקטורה: בסיס משותף או נפרד לכל אחד

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

סכימה מתי מתאימה מגבלות
בסיס משותף עם סינון עשרות לקוחות בתרחישים טיפוסיים, הפעלה תוך ימים ספורים טעות בכללי הגישה חושפת מסמכים זרים; האינדקס המשותף גדל ומאט את החיפוש
בסיס נפרד ללקוח מסמכים והרשאות משלו, והתשתית משותפת נדרש אוטומציה ליצירת בסיס ולעדכוניו, אחרת החיבור נתקע בעבודה ידנית
מעגל נפרד ללקוח דרישות רגולטור, איסור על שכנות נתונים של לקוחות שונים כל מעגל מתעדכן, מנוטר ומגובה בנפרד — נפח התפעול השוטף גדל
סכימה היברידית תרחישים טיפוסיים משותפים, נתונים רגישים מבודדים ניתוב שאילתות וגרסאות של תבניות משותפות מורכבים יותר

מדוע בפועל מגיעים לרוב להיברידי

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

כדאי להניח את הסכימה עם מרווח: העברת לקוח מבסיס משותף למעגל נפרד מאוחר יותר היא מיגרציה של אינדקס ובדיקה מחודשת של הרשאות גישה, ולא שינוי הגדרה.

שלבים להעלאת צ'אטבוט רב-לקוחות לפעולה

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

מניתוח ועד מסירה לתפעול

  1. ביקורת הפתרון הקיים. בודקים מקורות ידע, פורמטי קבצים, אינטגרציות פעילות ונפח פניות. מתעדים מה עובר ללא שינוי ומה יצטרך להיבנות מחדש.
  2. סכימת הפרדת לקוחות. מגדירים מודל: מרחב נתונים נפרד ואינדקס חיפוש לכל דייר, מפתחות גישה ומגבלות משלו. את ההחלטה מתעדים בסכימה, לא בהתכתבות.
  3. הגדרת ניתוב שאילתות. הפנייה מגיעה למעגל של הלקוח הנכון, שולפת רק את בסיס הידע וכללי התשובה שלו. כאן גם מגדירים תור ומגבלות, כדי שפעילות של דייר אחד לא תשפיע על האחרים.
  4. בדיקת בידוד. מריצים תרחישים שבהם שאילתה של לקוח אחד לא אמורה להחזיר קטעים מבסיס זר — לא בתשובה, לא בלוגים ולא בייצוא. בנפרד בודקים מטמון ואינדקסים שירותיים משותפים.
  5. חשבונאות וחיוב. מקשרים מונים לדייר: מספר פניות, נפח הקשר, ערוצים פעילים. הרסאלר מקבל דוח עבור כל לקוח שלו.
  6. מסירה לתפעול. מוסרים קונפיגורציות, סכימת הפרדה, הוראות לחיבור דייר חדש ותקנון עדכון בסיס הידע. מכאן והלאה — ליווי, ניטור וניתוח תקריות.

ערכת מסירה: קונפיגורציות, סכימות, הרשאות, תקנונים

ערכת מסירה היא לא ארכיון עם צילומי מסך וכמה הוראות, אלא מערך שחזורי שלפיו המהנדס שלכם יקים העתק של White-label AI צ'אטבוט ויחזור על המהדורה בלעדינו. כל מה שנאסף בתהליך נשאר אצל הלקוח: קונפיגורציות הצ'אטבוט, סכימת הפרדת הדיירים, כללי הגישה, התיעוד וסדר העדכונים.

  • קונפיגורציות הצ'אטבוט — קבצי עבודה של פרומפטים, פרמטרי מודלים, ספי רלוונטיות וכללי חיתוך תשובות, מסודרים לפי סביבות, עם מערך נפרד לכל דייר.
  • סכימת הפרדת דיירים — כיצד מבודדים נתונים, מפתחות, מגבלות שאילתות וחיוב של כל חשבון רסאלר, מה הוצא לשכבה משותפת ומה לא חופף.
  • כללי גישה — מטריצת תפקידים, מערכי הרשאות למפתחות שירות, סדר הנפקה ושלילה, מקומות אחסון סודות וסדר רוטציה שלהם.
  • תיעוד והוראות — תיאור ממשקים, תקנון חיבור דייר חדש, תזכירים לתמיכה וניתוח כשלים טיפוסיים עם נקודות איתור.
  • תקנון עדכונים — כיצד יוצאים שינויים בקונפיגורציות ובקוד, סדר מיגרציות בסיס הנתונים, סביבת בדיקה לפני עלייה לאוויר וכלל חזרה לגרסה קודמת.
  • סכימות ומפות שירותים — דיאגרמות של זרימות שאילתות, תלויות רכיבים ונקודות אינטגרציה עם מערכות חיצוניות.
  • סדר קבלה — תרחישי בקרה שלפיהם הצוות שלכם בודק את התקינות לאחר המסירה ובעדכונים הבאים.

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

מקרה בוחן: כיצד רסאלר גדל מלקוח אחד לארבעים

נקודת התחלה: לקוח אחד והגדרה ידנית

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

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

מה שינו

הפרדנו את הדיירים: לכל אחד מערך מסמכים משלו, בסיס וקטורי משלו והוראה משלו למודל, ורק שכבת ניתוב השאילתות נשארה משותפת. חיבור בסיס ידע מ-Notion צומצם לאשף הגדרה — הרסאלר בעצמו מעלה מסמכים, בודק תשובות במצב בדיקה ומפרסם את הבוט.

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

מדדים לפני ואחרי

זמן חיבור הלקוח התקצר משלושה שבועות ליום אחד, ושמונה מתוך עשרה לקוחות הרסאלר מכניס בעצמו. שיעור הכשלים — תשובות ללא עיגון בבסיס הידע והעברות לנציג — ירד מ-19% ל-4%, מכיוון שהאיכות נבדקת על מערך שאלות בדיקה לפני פרסום הבוט. כעבור שני רבעונים לאחר השינוי, הרסאלר מנהל ארבעים לקוחות עם אותו צוות של שני אנשים.

כיצד להעביר צ'אטבוט קיים למצב רב-לקוחות?

אפשר להעביר בוט קיים למצב רב-לקוחות בלי לכתוב מחדש, אם לוגיקת הדיאלוג כבר מופרדת מאחסון הנתונים. אין צורך לשנות את הליבה, אלא שלושה מקומות: זיהוי הלקוח בשאילתה, בידוד הנתונים וקונפיגורציה לכל לקוח. התרחישים, האינטגרציות והמטפלים נשארים כפי שהם.

הקשר הקריאה משתנה בהכרח: כל שאילתה נכנסת נושאת מזהה לקוח שמועבר דרך כל השרשרת — מקבלת ההודעה ועד חיפוש בבסיס הידע ורישום בהיסטוריה. בלי זה הבוט יום אחד יענה לפי נתונים זרים, ואת הפרדת הגישה יהיה צריך לתקן בתוספות חיצוניות.

השני — שכבת האחסון. היסטוריית השיחות, האינדקסים הווקטוריים וההגדרות מופרדים כך שלקוח אחד לא יוכל פיזית לקרוא נתונים של אחר: סכימה נפרדת או סינון חובה לפי מזהה בכל שאילתה. לצד זה מוצאת הקונפיגורציה — מקורות ידע, מערכי הוראות למודל, מגבלות פניות וכללי העברה לנציג.

סדר המיגרציה הוא כזה: תחילה מכניסים הקשר לקוח עם ערך שירותי להתקנה הנוכחית, אחר כך מעבירים נתונים לאחסונים מבודדים, לאחר מכן מחברים לקוחות אחד אחד ומשווים תשובות מול מדגם אמת.

תאימות לאחור נשמרת: התקנה בודדת הופכת לרב-לקוחות עם לקוח אחד, וממשק הקריאה הקודם ממשיך לעבוד ללא שינויים בצד המערכת הקוראת.

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

היקף העבודה תלוי במידת הניקיון שבה אורגנה הגישה לנתונים: אם הלוגיקה כבר לא נכנסת ישירות לבסיס הנתונים, ההעברה אורכת זמן קצר משמעותית.

ספקות טכניים: בידוד, איכות תשובות, הרשאות

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

כיצד להשתכנע שנתוני הדיירים אינם חופפים?

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

מה עם איכות התשובות על המסמכים שלנו?

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

האם הפלטפורמה תעמוד בעומס של לקוח אחד?

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

האם נוכל לנהל את הגישה בעצמנו?

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

כיצד מתעדכן בסיס הידע לאחר שינויים?

מסמכים שהשתנו מאונדקסים מחדש נקודתית, ולא נבנה מחדש כל המערך, ולכן תקנון חדש נכנס לתוקף בתוך שעה. הגרסה הקודמת של האינדקס נשמרת לצורך חזרה.

נדון במשימה ונחזור עם תוכנית עבודה

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

  • הפתרון הנוכחי. מה כבר קיים: צ'אט עצמאי, שירות מוכן, אב טיפוס — ומה בדיוק לא מתאים בו.
  • מולטיטננטיות. כמה רסאלרים והלקוחות שלהם צריכים לחיות במערכת, האם נדרשים אזורים נפרדים, מיתוג ובידוד נתונים.
  • תרחישי דיאלוג. 5–10 שאילתות טיפוסיות והפניות הנפוצות ביותר, כדי להבין את העומס ואת דרישות האיכות לתשובות.
  • מקורות ידע. אילו מסמכים ובסיסי נתונים הבוט צריך להשתמש בהם, באיזה צורה הם נשמרים ובאיזו תדירות משתנים.
  • חיוב. כיצד נספרת הצריכה ומה הרסאלר מציע ללקוח שלו: מנוי, נפח שאילתות, מגבלות לפי דיירים.
  • אילוצים. לוחות זמנים להשקה, תלויות חיצוניות, גישות למערכות ודרישות לאחסון נתונים.
  • קריטריוני קבלה. לפי אילו מדדים תבינו שהפתרון עובד: דיוק התשובות, זמן תגובה, שיעור שאילתות ללא נציג.

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