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

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

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

אתם יכולים להגדיר את תוצאות החיפוש במאגר הנתונים באמצעות המסוף, ה-API או השילוב של Dialogflow CX Messenger.

שדות להוספת תנאי חיפוש

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

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

יש הבדלים חשובים בין שני הסוגים:

  • קריאה ל-API: אתם שולחים את BoostSpec ואת FilterSpec ב-SearchConfig באמצעות קריאה ל-API של DetectIntent. צריך לספק אובייקט SearchConfig מלא בבקשה. SearchConfig שנשלח באמצעות קריאה ישירה ל-API תמיד מבטל את SearchConfig שנשלח באמצעות המסוף. אין תמיכה בביטויים דינמיים ובהפניות לפרמטרים.

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

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

מפרטי הגברה (מפרטי הגברה)

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

מזינים כל מפרט חיזוק כמחרוזת 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 בפורמט הבא:

{
  "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"
          }
        }
      ]
    }
  ]
}

מפרטי סינון (מפרטי סינון)

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

צריך להזין כל מפרט סינון כביטוי מחרוזת. המחרוזת צריכה להתאים לתחביר הרגיל של ביטוי סינון. אפשר להשתמש בביטויים של Dialogflow CX במחרוזת הזו כדי שהתוצאות יהיו דינמיות, למשל $session.params.YOUR_PARAM_NAME או $request.end-user-metadata.YOUR_KEY.

מחרוזת לדוגמה של מפרט מסנן במסוף:

אם אתם מגדירים את הנציג באמצעות המסוף, אתם צריכים לספק רשימה של מחרוזות 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.

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

תנאי החיפוש שחלים בזמן הריצה

כשכלי מאגר הנתונים מבצע חיפוש:

  1. בודקים את מחרוזות ה-JSON שסיפקתם למפרטי החיזוק. כל מחרוזת JSON תקינה מומרת לאובייקט ConditionBoostSpec. לאחר מכן, הם מקובצים לאובייקט BoostSpecs של החיבור הספציפי למאגר הנתונים, שמתווסף ל-SearchConfig הכולל.
  2. הערכת המחרוזות שסיפקתם למפרטי המסננים כביטויים של Dialogflow CX. כל מחרוזת סינון שנוצרת משמשת ליצירת אובייקט FilterSpecs למאגר הנתונים, שגם מתווסף אל SearchConfig.
  3. כוללים את ה-SearchConfig שנוצר באופן דינמי ב-QueryParameters של בקשת החיפוש שנשלחת למאגר הנתונים.

הגדרת תנאי חיפוש

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

הגדרת המסוף

  1. פותחים את מסוף כלי ליצירת סוכנים בממשק שיחה ובוחרים פרויקט ב-Google Cloud .
  2. בוחרים נציג מהתפריט הנפתח.
  3. בתפריט הימני, לוחצים על כלים. בוחרים את הכלי של מאגר הנתונים שרוצים להגדיר.
  4. בדף העריכה של הכלי, עוברים לקטע מאגרי נתונים. לוחצים על סמל ההגדרות (⚙️) ליד מאגר הנתונים שרוצים לשנות.
  5. מופיע התפריט הגדרת מאגר נתונים. כאן אפשר להוסיף מפרטי חיזוק ומפרטי סינון כדי לשנות את תוצאות החיפוש.
    • בשביל Boost Spec, צריך לספק אובייקט JSON שמגדיר ConditionBoostSpec. פרטים נוספים זמינים במאמר מפרט של Boost.
    • בשדה Filter Spec (מפרט מסנן), מזינים מחרוזת שמגדירה את הקריטריונים לסינון. פרטים נוספים זמינים בקטע מפרטי מסננים.
  6. אחרי שמוסיפים ומגדירים את המפרטים, לוחצים על אישור בתחתית החלונית הצדדית.
  7. לוחצים על שמירה בדף העריכה של הכלי 'מאגר נתונים' כדי לשמור את השינויים.

הגדרת API

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

מציינים את המידע הזה בשדה queryParams.searchConfig ב-method‏ Sessions.detectIntent.

בוחרים פרוטוקול וגרסה להפניה לסשן:

פרוטוקול V3 V3beta1
REST משאב הסשן משאב הסשן
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>

למידע נוסף, עיינו ב-method‏ setQueryParameters.

פתרון בעיות

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

ביטויים לא תקינים

אם תנאי של Boost Spec או מחרוזת של Filter Spec מכילים ביטוי לא תקין של Dialogflow CX (לדוגמה, תחביר שגוי או הפניה לפרמטר שלא קיים), הידור הביטוי ייכשל. שגיאות שקשורות להידור של ביטויים בדרך כלל מוחזרות ב-DetectIntentResponse בשדה diagnostic_info בתור SystemFunctionResults.

‫JSON לא תקין של ConditionBoostSpec

כששומרים את מחרוזת ה-JSON של ConditionBoostSpec, מתבצעת במסוף של "סוכנים בממשק שיחה" בדיקה כדי לוודא שהיא תקינה ושאפשר למפות את המבנה שלה לאובייקט ConditionBoostSpec. אם קובץ ה-JSON תקין אבל הוא גורם ל-SearchConfig לא תקין לפי שירותי החיפוש של Google (לדוגמה, מחרוזת תנאי לא תקינה אחרי החלפת פרמטרים), שירותי החיפוש של Google יחזיר שגיאה.

שגיאות בהחלפה בזמן ריצה

אם מחרוזת JSON של ConditionBoostSpec תקינה וניתנת לניתוח, אבל מתרחשת שגיאה במהלך ההחלפה בזמן הריצה של ביטויי Dialogflow CX בשדות שלה (כמו מחרוזת התנאי), השגיאות האלה ידווחו ב-diagnostic_info בתור SystemFunctionResults.

בודקים את הSearchConfig שנאספו

הערך של SearchConfig שמופעל כשהשאילתה פועלת זמין ב-search_signals בתגובה. עיון בSearchConfig יכול לספק תובנות לגבי בעיות נוספות שלא מתוארות כאן.

המאמרים הבאים