חיפוש עם שאלות המשך

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

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

חיפוש עם שאלות המשך רלוונטי לאפליקציות חיפוש עם נתונים לא מובנים ולאתרים.

מידע על חיפוש עם שאלות המשך

החיפוש עם שאלות המשך מבוסס על מודלים של AI גנרטיבי. חיפוש עם שאלות המשך שונה מחיפוש רגיל של נתונים לא מובנים כי הוא מתחשב בשאילתות קודמות באותה פעילות בחיפוש Google.

התכונה 'חיפוש עם שאלות המשך' תומכת בפעולות הבאות:

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

  • הבנת ההקשר: הוא מבין את ההקשר של אינטראקציות קודמות ומספק תשובות בהתאם להקשר.

  • רב-שלבי: המשתמשים יכולים לשאול שאלות המשך ולקבל תשובות רלוונטיות.

דוגמה לחיפוש עם שאלות המשך

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

  • אתה: מתי הכי כדאי לצאת לחופשה במקסיקו?

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

  • אתה: מהו שער החליפין?

  • חיפוש עם שאלות המשך: דולר ארה"ב אחד שווה בערך ל-17.65 פסו מקסיקני.

  • אתם: מה הטמפרטורה הממוצעת בדצמבר?

  • חיפוש עם שאלות המשך: מה הטמפרטורה הממוצעת? הממוצע בקנקון הוא בערך 25°C.

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

מידע על שיחות

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

לפעמים קוראים לצמדים האלה של שאילתות ותשובות הודעות. בדוגמה שלמעלה, ההודעה השנייה מורכבת מהטקסטים 'What is the exchange rate?‎' ו-'‎1 USD is equal to approximately 17.65 Mexican pesos.'

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

  • שם ייחודי (מזהה השיחה).

  • סטטוס (בתהליך או הושלם).

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

  • שעת התחלה ושעת סיום.

לפני שמתחילים

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

שמירת שיחות וקבלת תשובות

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

REST

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

  1. מציינים את מאגר הנתונים שבו רוצים לאחסן את היסטוריית השיחות:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations" \
    -d '{
      "user_pseudo_id": "USER_PSEUDO_ID"
    }'
    
    • PROJECT_ID: מספר הפרויקט או המזהה של Google Cloud הפרויקט

    • DATA_STORE_ID: המזהה של מאגר הנתונים שמשויך לאפליקציה.

    • USER_PSEUDO_ID: מזהה ייחודי למעקב אחרי מבקר בחיפוש. לדוגמה, אפשר להטמיע את זה באמצעות קובץ Cookie של HTTP, שמזהה באופן ייחודי מבקר במכשיר יחיד.

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

    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
  2. ליצור תשובה לחיפוש ולהוסיף אותה לשיחה חדשה או קיימת במאגר הנתונים:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "filter": "FILTER"
    }'
    
    • PROJECT_ID: מספר הפרויקט או המזהה של Google Cloud הפרויקט

    • DATA_STORE_ID: המזהה של מאגר הנתונים שמשויך לאפליקציה.

    • CONVERSATION_ID: מזהה ייחודי של השיחה, לדוגמה, 123456. בשיחה עם חיפוש והמשך שאלות, צריך להשתמש באותו מזהה שיחה בכל תור.

    • FREE_TEXT: מחרוזת טקסט חופשית שמכילה את השאלה של המשתמש. לדוגמה: what is bigquery?

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

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

    {
    "reply": {
    "summary": {
      "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
    }
    },
    "conversation": {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "IN_PROGRESS",
    "userPseudoId": "test_id",
    "messages": [
      {
        "userInput": {
          "input": "what is bigquery?"
        }
      },
      {
        "reply": {
          "summary": {
            "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
          }
        }
      }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    },
    "searchResults": [
    {
      "id": "c86f19582746b56f71c9bb6929893835",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/c86f19582746b56f71c9bb6929893835",
        "id": "c86f19582746b56f71c9bb6929893835",
        "derivedStructData": {
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/94627ee0249dfdfda25b1b158c717bca.txt",
          "snippets": [
            {
              "snippet_status": "SUCCESS",
              "snippet": "For larger websites, talk to the IT team and/or utilize a big data solution such as Google \u003cb\u003eBigQuery\u003c/b\u003e to extract all URLs. It may also be necessary to ask the ..."
            }
          ],
          "extractive_answers": [
            {
              "content": "Alternatively, load the Server Log Files into Google BigQuery and use the Google BigQuery interface or the 360 Data Studio to analyze the data. To monitor the indexation numbers of the HTTP and the HTTPS version, keep an eye on all submitted XML Sitemaps."
            }
          ]
        }
      }
    },
    {
      "id": "774bd7ce2a3509ab4bbd1fc876f39dc2",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/774bd7ce2a3509ab4bbd1fc876f39dc2",
        "id": "774bd7ce2a3509ab4bbd1fc876f39dc2",
        "derivedStructData": {
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "extractive_answers": [
            {
              "content": "This consists of a collection of virtual tables. A virtual table exists for every queryable object type (content type if you prefer) in the repository. Each row in these virtual tables correspond to an instance of the corresponding object type (or of one of its subtypes)."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/28841ef8590a105e9415f1390648a811.txt"
        }
      }
    },
    {
      "id": "3e1d306e49aefd9e23f2d5f7a66e6c76",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/3e1d306e49aefd9e23f2d5f7a66e6c76",
        "id": "3e1d306e49aefd9e23f2d5f7a66e6c76",
        "derivedStructData": {
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "extractive_answers": [
            {
              "content": "Other logo switches are based on search terms. For instance, if the term "ASCII art" is searched, an ASCII art version of the Google logo will appear next to the search box."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/98008df3eef5d3ee1661c52f23189190.txt"
        }
      }
    },
    {
      "id": "cf94e24aacd47cd2c2f5effcbdeda832",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/cf94e24aacd47cd2c2f5effcbdeda832",
        "id": "cf94e24aacd47cd2c2f5effcbdeda832",
        "derivedStructData": {
          "extractive_answers": [
            {
              "content": "The company is listed on the NASDAQ stock exchange under the ticker symbols GOOGL and GOOG, and on the Frankfurt Stock Exchange under the ticker symbol GGQ1. These ticker symbols now refer to Alphabet Inc., Google's holding company, since the fourth quarter of 2015."
            }
          ],
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/d80204083ef1096799fa4b7257548b33.txt"
        }
      }
    },
    {
      "id": "05bc6497a4e7e6ca36b2e495b354b764",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/05bc6497a4e7e6ca36b2e495b354b764",