חיפוש מידע הוא אחד מהשימושים הנפוצים ביותר במודלים גנרטיביים של בינה מלאכותית (AI). בעזרת AI תוכלו ליצור ממשק חיפוש מבוסס-שיחה לתוכן שלכם, שיאפשר למשתמשים לשאול שאלות ספציפיות ולקבל תשובות ישירות.
במדריך הזה נסביר איך ליצור ממשק חיפוש מבוסס-AI שמבוסס על שיחה עבור התוכן שלכם. הוא מבוסס על Docs Agent, פרויקט בקוד פתוח שמשתמש ב-Google Gemini API כדי ליצור ממשק חיפוש מבוסס-שיחה, בלי לאמן מודל AI חדש או לבצע התאמה של מודל באמצעות מודלים של Gemini. פירוש הדבר הוא שאפשר ליצור את יכולת החיפוש הזו במהירות ולהשתמש בה בקבוצות תוכן קטנות וגדולות.
בסרטון AI Content Search | Build with Google AI מוסבר איך להרחיב את הפרויקט, כולל תובנות מהאנשים שפיתחו אותו. אחרת, תוכלו להתחיל להרחיב את הפרויקט לפי ההוראות שבהמשך.
סקירה כללית
הפרויקט Docs Agent מספק ממשק חיפוש שיחה לקבוצת תוכן ספציפית, שמבוסס על Google Gemini API ועל מודלים גנרטיביים. המשתמשים יכולים לשאול שאלה מפורטת בסגנון שיחה ולקבל תשובה מפורטת על סמך קבוצת תוכן ספציפית. מאחורי הקלעים, הסוכן של Docs לוקח את השאלה ומחפש במסד נתונים של וקטור התוכן, ויוצר הנחיה מפורטת למודל הגנרטיבי, כולל קטעי טקסט רלוונטיים. המודל הגנרטיבי יוצר תשובה לשאלה, ו-Docs Agent מעצב את התשובה ומציג אותה למשתמש.
איור 1. תרשים פונקציונלי של אפליקציית הפרויקט של Docs Agent.
כדי ש-Docs Agent יוכל לענות על שאלות לגבי התוכן שלכם, צריך ליצור מסד נתונים של וקטורים של התוכן הזה. מחלקים את התוכן לקטעי טקסט לוגיים ויוצרים וקטור לכל אחד מהם. הוקטורים האלה הם ייצוגים מספריים של המידע בכל מקטע, והם נוצרים באמצעות פונקציית הטמעת טקסט מבוססת-AI מהמודלים הגנרטיביים של Google.
כשמשתמש שואל שאלה, הסוכן של Docs משתמש באותה פונקציה להטמעת טקסט כדי ליצור ייצוג מספרי של השאלה הזו, ומשתמש בערך הזה כדי לחפש במסד הנתונים של הווקטורים ולמצוא תוכן קשור. המערכת מקבלת את התוצאות המובילות ומוסיפה את המידע הזה להנחיה למודל הגנרטיבי. מודל ה-AI מקבל את השאלה ואת פרטי ההקשר הנוספים ויוצר תשובה.
הגדרת הפרויקט
בהוראות הבאות מוסבר איך להגדיר את הפרויקט של Docs Agent לפיתוח ובדיקה. השלבים הכלליים הם התקנה של תוכנות מסוימות שנדרשות, הגדרה של כמה משתני סביבה, יצירת עותקים מקוריים (cloning) של הפרויקט ממאגר הקוד והרצה של התקנת התצורה. בפרויקט הקוד נעשה שימוש ב-Python Poetry לניהול החבילות וסביבת זמן הריצה של Python.
התקנת הדרישות המוקדמות
בפרויקט Docs Agent נעשה שימוש ב-Python 3 וב-Python Poetry לניהול חבילות ולהפעלת האפליקציה. הוראות ההתקנה הבאות מיועדות למכונה מארחת עם Linux.
כדי להתקין את התוכנה הנדרשת:
- מתקינים את Python 3 ואת חבילת הסביבה הווירטואלית
venv
ל-Python.
sudo apt update sudo apt install git pip python3-venv
- מתקינים את Python Poetry כדי לנהל את יחסי התלות ואת האריזה של הפרויקט.
curl -sSL https://install.python-poetry.org | python3 -
אם תרחיבו את הפרויקט, תוכלו להשתמש ב-Python Poetry כדי להוסיף עוד ספריות Python.
הגדרה של משתני סביבה
מגדירים כמה משתני סביבה שנדרשים כדי לאפשר את הפעלת פרויקט הקוד של Docs Agent, כולל מפתח API של Google Gemini והגדרה של Python Poetry. אם אתם משתמשים ב-Linux, כדאי להוסיף את המשתנים האלה לקובץ $HOME/.bashrc
כדי שהם יהיו הגדרות ברירת המחדל של סשנים במסוף.
כדי להגדיר את משתני הסביבה:
- מקבלים מפתח API של Google Gemini ומעתיקים את מחרוזת המפתח.
- מגדירים את מפתח ה-API כמשתנה סביבה. במארחים של Linux, משתמשים בפקודה הבאה.
export API_KEY=<YOUR_API_KEY_HERE>
- כדי לפתור בעיה ידועה ב-Python Poetry, מגדירים את הפרמטר
PYTHON_KEYRING_BACKEND
. במארחים של Linux, משתמשים בפקודה הבאה.
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
שכפול והגדרה של הפרויקט
מורידים את קוד הפרויקט ומשתמשים בפקודת ההתקנה של Poetry כדי להוריד את יחסי התלות הנדרשים ולהגדיר את הפרויקט. כדי לאחזר את קוד המקור של הפרויקט, צריך תוכנת בקרת מקורות של git. כדי להוריד ולהגדיר את קוד הפרויקט:
- מעתיקים את מאגר ה-git באמצעות הפקודה הבאה.
git clone https://github.com/google/generative-ai-docs
- אפשר גם להגדיר את מאגר ה-Git המקומי כך שישתמש ב-sparse checkout, כך שיישארו רק הקבצים של פרויקט Docs Agent.
cd generative-ai-docs/ git sparse-checkout init --cone git sparse-checkout set examples/gemini/python/docs-agent/
- עוברים לספריית השורש של הפרויקט
docs-agent
.
cd examples/gemini/python/docs-agent/
- מריצים את פקודת ההתקנה של Poetry כדי להוריד את יחסי התלות ולהגדיר את הפרויקט:
poetry install
הכנת התוכן
הפרויקט של Docs Agent מיועד לעבודה עם תוכן טקסט, והוא כולל כלים ספציפיים לעבודה עם אתרים שמשתמשים ב-Markdown כפורמט המקור. אם אתם עובדים עם תוכן של אתר, עליכם לשמור (או ליצור עותק) את מבנה הספריות של האתר שמוצג, כדי לאפשר למשימות עיבוד התוכן למפות את התוכן הזה וליצור קישורים אליו.
בהתאם לפורמט ולפרטים של התוכן, יכול להיות שתצטרכו לנקות את התוכן כדי להסיר מידע שאינו ציבורי, הערות פנימיות או מידע אחר שאתם לא רוצים שיהיה ניתן לחפש אותו. כדאי לשמור על עיצוב בסיסי, כמו כותרות וכותרות ראשיות, שיעזרו ליצור חלוקות טקסט לוגיות או קטעים בשלב עיבוד התוכן.
כדי להכין תוכן לעיבוד:
- יוצרים ספרייה לתוכן שרוצים שסוכן ה-AI יחפש.
mkdir docs-agent/content/
- מעתיקים את התוכן לספרייה
docs-agent/content/
. אם התוכן הוא אתר, יש לשמור (או ליצור עותק) את מבנה הספרייה של האתר שמוצג. - עורכים או מנקים את התוכן לפי הצורך כדי להסיר מידע לא ציבורי או מידע אחר שאתם לא רוצים שייכלל בחיפושים.
שימוש במסמכי Flutter לבדיקה
אם אתם צריכים קבוצת תוכן לבדיקה של Docs Agent, תוכלו להשתמש במסמכי העזרה למפתחים של Flutter לצורך הבדיקה.
כדי לקבל את המסמכים למפתחים של Flutter:
- עוברים לספריית התוכן של התוכן שרוצים שסוכן ה-AI יחפש.
cd docs-agent/content/
- משכפלים את המסמכים של Flutter לספרייה
docs-agent/content/
.
git clone --recurse-submodules https://github.com/flutter/website.git
עיבוד תוכן
כדי שסוכן החיפוש יוכל לחפש תוכן שקשור לשאלות של המשתמשים בצורה יעילה, צריך ליצור מסד נתונים של וקטורים שמייצגים את התוכן שלכם. הווקטורים נוצרים באמצעות פונקציה של מודל גנרטיבי מבוסס-AI שנקראת הטמעת טקסט. הטמעות טקסט הן ייצוגים מספריים של תוכן הטקסט. הם משקפים את המשמעות הסמנטית של הטקסט כקבוצת מספרים. ייצוגים מספריים של מידע מאפשרים למערכת לקבל שאלה של משתמש, להעריך את המשמעות שלה באמצעות אותה פונקציה להטמעת טקסט, ואז למצוא מידע קשור כחישוב מתמטי, באמצעות אלגוריתם k-nearest neighbors (k-NN).
פיצול תוכן הטקסט
כמות הטקסט שוקטור הטמעת הטקסט יכול לייצג באופן יעיל מוגבלת. בפרויקט הזה, הטקסט שמיוצג בוקטור מוגבל ל-3,000 תווים או פחות. כלומר, צריך לפצל את התוכן לקטעים שכל אחד מהם מכיל פחות מ-3,000 תווים. בקטע הזה נסביר איך להשתמש בסקריפט שסופק עם הפרויקט של Docs Agent כדי לפצל קובצי Markdown למקטעי טקסט קטנים יותר. טיפים לעבודה עם פורמטים אחרים של תוכן זמינים במאמר טיפול בפורמטים אחרים.
כדי לפצל תוכן בפורמט Markdown:
- כדי להגדיר את פרמטרים הקלט של סקריפט העיבוד, עורכים את הקובץ
docs-agent/config.yaml
. הדוגמה הזו מטרגטת קבוצת משנה של מסמכי Flutter:
input: - path: "content/website/src/ui" url_prefix: "https://docs.flutter.dev/ui"
- שומרים את השינויים בקובץ התצורה הזה.
- עוברים לספריית הפרויקט
docs-agent
:
cd docs-agent/
- כדי לפצל את תוכן המקור של Markdown, מריצים את הפקודה
agent chunk
:
agent chunk
הסקריפט מעבד את תוכן הקלט ויוצר קובצי טקסט של פלט בתיקייה docs-agent/data
, ומחלק את הטקסט על סמך כותרות, כותרות ראשיות ופסקאות קשורות. העיבוד עשוי להימשך זמן מה, בהתאם לגודל התוכן.
יצירת וקטורים להטמעת טקסט
אחרי שמחלקים את התוכן לקטעים משמעותיים בגודל מתאים, אפשר לאכלס את מסד הנתונים של הווקטורים באמצעות פונקציית הטמעת טקסט. בפרויקט Docs Agent נעשה שימוש במסד הנתונים של הווקטורים Chroma כדי לאחסן וקטורים של הטמעת טקסט. בהוראות האלה מוסבר איך להשתמש בסקריפט של Docs Agents כדי לאכלס מסד נתונים של וקטורים באמצעות התוכן המפוצל.
כדי ליצור הטמעות טקסט ולאכלס את מסד הנתונים של הווקטורים:
- עוברים לספריית הפרויקט
docs-agent
:
cd docs-agent/
- מאכלסים את מסד הנתונים של הווקטורים באמצעות התוכן שלכם באמצעות הפקודה
agent populate
:
agent populate
הסקריפט הזה משתמש ב-Google Gemini API כדי ליצור וקטורים של טקסט מוטמע, ולאחר מכן לשמור את הפלט במסד הנתונים של הוקטורים. עיבוד הנתונים עשוי להימשך זמן מה, בהתאם לגודל התוכן.
טיפול בפורמטים אחרים
הפרויקט של Docs Agent מיועד לעבוד עם תוכן של אתרים בפורמט Markdown. מחברי הפרויקט יצרו כמה סקריפטים להמרה כדי ליצור סוגים אחרים של תוכן בפורמט Markdown, כולל Google Docs, Portable Document Format (PDF) ו-Gmail. מידע נוסף על השימוש בממירים האלה זמין בספרייה docs-agent/apps_script במאגר הקוד.
המרת פורמטים אחרים של תוכן
אפשר להשתמש בפורמטים אחרים של תוכן בפרויקט, אבל אתם או חברים אחרים בקהילה צריכים ליצור את השיטות הנוספות האלה. כדאי לבדוק את הבעיות ואת בקשות המשיכה במאגר הקוד כדי למצוא אנשים שמפתחים פתרונות דומים.
קוד המפתח שצריך ליצור כדי לתמוך בפורמטים אחרים של תוכן הוא סקריפט מפריד כמו הסקריפט files_to_plain_text.py
. מטרתכם היא ליצור סקריפט או תוכנית שיוצרים פלט דומה לסקריפט הזה. חשוב לזכור שהפלט הסופי של הטקסט צריך לכלול מינימום עיצוב ומידע מיותר. אם אתם משתמשים בפורמטים של תוכן כמו HTML או JSON, חשוב להסיר כמה שיותר מהפורמטים הלא מידעיים (תגים, סקריפטים, CSS) כדי שהם לא יגרמו לסטייה בערכים של הטקסטים שמוטמעים מהם.
אחרי שיוצרים סקריפט לפלח את פורמט התוכן, אפשר להריץ את הסקריפט populate_vector_database.py
כדי לאכלס את מסד הנתונים של הווקטורים. מידע נוסף על עיבוד קבצים לשימוש עם Docs Agent זמין במאמר Preprocess Readme של Docs Agent.
בדיקת האפליקציה
אחרי שמשלימים את האכלוס של מסד הנתונים של הווקטורים, הפרויקט מוכן לבדיקה. הפרויקט מספק פונקציית אריזה שמאפשרת להריץ את הפרויקט באופן מקומי.
כדי להריץ ולבדוק את ממשק האינטרנט של הפרויקט:
- עוברים לספריית הפרויקט
docs-agent
:
cd docs-agent/
- מריצים את סקריפט ההפעלה של אפליקציית האינטרנט:
agent chatbot
- בדפדפן האינטרנט, עוברים לכתובת ה-URL שמוצגת בפלט של סקריפט ההפעלה ובודקים את האפליקציה.
* Running on http://your-hostname-here:5000
אפשרויות הטמעה
ממשק ה-API של Gemini מספק כלי תכנות שיכולים להחליף רכיבים בהטמעה של Docs Agent, ובמיוחד: אחזור סמנטי וריאנטים של מודל Gemini של תשובה לשאלות עם מאפיינים (AQA). אפשר להשתמש בתכונה Semantic Retrieval של Gemini API כדי להחליף את מסד הנתונים נפרד של הווקטורים. התכונה 'אחזור סמנטי' מאפשרת ליצור הטמעות (embeddings) של התוכן שלכם ולאחסן את התוכן הזה. מודל Gemini של AQA מכוונן לתת תשובות לשאלות על סמך חומר מקור שסופק בהנחיה. אתם משתמשים באחזור סמנטי בשילוב עם מודל AQA כדי לענות על שאלות לגבי התוכן שלכם, והכול ב-Gemini API.
סוכני Docs כוללים אפשרויות תצורה לשימוש בתכונה Semantic Retrieval API, במודל AQA Gemini או בשניהם. למידע נוסף, עיינו בקובץ ה-README של Docs Agent.
מקורות מידע נוספים
למידע נוסף על הפרויקט Docs Agent, אפשר לעיין במאגר הקוד. אם אתם צריכים עזרה בפיתוח האפליקציה או מחפשים מפתחים שיעזרו לכם, תוכלו להיכנס לשרת Google Developers Community Discord.
אפליקציות ייצור
אם אתם מתכננים לפרוס את Docs Agent לקהל גדול, חשוב לדעת שהשימוש שלכם ב-Google Gemini API עשוי להיות כפוף למגבלות קצב שליחת בקשות ולהגבלות שימוש אחרות. אם אתם שוקלים לפתח אפליקציה בסביבת הייצור באמצעות Gemini API, כמו Docs Agent, כדאי לבדוק את שירותי Google Cloud Vertex AI כדי לשפר את יכולת ההתאמה לעומס ואת האמינות של האפליקציה.