פיתוח עוזר דיגיטלי לחיפוש פטנטים באמצעות AlloyDB ו-Vertex AI Agent Builder – חלק 2

1. סקירה כללית

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

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

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

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

מה תפַתחו

בשיעור ה-Lab הזה (חלק 2):

  1. יצירת סוכן ב-Vertex AI Agent Builder
  2. שילוב כלי AlloyDB בסוכן

דרישות

  • דפדפן, כמו Chrome או Firefox
  • פרויקט ב-Google Cloud שהחיוב בו מופעל.

2. ארכיטקטורה

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

הטמעה:

נתוני הפטנטים נטענים ל-AlloyDB.

מנוע Analytics:

נשתמש ב-AlloyDB כמנוע לניתוח נתונים כדי לבצע את הפעולות הבאות:

  1. חילוץ הקשר: המנוע מנתח את הנתונים שמאוחסנים ב-AlloyDB כדי להבין את מערך הנתונים של הפטנטים.
  2. יצירת הטמעה: הטמעות (ייצוגים מתמטיים של טקסט) נוצרות גם עבור השאילתה של המשתמש וגם עבור המידע שמאוחסן ב-AlloyDB.
  3. חיפוש וקטורי: המנוע מבצע חיפוש דמיון, ומשווה את ההטמעה של השאילתה להטמעות של תקצירי פטנטים. התכונה הזו מזהה את ה'שכן הקרוב ביותר' שרלוונטי להקשר של החיפוש שהמשתמש מבצע.

יצירת תשובה:

התשובות שעברו אימות מובנות כמערך JSON, והמנוע כולו ארוז כפונקציית Cloud Run ללא שרת, שמופעלת מ-Agent Builder.

השלבים שלמעלה כבר מוסברים בחלק 1 של ה-Lab.

הסברנו את הפרטים הטכניים של יצירת מנוע ניתוח מבוסס-ידע שמפעיל את העוזר החכם שלנו לחיפוש פטנטים. עכשיו נראה איך אנחנו משתמשים בקסם של Agent Builder כדי להפעיל את המנוע הזה בממשק שיחה. לפני שמתחילים בחלק 2, צריך לוודא שכתובת ה-URL של נקודת הקצה מוכנה. בשיעור ה-Lab הזה נלמד על השלב הבא:

אינטראקציה שיחתית:

Agent Builder מציג את התשובות למשתמש בפורמט של שפה טבעית, כדי לאפשר דיאלוג הלוך ושוב.

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

יצירת פרויקט

  1. ב-מסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud.
  2. הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
  3. תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud ומגיעה עם bq שנטען מראש. לוחצים על 'הפעלת Cloud Shell' בחלק העליון של מסוף Google Cloud.

תמונה של לחצן ההפעלה של Cloud Shell

  1. אחרי שמתחברים ל-Cloud Shell, בודקים שכבר בוצע אימות ושהפרויקט מוגדר למזהה הפרויקט באמצעות הפקודה הבאה:
gcloud auth list
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט.
gcloud config list project
  1. אם הפרויקט לא מוגדר, משתמשים בפקודה הבאה כדי להגדיר אותו:
gcloud config set project <YOUR_PROJECT_ID>
  1. מפעילים את ממשקי ה-API הנדרשים. אפשר גם לחפש כל מוצר במסוף או להשתמש בקישור הזה במקום בפקודת gcloud.

אם פספסתם API כלשהו, תמיד תוכלו להפעיל אותו במהלך ההטמעה.

אפשר לעיין במאמרי העזרה בנושא פקודות gcloud ושימוש בהן.

הערה חשובה: כדי להשלים את השלב הזה, צריך לוודא שסיימתם את חלק 1 של שיעור ה-Lab.

4. יצירת סוכן

היכרות עם Agent Builder

Agent Builder הוא כלי רב עוצמה עם תכנות מינימלי, שמאפשר לנו ליצור סוכנים בממשק שיחה במהירות וביעילות. הוא מייעל את התהליך של עיצוב תרשימי זרימה של דיאלוגים, שילוב מאגרי ידע וקישור לממשקי API חיצוניים. במקרה שלנו, נשתמש ב-Agent Builder כדי להתחבר בצורה חלקה לנקודת הקצה (endpoint) של פונקציה של Cloud Functions שיצרנו בחלק 1. כך עוזר החיפוש שלנו בנושא פטנטים יוכל לגשת למאגר הידע בנושא פטנטים ולהגיב לשאילתות של משתמשים בצורה חכמה.

