הגדרות RAG וחיפוש
הגדירו את Retrieval Augmented Generation (RAG) כדי שהצ’אטבוט יוכל לחפש בקטלוג ובתוכן האמיתיים של החנות ולענות עם שמות, מחירים וסטטוס מלאי מדויקים.
מה זה RAG?
Retrieval Augmented Generation (RAG) היא טכניקת AI המשפרת את תגובות הצ’אטבוט שלך על ידי אחזור מידע רלוונטי ממסד הנתונים של המוצרים שלך לפני יצירת תשובות. במקום להתמקד אך ורק בידע הכללי של דגם AI, RAG מאפשר לצ’אטבוט לגשת לפרטי המוצרים הספציפיים שלך, תמחור, זמינות ותיאורים.
יתרונות RAG
הגדרת Supabase
WooAI Chatbot Pro משתמש ב-Supabase כמסד הנתונים הווקטורי עבור RAG. Supabase הוא שירות PostgreSQL מנוהל עם התוסף pgvector, וזה מה שמאפשר חיפוש סמנטי.
תיצרו פרויקט Supabase חינמי, תעתיקו שלושה ערכים ל-WooAI, תיצרו את טבלאות מסד הנתונים בלחיצה אחת, ואז תבצעו אינדוקס לקטלוג. בצעו את השלבים לפי הסדר. כל שלב צריך את הקודם לו.
יצירת חשבון Supabase
-
היכנסו ל-Supabase
עברו אל supabase.com ולחצו על Start your project.
-
הרשמה
צרו חשבון באמצעות GitHub, Google או כתובת אימייל.
-
אימות האימייל
אם נרשמתם עם אימייל, פתחו את קישור האימות שנשלח לתיבה שלכם.
יצירת פרויקט חדש
-
לחצו על “New Project”
בלוח הבקרה של Supabase לחצו על הכפתור New project.
-
מלאו את פרטי הפרויקט
Name: שם תיאורי כלשהו, למשל “My Store Chatbot”.
Database Password: בחרו סיסמה חזקה ושמרו אותה עכשיו. תזדקקו לה שוב עבור מחרוזת החיבור.
Region: האזור הקרוב ביותר לאחסון ה-WordPress שלכם. -
צרו את הפרויקט
לחצו על Create new project והמתינו 1-2 דקות להקמה.
Supabase לא יציג את הסיסמה הזו שוב לאחר יצירת הפרויקט. שמרו אותה במנהל סיסמאות. אפשר לאפס אותה מאוחר יותר תחת Settings → Database, אבל אי אפשר לשחזר את המקורית.
קבלת פרטי הגישה
WooAI זקוק לשני ערכים מהפרויקט שלכם ב-Supabase: Project URL ומפתח API סודי.
-
פתחו את API Keys
בפרויקט Supabase שלכם עברו אל Settings → API Keys.
-
העתיקו את Project URL
נמצא תחת Settings → API (ומוצג גם במסך הבית של הפרויקט). הוא נראה כך:
https://xxxxxxxxxxxx.supabase.co. -
העתיקו מפתח סודי (secret key)
פתחו את הלשונית Legacy anon, service_role API keys והעתיקו את המפתח service_role (ערך ארוך שמתחיל ב-
eyJ). זה המפתח ש-WooAI בנוי לעבוד איתו.
WooAI חייב לכתוב וקטורים של מוצרים למסד הנתונים. כללי האבטחה שנוצרים בשלב הסכימה מעניקים הרשאת כתיבה רק ל-service_role. עם מפתח anon או publishable האינדוקס לא ייצור כלום בשקט. השתמשו במפתח service_role הישן: מפתחות sb_secret_… החדשים אינם נתמכים בפורמט הבקשה של הגרסה הזו.
זה בטוח כאן: WooAI שומר את המפתח במסד הנתונים של WordPress ומשתמש בו רק בבקשות שרת-לשרת. הוא לעולם לא נחשף למבקרים בדפדפן. אל תדביקו את המפתח הזה בקוד צד-לקוח ואל תשתפו אותו פומבית.
קבלת מחרוזת החיבור למסד הנתונים
הערך הזה מאפשר ל-WooAI ליצור עבורכם את הטבלאות הנדרשות אוטומטית. בלעדיו תצטרכו להריץ את ה-SQL ידנית, וזה מוסבר בהמשך.
-
פתחו את הגדרות מסד הנתונים
ב-Supabase עברו אל Settings → Database → Connection string. גם הכפתור Connect בראש לוח הבקרה מוביל לאותו מקום.
-
בחרו בפורמט URI
בחרו בלשונית URI והשתמשו בחיבור המאוגד (pooled) דרך פורט
6543. -
הכניסו את הסיסמה
המחרוזת מכילה מציין מקום
[YOUR-PASSWORD]. החליפו אותו בסיסמת מסד הנתונים ששמרתם, מקודדת ב-percent-encoding: תווים כמו@ # / : %חייבים להיות מקודדים (@הופך ל-%40,#ל-%23). סיסמה לא מקודדת שוברת את מחרוזת החיבור.
postgresql://postgres.abcdefghijkl:YOUR-PASSWORD@aws-0-eu-central-1.pooler.supabase.com:6543/postgres
הגדרת RAG ב-WooAI
כעת הזינו את הערכים האלה בוורדפרס.
-
עברו להגדרות RAG
בממשק הניהול של WordPress עברו אל AI Chatbot → RAG & Search.
-
הפעילו את RAG
העבירו את המתג Enable RAG Search למצב מופעל. השדות שמתחת נשארים מנוטרלים עד שתעשו זאת.
-
Supabase Project URL
הדביקו את כתובת ה-Project URL שהעתקתם.
-
Service Role Key
הדביקו את המפתח הסודי. ההסבר מתחת לשדה אומר זאת במפורש: Service Role Key (not anon key).
-
Table Name
השאירו
product_embeddings. הגרסה הנוכחית תמיד משתמשת בשם הטבלה הזה, ולכן ערך אחר לא ייכנס לתוקף. -
Database Connection String
הדביקו את מחרוזת החיבור עם הסיסמה שמולאה.
-
שמרו
לחצו על Save Settings.
יצירת סכימת מסד הנתונים
פרויקט Supabase חדש הוא ריק. עד שהסכימה לא קיימת אין לאן לשמור את המוצרים, והאינדוקס ייכשל. זו הסיבה הנפוצה ביותר לכך שהתקנה חדשה לא עובדת.
ברגע ש-RAG מופעל והשדה Database Connection String מכיל ערך, מופיע במסך RAG & Search פאנל Auto-Setup Database. אין צורך לשמור קודם.
-
בדקו את הסטטוס
לחצו על Check Status. השדה Schema Status יציג אחד מהמצבים: Needs setup, Schema is ready או Manual setup required.
-
הריצו את ההתקנה
אם מופיע Needs setup, לחצו על Auto-Setup Database. התהליך אורך כמה שניות ומדווח על הצלחה או על השגיאה המדויקת.
-
אשרו
הסטטוס אמור להשתנות ל-Schema is ready.
אם ההתקנה האוטומטית לא זמינה
חלק מחברות האחסון חוסמות חיבורי PostgreSQL ישירים. במקרה כזה הסטטוס יציג Manual setup required והכפתור Auto-Setup יוסתר. הריצו את ה-SQL בעצמכם. התוצאה זהה:
-
העתיקו את ה-SQL
לחצו על Copy SQL כדי לחשוף את הסקריפט, ואז לחצו על כפתור Copy SQL שבתוך הבלוק שנפתח כדי להעתיק אותו. זהו הסקריפט המדויק לגרסת התוסף שלכם.
-
פתחו את SQL Editor ב-Supabase
ב-Supabase פתחו את SQL Editor והתחילו שאילתה חדשה.
-
הדביקו והריצו
הדביקו את הסקריפט ולחצו על Run. אמורה להופיע ההודעה “Success. No rows returned”.
-
בדקו שוב
חזרו לוורדפרס, רעננו את עמוד RAG & Search, ואז לחצו שוב על Check Status.
את התוסף pgvector, את הטבלה product_embeddings, את האינדקסים שלה, את פונקציות החיפוש שהצ’אטבוט קורא להן, וכללי אבטחה ברמת השורה שמעניקים הרשאת כתיבה רק למפתח הסודי שלכם. אפשר להריץ את הסקריפט שוב בבטחה: הוא לעולם לא מוחק את שורות הווקטורים שלכם. הוא כן מוחק ויוצר מחדש אילוצים, מדיניות, פונקציות וטריגר עדכון, כך שהוא תמיד מסתיים במצב תקין ידוע.
בדיקת החיבור
לחצו על Test Connection. אישור ירוק אומר שהפרויקט נגיש. הוא אינו מוכיח שלמפתח יש הרשאת כתיבה, כי הבדיקה רק קוראת. לפני האינדוקס ודאו שוב שהערך שהדבקתם הוא מפתח ה-service_role. אם הבדיקה נכשלת, חפשו שגיאות הקלדה ב-Project URL.
אינדוקס התוכן שלכם
האינדוקס ממיר את התוכן לוקטורים שהצ’אטבוט יכול לחפש בהם. עד שהתהליך לא מסתיים, הבוט לא יכול לענות על שאלות מוצר.
אינדוקס תוכן (Content Indexing)
הכרטיס Content Indexing קובע איזה תוכן שאינו מוצרים נכנס לבסיס הידע:
- Index Pages: עמודי WordPress כמו “אודות”, “צור קשר” ו”מדיניות משלוחים”. השאירו מופעל כדי שהבוט יוכל לענות על שאלות משלוח, החזרות ואחריות.
- Index Blog Posts: הוספת תוכן הבלוג להקשר עשיר יותר. אופציונלי.
לחצו על Index Pages כדי לעבד אותם; הכרטיס מציג מונה כמו 8 / 8 Pages Indexed.
אינדוקס מוצרים (Product Indexing)
-
התחילו את האינדוקס
בכרטיס Product Indexing לחצו על Start Indexing. אחרי שמשהו כבר אונדקס, אותו כפתור נקרא Re-index Products.
-
המתינו לסיום
המוצרים מעובדים באצוות על ידי משימות מתוזמנות של WordPress, כך שאפשר לעזוב את העמוד ולחזור; רעננו כדי לראות את הספירה העדכנית. אם WP-Cron מנוטרל אצל חברת האחסון, האינדוקס עלול להיתקע.
-
ודאו
הכרטיס מציג Total Products, Indexed, Vectors ו-Last Indexed. המספרים Total ו-Indexed אמורים להיות זהים.
הכפתור Clear Index מוחק את הוקטורים השמורים של האתר. תזדקקו לו רק כשאתם רוצים לבנות את האינדקס מחדש.
המידע המאונדקס מתויג לפי הדומיין של האתר, כדי שכמה חנויות יוכלו לחלוק פרויקט Supabase אחד. בכל שינוי דומיין, כולל מעבר מסביבת בדיקות לאתר החי, הריצו שוב Re-index Products, אחרת הצ’אטבוט לא ימצא כלום.
מה נכנס לאינדקס
- שם המוצר, התיאור המלא והתיאור הקצר
- מק”ט, קטגוריות, תגיות ומאפיינים כמו צבע או מידה
- מחיר וסטטוס מלאי, נשמרים כמטא-דאטה
- עמודים ופוסטים, כאשר המתגים שלהם מופעלים. קופונים מסונכרנים בנפרד על ידי משימה מתוזמנת ואין להם מתג משלהם
החרגת תוכן
שני כרטיסים מאפשרים להרחיק פריטים מסוימים מה-AI:
- Excluded Products: מוצרים שלא יופיעו לעולם בתוצאות החיפוש.
- Excluded Coupons: קופונים שהצ’אטבוט לא יציע ללקוחות.
סנכרון אוטומטי
אחרי האינדוקס המלא הראשון WooAI מתעדכן לבד: מוצרים חדשים מאונדקסים בפרסום, מוצרים שנערכו מאונדקסים מחדש בשמירה, ומוצרים שנמחקו מוסרים מהאינדקס. אינדוקס מלא נדרש שוב רק אחרי שינוי דומיין, ייבוא המוני, או החלפת מודל ההטמעה.
הגדרות RAG
ברירות המחדל מכוונות לחנות טיפוסית. שנו אותן רק אם יש בעיה ספציפית שצריך לפתור.
| הגדרה | ברירת מחדל | מה היא עושה |
|---|---|---|
| Embedding Model | Google Gemini Embedding | המודל שממיר טקסט לוקטורים |
| Chunk Size | 500 | כמות הטקסט שמוטמעת בכל מקטע |
| Chunk Overlap | 100 | חפיפה בין מקטעים, שומרת על ההקשר |
| Top K Results | 5 | כמה פריטים נשלפים לכל שאילתה |
| Similarity Threshold | 0.7 | ציון הרלוונטיות המינימלי, בין 0 ל-1 |
הסבר על סף הדמיון
הסף קובע כמה קרוב פריט חייב להתאים לשאילתה כדי להיכלל בתוצאות:
- 0.9 – 1.0: מחמיר מאוד, רק התאמות כמעט מדויקות
- 0.7 – 0.9: מאוזן, וזה מה שאנחנו ממליצים
- 0.5 – 0.7: מקל, מכניס מוצרים קשורים באופן רופף
- מתחת ל-0.5: לא מומלץ, מחזיר תוצאות לא רלוונטיות
אם לקוחות לא מוצאים מוצרים שקיימים בבירור, הורידו את הסף לכ-0.6. אם התוצאות כוללות יותר מדי מוצרים לא קשורים, העלו ל-0.8.
מודל ההטמעה
| מודל | ספק | הערות |
|---|---|---|
| gemini-embedding-001 | טקסט בלבד, איכות טובה, עלות נמוכה | |
| Gemini Embedding 2 (Multimodal) | מבין גם תמונות מוצר | |
| text-embedding-3-small | OpenAI | דורש מפתח API של OpenAI |
מודל ההטמעה שברירת המחדל הוא Google Gemini Embedding, שמשתמש במפתח ה-Gemini שלכם. אם הגדרתם רק OpenAI (בלי מפתח Gemini), אל תשאירו את ברירת המחדל. החליפו את מודל ההטמעה ל-text-embedding-3-small. אחרת WooAI ייפול בשקט לשיטה מקומית חלשה: האינדוקס ייראה כאילו הצליח, אבל החיפוש יחזיר תוצאות גרועות בלי שום שגיאה שתסביר למה. התאימו את שורת ההטמעה לספק שאת המפתח שלו הזנתם במסך AI Providers.
וקטורים שנוצרו על ידי מודל אחד אינם ניתנים להשוואה לוקטורים ממודל אחר. אם החלפתם את מודל ההטמעה, הריצו אינדוקס מלא מחדש אחרת איכות החיפוש תתמוטט.
איך לוודא ש-RAG עובד
פתחו את החנות בלשונית דפדפן רגילה, פתחו את ווידג’ט הצ’אט ושאלו על מוצר שאתם יודעים שקיים. נסו קודם את השם, ואז תיאור, למשל “משהו למטבח קטן”.
הגדרה תקינה תחזיר את שם המוצר האמיתי, המחיר האמיתי וסטטוס המלאי הנכון. אם הבוט עונה רק במונחים כלליים, האינדוקס לא הסתיים או שהסכימה חסרה.
פתרון בעיות
האינדוקס רץ אבל שום דבר לא נשמר
כמעט תמיד מדובר במפתח שגוי. מפתח publishable או anon יכול לקרוא אבל לא לכתוב. החליפו אותו במפתח הסודי (service_role) והריצו אינדוקס מחדש.
הסטטוס “Needs setup” לא הופך ל-“Schema is ready”
מחרוזת החיבור שגויה או שחברת האחסון חוסמת חיבורי PostgreSQL ישירים. ודאו שהחלפתם את [YOUR-PASSWORD] בסיסמה האמיתית, ואם זה לא עוזר השתמשו במסלול Copy SQL והריצו את הסקריפט ב-SQL Editor של Supabase.
הבוט לא מוצא כלום אחרי מעבר אתר
המידע המאונדקס מתויג לפי הדומיין. הריצו Re-index Products בדומיין החדש.
Test Connection נכשל
בדקו שאין שגיאת הקלדה ב-Project URL, ודאו שהפרויקט ב-Supabase אינו מושהה (פרויקטים חינמיים מושהים אחרי חוסר פעילות ממושך), וודאו שהשתמשתם במפתח הסודי.
איכות החיפוש ירדה פתאום
אם מודל ההטמעה הוחלף, הוקטורים הישנים כבר אינם ברי-השוואה. הריצו אינדוקס מלא מחדש.