איך משתמשים בסוכן Docs כדי ליצור חיפוש תוכן שמבוסס על AI

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

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

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

סקירה כללית

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

תרשים פונקציונלי של סוכן Docs איור 1. תרשים פונקציונליות של אפליקציית הפרויקט של סוכן Docs.

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

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

הגדרת הפרויקט

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

התקנת הדרישות המוקדמות

כדי לנהל חבילות ולהריץ את האפליקציה בפרויקט של הסוכן Docs, נעשה שימוש ב-Python 3 וב-Python Poetry. הוראות ההתקנה הבאות מתייחסות למכונה מארחת של Linux.

כדי להתקין את התוכנה הנדרשת:

  1. מתקינים את Python 3 ואת חבילת הסביבה הווירטואלית של venv ל-Python.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. התקנה של Python Poetry כדי לנהל את יחסי התלות והאריזה של הפרויקט.
    curl -sSL https://install.python-poetry.org | python3 -
    

אם מרחיבים את הפרויקט, אפשר להשתמש ב-Python Poetry כדי להוסיף עוד ספריות Python.

הגדרה של משתני סביבה

מגדירים כמה משתני סביבה שנדרשים כדי לאפשר את ההפעלה של פרויקט הקוד של סוכן Docs, כולל מפתח Google Gemini API והגדרה של Python Poetry. אם אתם משתמשים ב-Linux, כדאי להוסיף את המשתנים האלה לקובץ $HOME/.bashrc כדי להגדיר אותם כברירת מחדל לסשנים של טרמינל.

כך מגדירים את משתני הסביבה:

  1. מקבלים מפתח Google Gemini API ומעתיקים את מחרוזת המפתח.
  2. מגדירים את מפתח ה-API כמשתנה סביבה. במארחים של Linux, משתמשים בפקודה הבאה.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. פותרים בעיה ידועה בשירת Python על ידי הגדרת הפרמטר PYTHON_KEYRING_BACKEND. במארחים של Linux, משתמשים בפקודה הבאה.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

שכפול והגדרה של הפרויקט

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

  1. משכפלים את מאגר ה-Git באמצעות הפקודה הבאה.
    git clone https://github.com/google/generative-ai-docs
    
  2. לחלופין, אפשר להגדיר את מאגר ה-Git המקומי כך שישתמש בשיטת תשלום דחופה, כדי שיהיו לכם רק את הקבצים של הפרויקט ב-Docs Agent.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. עוברים לספריית הבסיס של הפרויקט docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. מריצים את פקודת ההתקנה של Poetry כדי להוריד את יחסי התלות ולהגדיר את הפרויקט:
    poetry install
    

הכנת התוכן

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

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

כדי להכין תוכן לעיבוד:

  1. יוצרים ספרייה של התוכן שרוצים שסוכן ה-AI יחפש.
    mkdir docs-agent/content/
    
  2. מעתיקים את התוכן לספרייה docs-agent/content/. אם התוכן הוא אתר, צריך לשמר (או לשכפל) את מבנה הספרייה של האתר שמוצג.
  3. לנקות או לערוך את התוכן לפי הצורך, כדי להסיר מידע שאינו ציבורי או מידע אחר שלא רוצים לכלול בחיפושים.

שימוש במסמכי Flutter לצורך בדיקה

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

כדי לקבל את המסמכים למפתחים של Flutter:

  1. עוברים לספריית התוכן של התוכן שרוצים שסוכן ה-AI יחפש בו.
    cd docs-agent/content/
    
  2. משכפלים את המסמכים של Flutter לספרייה docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

עיבוד התוכן

כדי שסוכן החיפוש יוכל לחפש ביעילות תוכן שקשור לשאלות של המשתמשים, צריך ליצור מסד נתונים של וקטורים שמייצגים את התוכן. הווקטורים נוצרים באמצעות פונקציה של מודל גנרטיבי של AI שנקראת הטמעת טקסט. הטמעות טקסט הן ייצוגים מספריים של תוכן הטקסט. הם מעריכים את המשמעות הסמנטית של הטקסט כקבוצה של מספרים. שימוש בייצוגים מספריים של מידע מאפשר למערכת להתייחס לשאלה של המשתמש, להעריך את המשמעות שלה באמצעות אותה פונקציית הטמעת טקסט, ואז למצוא מידע קשור כחישוב מתמטי באמצעות אלגוריתם של k-nearest nenibors (k-NN).

פיצול תוכן הטקסט

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