מוודאים שיצרתם את פונקציית Java Cloud Run שנוצרה בחלק 1 מחזירה מערך JSON במקום טקסט פשוט.

יצירת הסוכן

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

  1. כדי להתחיל, נכנסים אל פלטפורמת Agent Builder. אם מוצגת בקשה להפעיל את ה-API, לוחצים על 'המשך והפעלת ה-API'.
  2. לוחצים על 'יצירת אפליקציה' ונותנים לסוכן שם תיאורי (למשל, 'עוזר לחיפוש פטנטים').
  3. לוחצים על סוג האפליקציה 'סוכן'.

462bb48664e9a14e.png

  1. ‫. נותנים לסוכן שם תיאורי כמו Patent Search Assistant ומגדירים את האזור כ-us-central1
  2. מזינים את פרטי הנציג:
  3. משנים את שם הסוכן ל-Patent Search Agent.
  4. מוסיפים את היעד הבא:
You are a professional intelligent patent search agent! Your job is to help the customer find patents matching the context of their search text.

38f7d77d5ed0cb2a.png

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

38f7d77d5ed0cb2a.png

הזנת שם הכלי: כלי לחיפוש פטנטים

סוג: OpenAPI

Enter Tool Description:

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

Enter Schema — OpenAPI in YAML format:

בשלב הזה אנחנו משתמשים בנקודת הקצה של ה-Backend כדי להפעיל את הסוכן. מעתיקים את מפרט OpenAPI שבהמשך ומחליפים את ה-placeholder של כתובת ה-URL (שמוקף בסוגריים זוויתיים) בנקודת הקצה של Cloud Functions:

openapi: 3.0.0
info:
  title: Patent Search API
  version: v1
servers:
  - url: YOUR_CLOUDFUNCTION_ENDPOINT_URL
paths:
  /patent-search:
    post:
      summary: Search for patents using a text query.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                search:
                  type: string
                  description: The text query to search for patents.
                  example: A new Natural Language Processing related Machine Learning Model
      responses:
        '200':
          description: Successful search response with a JSON array of matching patents.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    result:
                      type: string
                      description: Patent title.
        '400':
          description: Invalid request body.
        '500':
          description: Internal server error.

משאירים את ערכי ברירת המחדל בשאר ההגדרות ולוחצים על 'שמירה'.

  1. בשלב הזה, חוזרים אל הסוכן כי רוצים להוסיף את ההגדרה Tool (כלי) אל Instructions (הוראות) של הסוכן. מוסיפים את הטקסט הבא ל-placeholder של ההוראות (חשוב לזכור שההזחות חשובות להגדרת התהליך):
- Greet the users, then ask how you can help them today.
- Summarize the user's request and ask them to confirm that you understood correctly.
    - If necessary, seek clarifying details.
- Use ${TOOL:Patent Search Tool} to help the user with their task.
- Return the response from the ${TOOL:Patent Search Tool} to the user in a well formed string.
- Thank the user for their business and say goodbye.

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

5. בדיקת הנציג

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

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

e4ffaa48b5c1f012.png

זו תגובת ה-JSON:

b0ee0af57ba63943.png

זו תוצאת ה-JSON הגולמית מפונקציית Cloud Functions שמבצעת את חיפוש הדמיון ב-AlloyDB. זהו! הכול מוכן עכשיו.

6. פריסה ושילוב

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

7. הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם במאמר הזה:

  1. במסוף Google Cloud, עוברים אל Manage
  2. בדף resources.
  3. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  4. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

8. מזל טוב

מעולה! שילבנו את העוצמה של מנוע לניתוח נתונים שפיתחנו במיוחד עם הממשק האינטואיטיבי של Agent Builder, ויצרנו עוזר חכם לחיפוש ספרות מקצועית, שמאפשר לבצע חיפושים כאלה בצורה נגישה, יעילה וממוקדת. שילוב היכולות של AlloyDB,‏ Vertex AI ו-Vector Search מאפשר לנו לעשות קפיצה משמעותית קדימה ולהפוך את החיפושים ההקשריים והווקטוריים לנגישים, יעילים, מבוססי-משמעות ואקטיביים באמת!