אתם יכולים להשפיע על תוצאות החיפוש שמאוחזרות מכלי מאגר הנתונים של Dialogflow CX על ידי הגדרת מפרטים של הגברה וסינון. כך אפשר לנהל אינטראקציות מותאמות אישית יותר שמודעות להקשר, כשהסוכן משתמש במאגר נתונים כדי למצוא מידע.
אפשר גם לכלול ביטויים דינמיים כדי לשפר את התוצאות על סמך ההקשר של השיחה. לדוגמה, הנציג שלכם תיעד מידע שמצביע על כך שלמשתמש הקצה יש 'טלפון נייד'. אתם יכולים להגדיר את הכלי לאחסון נתונים כך שיקדם מסמכים שקשורים לטלפונים ניידים כשעונים על שאילתה כללית בהמשך השיחה, כמו "איך בודקים את הדואר הקולי?".
אפשר להגדיר את תוצאות החיפוש במאגר הנתונים באמצעות המסוף, API או שילוב של Dialogflow CX Messenger.
קלט של תנאי חיפוש
תוצאות החיפוש מוגדרות באמצעות השדות boost specification (BoostSpec) ו-filter specification (FilterSpec) באובייקט SearchConfig. ההגדרות האלה חלות על כל מאגר נתונים בכלי, ומאפשרות לכם לשלוט באופן פרטני בהתנהגות של כל מאגר נתונים שמקושר.
אפשר להגדיר תנאי חיפוש באחת משתי דרכים: באמצעות המסוף או באמצעות שליחת קריאה ישירה ל-API. יש הבדלים חשובים בין השניים.
קריאה ל-API: הערכים
BoostSpecו-FilterSpecנשלחים ב-SearchConfigבאמצעות קריאה ל-API שלDetectIntent. בבקשה צריך לציין אובייקטSearchConfigמלא. הודעתSearchConfigשנשלחת באמצעות קריאה ישירה ל-API תמיד מבטלת הודעתSearchConfigשנשלחת באמצעות המסוף. המערכת לא תומכת בביטויים דינמיים ובהפניות לפרמטרים.Console: ההגדרות של
BoostSpecושלFilterSpecמשמשות ליצירת אובייקטSearchConfigשנשלח עם בקשת החיפוש. אם רוצים, אפשר לכלול הפניות לפרמטרים וביטויים דינמיים כדי להתאים את התוצאות לנתוני ההקשר שנרשמו מהשיחה. אתם נדרשים לספק רקConditionBoostSpecאובייקטים ורשימה של מחרוזות מסננים כדי ליצורFilterSpecs, ולא אובייקטSearchConfigמלא.
פרטי משתמשי הקצה מוצגים כ-JSON. אין סכימה צפויה, ולכן אתם יכולים להגדיר את מאפייני האובייקט.
מפרטים של הגברה (מפרטי הגברה)
הגדרות לשיפור התוצאות מאפשרות לשנות את הדירוג של תוצאות החיפוש על ידי החלת ערך שיפור על מסמכים ספציפיים. אפשר להוסיף כמה הגדרות של הגברת מהירות לאותו מאגר נתונים.
כל מפרט של הגברה מוזן כמחרוזת JSON. מחרוזת ה-JSON הזו צריכה לייצג אובייקט ConditionBoostSpec יחיד.
שדות עיקריים:
-
condition: (מחרוזת) ביטוי שמציין מתי צריך להחיל את ההגברה. השימוש הוא בתחביר הרגיל של ביטויי מסננים. אתם יכולים להשתמש בביטויים של Dialogflow CX כדי להפוך את התוצאות לדינמיות, כמו$session.params.YOUR_PARAM_NAMEאו$request.end-user-metadata.YOUR_KEY. -
boost: (מספר) ערך בין -1.0 ל-1.0 שקובע את עוצמת ההגברה.- ערך חיובי מקדם התאמה בין מסמכים. ערך של
1.0מציין מבצע משתלם. - ערך שלילי מוריד את הדירוג של מסמכים תואמים. ערך של
-1.0יגרום להורדה משמעותית בדירוג. - הערך
0.0לא מוסיף שום תוספת ולא מותר.
- ערך חיובי מקדם התאמה בין מסמכים. ערך של
-
boostControlSpec: מספק יותר אמצעי בקרה לדירוג בהתאמה אישית מאשר השילוב הבסיסי של תנאי ושיפור. מידע נוסף על הגדרת השדה הזה מופיע במאמרי העזרה.
קלט לדוגמה במסוף:
אם מגדירים את הסוכן במסוף, צריך לספק רשימה של ConditionBoostSpecs בפורמט הבא.
בדוגמה הזו, מסמכים עם URI שתואם לערך של הפרמטר $session.params.doc_id session יקבלו דירוג גבוה יותר בעוצמה של 0.5. JSON בפורמט הזה
{
"condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
"boost": 0.5
}
דוגמה לקלט של API:
אם אתם קוראים ל-API ישירות, אתם צריכים לספק את ConditionBoostSpecs באובייקט SearchConfig מלא.הגדרת החיפוש הבאה מתארת מפרט של הגברת עוצמה:
"searchConfig": {
"boostSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"spec": [
{
"conditionBoostSpecs": {
"condition": "CONDITION",
"boost": "1.0"
}
}
]
}
]
}
מפרטי מסננים
הגדרות הסינון מגבילות את תוצאות החיפוש כך שיכללו רק מסמכים שתואמים לקריטריונים המוגדרים. אפשר להוסיף כמה הגדרות של מסננים למאגר נתונים יחיד.
כל Filter Spec צריך להיות מוזן כביטוי מחרוזת. המחרוזת צריכה להיות בהתאם לתחביר הרגיל של ביטויי סינון.
אפשר להשתמש בביטויים של Dialogflow CX בתוך המחרוזת הזו כדי שהתוצאות יהיו דינמיות, כמו $session.params.YOUR_PARAM_NAME או $request.end-user-metadata.YOUR_KEY.
מחרוזת לדוגמה של מפרט מסנן ב-Console:
אם מגדירים את הסוכן באמצעות המסוף, צריך לספק רשימה של filter מחרוזות כדי ליצור אובייקט FilterSpec.
בדוגמה הזו, המסנן מחזיר רק מסמכים שבהם הערך של numeric_field גדול או שווה לערך של $session.params.min_value וגם שבהם stock_availability הוא "IN_STOCK".
"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"
דוגמה להגדרת מסנן API:
אם אתם שולחים קריאה ישירה ל-API, אתם צריכים לספק מחרוזות של filter באובייקט SearchConfig מלא:
"searchConfig": {
"filterSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"filter": "CONDITION"
}
]
}
ביטויים דינמיים ב-Dialogflow CX
גם BoostSpec תנאים וגם מחרוזות FilterSpec יכולים לכלול ביטויים של Dialogflow CX כדי להפוך אותם לדינמיים. כך תוכלו להתאים את התנהגות החיפוש על סמך נתוני הקשר שנשלפים משיחה מתמשכת.
אי אפשר להשתמש בביטויים דינמיים בקריאות ישירות ל-API, והם רלוונטיים רק אם מבצעים את ההגדרה באמצעות המסוף.
יש שתי דרכים לגשת לנתוני ההקשר של השיחה:
- פרמטרים של סשן: ערכים שנאספים במהלך השיחה באמצעות
$session.params.YOUR_PARAMETER_ID. - מטא-נתונים של משתמשי קצה: מטא-נתונים על משתמש הקצה שמועברים ב-
DetectIntentRequestבאמצעות$request.end-user-metadata.YOUR_KEY. כדי שהאפשרות הזו תהיה זמינה, צריך לוודא ש-end_user_metadataכלול ב-QueryParametersשל שיחותDetectIntent. מידע נוסף זמין במאמר בנושא endUserMetadata.
לפרטים נוספים על פונקציות מערכת זמינות ותחביר של ביטויים, אפשר לעיין במאמר הסבר על תנאים ופונקציות מערכת.
תנאי החיפוש שחלים בזמן הריצה
כשכלי מאגר הנתונים מבצע חיפוש:
- מחרוזות ה-JSON שסיפקתם לנתוני ההגברה נבדקות. כל מחרוזת JSON תקינה מומרת לאובייקט
ConditionBoostSpec. הם מקובצים לאובייקטBoostSpecsשל חיבור מאגר הנתונים הספציפי, שנוסף לאובייקטSearchConfigהכולל. - המחרוזות שסיפקתם במפרטי המסננים מוערכות כביטויים של Dialogflow CX. כל מחרוזת מסנן שמתקבלת משמשת ליצירת אובייקט
FilterSpecsלמאגר הנתונים, שנוסף גם ל-SearchConfig. - ה-
SearchConfigשנוצר באופן דינמי נכלל ב-QueryParametersשל בקשת החיפוש שנשלחת למאגר הנתונים.
הגדרת תנאי חיפוש
לפני שמגדירים תנאי חיפוש, צריך לוודא שיש לכם:
- סוכן קיים ב-Dialogflow CX.
- כלי למאגר נתונים שהוגדר לסוכן עם מאגר נתונים אחד או יותר שמופעלים.
הגדרת המסוף
- פותחים את המסוף של Conversational Agents ובוחרים פרויקט ב- Google Cloud.
- בוחרים סוכן מהתפריט הנפתח.
- בתפריט הימני, לוחצים על כלים. בוחרים את הכלי של מאגר הנתונים שרוצים להגדיר.
- בדף העריכה של הכלי, עוברים לקטע מאגרי נתונים. לוחצים על סמל ההגדרות (⚙️) לצד מאגר הנתונים שרוצים לשנות.
- מופיע התפריט Configure Data Store (הגדרת מאגר נתונים). כאן אפשר להוסיף מפרטים של שיפורים ומפרטים של מסננים כדי לשנות את תוצאות החיפוש.
- במקרה של מפרט לשיפור הביצועים, צריך לספק אובייקט JSON שמגדיר
ConditionBoostSpec. פרטים נוספים זמינים במאמר בנושא מפרטים של Boost. - במפרט המסנן, מציינים מחרוזת שמגדירה את קריטריוני הסינון. פרטים נוספים זמינים במאמר בנושא מפרטי מסננים.
- במקרה של מפרט לשיפור הביצועים, צריך לספק אובייקט JSON שמגדיר
- אחרי שמוסיפים את המפרטים ומגדירים אותם, לוחצים על אישור בתחתית החלונית הצדדית.
- לוחצים על שמירה בדף העריכה של כלי מאגר הנתונים כדי לשמור את השינויים.
הגדרת API
אתם יכולים לספק נתוני הגדרות חיפוש ל-Dialogflow CX כשאתם שולחים בקשות לזיהוי כוונות. צריך לספק את המידע הזה בכל בקשה לזיהוי כוונות, כי הוא לא נשמר בסשן.
צריך לספק את המידע הזה בשדה queryParams.searchConfig בשיטה Sessions.detectIntent.
בוחרים פרוטוקול וגרסה להפניה של הסשן:
| פרוטוקול | V3 | V3beta1 |
|---|---|---|
| REST | Session resource | Session resource |
| RPC | ממשק הסשן | ממשק הסשן |
| C++ | SessionsClient | לא זמין |
| C# | SessionsClient | לא זמין |
| המשך | SessionsClient | לא זמין |
| Java | SessionsClient | SessionsClient |
| Node.js | SessionsClient | SessionsClient |
| PHP | לא זמין | לא זמין |
| Python | SessionsClient | SessionsClient |
| Ruby | לא זמין | לא זמין |
הגדרת Dialogflow CX Messenger
אתם יכולים לספק נתוני הגדרות חיפוש לשילוב של Dialogflow CX Messenger. מידע נוסף מופיע בקטע על השיטה setContext.
כדי להחיל מפרט חיפוש או הגדרת חיפוש, צריך להוסיף את קטע הקוד הבא לקוד של Dialogflow CX Messenger כשמטמיעים אותו באתר:
<script>
document.addEventListener('df-messenger-loaded', () => {
const dfMessenger = document.querySelector('df-messenger');
const searchConfig = { ... }
dfMessenger.setQueryParameters(searchConfig);
});
</script>
מידע נוסף על השיטה setQueryParameters
פתרון בעיות
בקטע הזה מפורטים פתרונות לכמה בעיות נפוצות שנתקלים בהן במהלך ההגדרה. חשוב תמיד לבדוק את ההגדרות באופן יסודי על ידי סימולציה של שיחות שמפעילות פרמטרים שונים של סשנים וערכים שונים של מטא-נתונים של משתמשי קצה.
ביטויים לא תקינים
אם תנאי של מפרט לשיפור או מחרוזת של מפרט לסינון מכילים ביטוי לא תקין של Dialogflow CX (לדוגמה, תחביר שגוי או הפניה לפרמטר שלא קיים), הידור הביטוי ייכשל. שגיאות שקשורות להידור של ביטויים מוחזרות בדרך כלל ב-DetectIntentResponse בשדה diagnostic_info בתור SystemFunctionResults.
JSON לא תקין ConditionBoostSpec
כששומרים את מחרוזת ה-JSON ConditionBoostSpec, מתבצע אימות מסוים במסוף של הסוכנים לשיחה. המטרה היא לוודא שזהו קובץ JSON תקין ושהמבנה שלו יכול להיות ממופה לאובייקט ConditionBoostSpec. אם קובץ ה-JSON תקין אבל הוא מוביל ל-SearchConfig לא תקין בהתאם לשירות החיפוש הבסיסי (לדוגמה, מחרוזת תנאים לא תקינה אחרי החלפת פרמטרים), שירות החיפוש יחזיר שגיאה.
שגיאות החלפה בזמן ריצה
אם ConditionBoostSpec מחרוזת JSON תקינה וניתנת לניתוח, אבל מתרחשת שגיאה במהלך החלפת הביטויים של Dialogflow CX בשדות שלה (כמו מחרוזת התנאי) בזמן הריצה, השגיאות האלה ידווחו ב-diagnostic_info בתור SystemFunctionResults.
בודקים את SearchConfig
המסנן SearchConfig שמוחל כשמריצים את השאילתה זמין ב-search_signals בתשובה. בדיקת SearchConfig עשויה לספק תובנות לגבי בעיות נוספות שלא מפורטות כאן.
המאמרים הבאים
- מידע נוסף על המבנה של
SearchConfigועל הרכיבים שלו זמין במאמרי העזרה בנושאsearch_config. - מידע נוסף על תחביר של ביטויים זמין במאמר הפניות לתנאים ולפונקציות מערכת ב-Dialogflow CX.
- מידע נוסף על תחביר של ביטויי סינון לחיפוש מופיע במאמר בנושא סינון ומיון תוצאות.