כדי לפצל תוכן בפורמט Markdown:

  1. מגדירים את הפרמטרים של הקלט לסקריפט העיבוד על ידי עריכת הקובץ docs-agent/config.yaml. הדוגמה הזו מטרגטת קבוצת משנה של מסמכי Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. שומרים את השינויים בקובץ התצורה הזה.
  3. עוברים לספריית הפרויקט docs-agent:
    cd docs-agent/
    
  4. מפצלים את תוכן המקור ב-Markdown על ידי הרצת הפקודה agent chunk:
    agent chunk
    

הסקריפט מעבד את תוכן הקלט ויוצר קובצי טקסט פלט בספרייה docs-agent/data, ומפצל את הטקסט על סמך כותרות, כותרות ופסקאות קשורות. העיבוד עשוי להימשך זמן מה, בהתאם לגודל התוכן.

יצירת וקטורים של הטמעת טקסט

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

כדי ליצור הטמעות טקסט ולאכלס את מסד הנתונים הווקטורי:

  1. עוברים לספריית הפרויקט docs-agent:
    cd docs-agent/
    
  2. לאכלס את מסד נתוני הווקטורים בתוכן שלכם באמצעות הפקודה agent populate:
    agent populate
    

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

טיפול בפורמטים אחרים

הפרויקט של סוכן Docs מיועד לעבודה עם תוכן אתרים בפורמט Markdown. מפתחי הפרויקט בנו כמה סקריפטים של מומרים כדי ליצור סוגים אחרים של תוכן בפורמט Markdown, כולל Google Docs, Portable Document Format (PDF) ו-Gmail. מידע נוסף על השימוש בממירים האלה זמין בספרייה docs-agent/apps_script במאגר הקוד.

המרה של פורמטים אחרים של תוכן

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

קוד המפתח שצריך ליצור כדי לתמוך בפורמטים אחרים של תוכן הוא סקריפט מפוצל כמו הסקריפט files_to_plain_text.py. המטרה היא לפתח סקריפט או תוכנה שיוצרים פלט דומה לסקריפט הזה. זכרו שפלט הטקסט הסופי צריך להיות בעל עיצוב מינימלי ומידע מיותר. במקרה שאתם משתמשים בפורמטים של תוכן כמו HTML או JSON, הקפידו להסיר כמה שיותר מהעיצוב הלא-מידע (תגים, סקריפטים, CSS) כדי לא להטות את הערכים של הטמעות הטקסט שיצרתם מהם.

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

בדיקת האפליקציה

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

כדי להריץ ולבדוק את ממשק האינטרנט של הפרויקט:

  1. עוברים לספריית הפרויקט docs-agent:
    cd docs-agent/
    
  2. מריצים את סקריפט ההפעלה של אפליקציית האינטרנט:
    agent chatbot
    
  3. באמצעות דפדפן האינטרנט, מנווטים לכתובת האינטרנט של ה-URL שמוצגת בפלט של סקריפט ההפעלה ובודקים את האפליקציה.
    * Running on http://your-hostname-here:5000
    

אפשרויות הטמעה

ממשק ה-API של Gemini מספק כלי תכנות שיכולים להחליף רכיבים של יישום סוכן Docs, ובמיוחד: אחזור סמנטי ומענה לשאלות מיוחסות (AQA). אפשר להשתמש בתכונה אחזור סמנטי של Gemini API כדי להחליף את מסד הנתונים הווקטור הנפרד. התכונה 'אחזור סמנטי' מאפשרת לכם ליצור הטמעות לתוכן ולאחסן אותו. מודל Gemini ב-AQA מכוון לענות על שאלות עם תוכן מקורי שמופיע בהנחיה. אתם משתמשים באחזור סמנטי יחד עם מודל AQA כדי להשיב על שאלות לגבי התוכן שלכם ב-Gemini API.

הסוכן Docs כולל אפשרויות הגדרה שמאפשרות להשתמש בתכונה 'ממשק API לאחזור סמנטי, במודל AQA Gemini' או בשניהם. למידע נוסף, קראו את קובץ הקריאה של סוכן Docs.

מקורות מידע נוספים

מידע נוסף על הפרויקט של סוכן Docs זמין במאגר הקודים. אם אתם צריכים עזרה בבניית האפליקציה או אם אתם מחפשים שותפי עריכה למפתחים, תוכלו למצוא את השרת Google Developers Community Discord.

אפליקציות ייצור

אם אתם מתכננים לפרוס את הסוכן Docs עבור קהל גדול, שימו לב שהשימוש שלכם ב-Google Gemini API עשוי להיות כפוף להגבלת קצב של יצירת בקשות ולהגבלות שימוש נוספות. אם אתם שוקלים לפתח אפליקציה בסביבת ייצור באמצעות Gemini API, כמו Docs Agent, כדאי לבדוק את שירותי Google Cloud Vertex AI כדי לשפר את יכולת ההתאמה ואת האמינות של האפליקציה.