رفع إعلانات Airbnb: GPT-4o Mini مقابل Sonnet 3.5 من Anthropic في RAG الوكالي

استكشف أداء GPT-4o Mini مقابل Anthropic's 3.5 Sonnet في إنشاء وكلاء لوصف إعلانات Airbnb. تعرف على كيفية إعداد مجموعة بيانات عملية، والتمثيلات، وأنبوب أداة RAG باستخدام Llama Index و VectorDB. اكتشف نقاط القوة والقيود لكل نموذج في هذه المقارنة الشاملة.

١٥ فبراير ٢٠٢٥

party-gif

اكتشف كيف يؤدي أحدث نموذج GPT-4o Mini من OpenAI في إنشاء وكلاء لـ Agentic RAG ، وهي تقنية قوية لاسترداد المعلومات. يوفر هذا المنشور مقارنة عملية مع نموذج Anthropic Cloud 3.5 Sonnet ، باستخدام مجموعة بيانات Airbnb الحقيقية لعرض قدرات وحدود كل نموذج في سير عمل وكيلي.

تقديم GPT-4o Mini: نموذج فعال وفعال من حيث التكلفة

GPT-4o Mini هو أحدث وأكثر الطرز فعالية من حيث التكلفة من OpenAI ، وهو واحد من أفضل النماذج أداءً في نطاق أسعارها. ومع ذلك ، فإن السؤال المطروح هو: كم جيد هذا النموذج لإنشاء وكلاء ، وخاصة الوكلاء المعتمدين على الاسترجاع المعزز (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 (اللغة النموذجية) ونماذج التضمين. بالنسبة إلى LLM ، سنستخدم نموذج GPT-4 OM Mini. بالنسبة إلى التضمينات ، سنستخدم نموذج OpenAI TextEmbedding3 الصغير ، والذي يسمح لنا بتخصيص حجم التضمين لتقليل تكاليف الحساب والتخزين.

بعد إعداد النماذج ، سننتقل إلى تحميل البيانات ومعالجتها. سنستخدم مجموعة بيانات تضمينات Airbnb من MongoDB ، مع التركيز على أول 2,000 نقطة بيانات للحفاظ على وقت المعالجة والتكاليف في حدود معقولة.

سنقوم بحذف التضمينات النصية الحالية وإنشاء متجهات التضمين الخاصة بنا باستخدام تضمينات OpenAI. سنقوم أيضًا باستخراج البيانات الوصفية ذات الصلة من مجموعة البيانات ، مثل اسم الإدراج والملخص وقواعد المنزل ونوع الملكية ونوع الغرفة وعدد الغرف والأسرّة. سيتم استخدام هذه البيانات الوصفية لإثراء النص الذي سيراه LLM أثناء عملية الاسترجاع.

لإعداد البيانات لمتجر المتجهات ، سنقوم بتقسيم النص إلى قطع تتكون من 5,000 حرف وإنشاء عقد تحتوي على النص ومتجهات التضمين والبيانات الوصفية. أخيرًا ، سنقوم بإعداد متجر المتجهات ChromaDB لتخزين العقد ، والذي سيتم استخدامه كقاعدة معرفة لسير عمل RAG (الاسترجاع المعزز) الوكيلي.

تضمين مجموعة بيانات 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 ، والتي ستوفر إمكانية الوصول إلى متجر المتجهات وتسمح لنا باسترجاع أكثر القطع تشابهًا لاستعلام معين. سنعرّف هذه الأداة كجزء من قاعدة معرفة الوكيل.

أخيرًا ، سنقوم بإنشاء عامل الوكيل ، والذي يجمع بين 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 استجابة أكثر تفكيرًا وتنوعًا ، مع الاعتراف بقيود قاعدة المعرفة وت

التعليمات