הרמת מודעות Airbnb: GPT-4o Mini לעומת Sonnet 3.5 של Anthropic ב-RAG אגנטי

חקרו את הביצועים של GPT-4o Mini לעומת Sonnet 3.5 של Anthropic ביצירת סוכנים עבור תיאורי רשימות Airbnb. למדו כיצד להגדיר מערך נתונים מעשי, אמבדינגים ותהליך RAG סוכני באמצעות Llama Index ו-VectorDB. גלו את החוזקות והמגבלות של כל דגם בהשוואה מקיפה זו.

16 בפברואר 2025

party-gif

גלה כיצד הדגם הקטן החדש ביותר של GPT-4o מאת OpenAI מתנהג ביצירת סוכנים עבור Agentic RAG, טכניקה עוצמתית לאחזור מידע. פוסט הבלוג הזה מספק השוואה מעשית עם דגם Anthropic Cloud 3.5 Sonnet, תוך שימוש בערכת נתוני Airbnb מהעולם האמיתי כדי להדגים את היכולות והמגבלות של כל דגם בזרימת עבודה סוכנית.

מציגים את GPT-4o Mini: דגם יעיל מבחינת עלות עבור RAG אגנטי

GPT-4o Mini הוא הדגם האחרון והזול ביותר ביותר מ-OpenAI, והוא אחד הדגמים בעלי הביצועים הטובים ביותר בטווח המחירים שלו. עם זאת, השאלה הנשאלת היא: כמה טוב הדגם הזה ליצירת סוכנים, בפרט סוכנים אגנטיים של Retrieval-Augmented Generation (RAG)?

בחלק זה, נחקור את ביצועי GPT-4o Mini בהשוואה לדגם Anthropic Cloud 3.5 Sonnet, שהוא בחירה פופולרית עבור RAG אגנטי. נשתמש בערכת נתונים מעשית, ערכת הנתונים של הטמעות Airbnb מ-MongoDB, כדי לבחון את היכולות של הדגמים האלה.

ערכת הנתונים מכילה עמודות מטא-נתונים שונות, ונעבד את הנתונים כדי ליצור קלט מתאים עבור תהליך ה-RAG. נשתמש ב-Llama Index כדי להגדיר את יישום ה-RAG, תוך ניצול היכולות האגנטיות שלו.

עבור ה-LLM או הסוכן, נשתמש הן ב-GPT-4o Mini והן ב-Cloud 3.5 Sonnet, ועבור ה-VectorDB, נסתמך על ChromaDB. נעבור על תהליך ההגדרה, כולל התקנת הספריות הנדרשות, הגדרת משתני הסביבה, והגדרת ה-LLM והדגמי ההטמעה.

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

לבסוף, נגדיר את חנות הווקטורים באמצעות ChromaDB ונגדיר את כלי מנוע השאילתות שיהיה זמין עבור הסוכן. לאחר מכן, נייצר את סוכן העובד ונתקשר איתו באמצעות פונקצית הצ'אט, תוך השוואת ביצועי GPT-4o Mini ו-Cloud 3.5 Sonnet במשימות RAG אגנטיות.

בסוף חלק זה, תהיה לך הבנה טובה יותר של יכולות GPT-4o Mini בהקשר של RAG אגנטי ואיך הוא משתווה לדגם החזק יותר של Cloud 3.5 Sonnet.

הגדרת הסביבה והנתונים

כדי להתחיל, תחילה עלינו להגדיר את הספריות והמשתנים הנדרשים. נתקין את החבילות הנחוצות, כולל Llama Index, OpenAI ו-ChromaDB. לאחר מכן, נגדיר את משתני הסביבה, כולל מפתח ה-API של OpenAI והאסימון של Hugging Face (אם נדרש).

אחר כך, נגדיר את ה-LLM (Language Model) ודגמי ההטמעה. עבור ה-LLM, נשתמש בדגם GPT-4 OM Mini. עבור ההטמעות, נשתמש בדגם OpenAI TextEmbedding3 הקטן, המאפשר לנו להתאים את גודל ההטמעה כדי להפחית את עלויות החישוב והאחסון.

לאחר הגדרת הדגמים, נעבור לטעינה ועיבוד הנתונים. נשתמש בערכת הנתונים של הטמעות Airbnb מ-MongoDB, תוך התמקדות בנקודות הנתונים הראשונות 2,000 כדי לשמור על זמן העיבוד ועלויות מנוהלים.

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

כדי להכין את הנתונים עבור חנות הווקטורים, נפצל את הטקסט לקטעים של 5,000 תווים ונייצר צמתים המכילים את הטקסט, וקטורי ההטמעה והמטא-נתונים. לבסוף, נגדיר את חנות הווקטורים של ChromaDB לאחסון הצמתים, אשר ישמשו כבסיס הידע עבור תהליך ה-RAG (Retrieval-Augmented Generation) האגנטי.

הטמעת מערך הנתונים של Airbnb

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

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

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

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

יצירת כלי אחסון וחיפוש וקטורי

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

לאחר מכן, נגדיר את ה-LLM והדגמי ההטמעה שלנו. עבור ה-LLM, נשתמש בדגם GPT-4 OM Mini, ועבור ההטמעות, נשתמש בדגם OpenAI TextEmbedding3 הקטן.

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

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

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

השלבים המפתחיים בתהליך זה הם:

  1. הגדרת הספריות והמשתנים הנדרשים.
  2. הגדרת ה-LLM והדגמי ההטמעה.
  3. טעינה ועיבוד של ערכת הנתונים של Airbnb.
  4. יצירת חנות הווקטורים באמצעות ChromaDB.
  5. הגדרת כלי מנוע השאילתות והוספתו לבסיס הידע של הסוכן.
  6. יצירת סוכן העובד על ידי שילוב ה-LLM וכלי מנוע השאילתות.

עם שלבים אלה, הגדרנו את התשתית הנחוצה להשתמש בדגם GPT-4 OM Mini עבור משימות RAG אגנטיות על ערכת הנתונים של Airbnb.

יישום סוכן העובד

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

query_engine_tool = QueryEngineToolV2(
    "Knowledge base",
    "Provides information about Airbnb listings and reviews, use a detailed plain text question as input to the tool.",
    self.vector_store
)
tools = [query_engine_tool]

לאחר מכן, אנו יוצרים את סוכן העובד באמצעות הכיתה FunctionCallingAgentWorker מ-Llama Index. אנו מספקים את רשימת הכלים והדגם השפתי (GPT-4 Mini במקרה זה) לסוכן העובד.

agent_worker = FunctionCallingAgentWorker(
    tools,
    self.llm,
    verbose=True
)
self.agent = agent_worker

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

prompt = "Tell me the best listing for a place in New York."
result = self.agent.chat(prompt)
print(result)

תגובת הסוכן תכלול את תהליך המחשבה והתשובה הסופית. במקרה זה, תגובת הסוכן של GPT-4 Mini אינה מפורטת או חדה כמו התגובה של הסוכן של Anthropic 3.5 Sonnet.

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

באופן כללי, יישום סוכן העובד באמצעות Llama Index הוא ישיר, אך ביצועי הסוכן תלויים ביכולות של הדגם השפתי הבסיסי. דגם Anthropic 3.5 Sonnet נ

שאלות נפוצות