...
/تحسين قدرات الوكيل باستخدام الذاكرة في LlamaIndex
تحسين قدرات الوكيل باستخدام الذاكرة في LlamaIndex
تعرف على كيفية تمكين وكلاء الذكاء الاصطناعي بالذاكرة لتحسين الاحتفاظ بالسياق والتفاعلات الأكثر ذكاءً.
سنغطي ما يلي...
تخيل أنك تتحدث مع مساعد ذكاء اصطناعي لا يستجيب بدقة في اللحظة فحسب، بل يتذكر أيضًا اسمك ووظيفتك وتفضيلاتك في المحادثات المستقبلية. في هذا الدرس، بناء ذلك تحديدًا: وكيل مدرك للذاكرة باستخدام LlamaIndex.
ولتحقيق ذلك، يتعين علينا دمج أنظمة الذاكرة في وكيل الذكاء الاصطناعي الخاص بنا، مما يمكّنه من تخزين واسترجاع المعلومات عبر التفاعلات.
أنواع الذاكرة في LlamaIndex
يوفر LlamaIndex العديد من وحدات الذاكرة بناء وكلاء أذكياء:
الذاكرة الأولية (
ChatMemoryBuffer
): وهي ذاكرة قصيرة المدى تحتوي على سياق المحادثة الحالية.الذاكرة الثانوية (
VectorMemory
): وهي ذاكرة طويلة المدى تحتفظ بالمعلومات المهمة التي تتجاوز محادثة واحدة.الذاكرة القابلة للتكوين (
SimpleComposableMemory
): يجمع بين مصادر الذاكرة الأولية والثانوية.
سنوضح كيفية إعداد كل منها، خطوة بخطوة:
أولاً، نقوم باستيراد جميع الوحدات التي سنستخدمها طوال الدرس.
from llama_index.llms.groq import Groqfrom llama_index.embeddings.ollama import OllamaEmbeddingfrom llama_index.core.memory import VectorMemory, SimpleComposableMemory, ChatMemoryBufferfrom llama_index.core.llms import ChatMessagefrom llama_index.core.tools import FunctionTool
ستساعدنا هذه الوحدات في الاتصال بنموذج اللغة، وتضمين رسائل المستخدم كمتجهات، وتحديد آليات الذاكرة، بناء أدوات تفاعلية يمكن لوكيلنا استخدامها.
Groq
(LLM): يسمح هذا الاستيراد للوكيل بالاتصال بنموذج لغة مستضاف بواسطة Groq، مثلllama3-70b-8192
، وهو المسؤول عن توليد الاستجابات.OllamaEmbedding
: تتصل هذه الوحدة بنموذج محلي يعمل عبر Ollama ، مثلnomic-embed-text
يوفر هذا النموذج تحويلًا سريعًا وفعالًا للنصوص إلى تضمينات متجهية، وهو أمر بالغ الأهمية لتمكين البحث الدلالي. ونظرًا لاعتمادنا على البحث الدلالي لاسترجاع السياق ذي الصلة من الذاكرة، فإن نموذج التضمين يلعب دورًا مفتاح في التفاعلات التي تعتمد على الذاكرة. وبينما يدعم LlamaIndex نماذج التضمين من مختلف مقدمي الخدمات، فإننا نستخدم Ollama هنا لأنه خفيف الوزن، ويعمل محليًا، ومجاني الاستخدام.فئات الذاكرة (
VectorMemory
،ChatMemoryBuffer
،SimpleComposableMemory
): توفر هذه الفئات أنواعًا مختلفة من وظائف الذاكرة.VectorMemory
يدير التخزين طويل الأمد باستخدام التضمينات،ChatMemoryBuffer
يحتفظ بسجل المحادثة الأخير، وSimpleComposableMemory
يجمع كليهما لإنشاء نظام ذاكرة موحد.ChatMessage
: تحدد هذه الفئة كيفية هيكلة رسائل الدردشة الفردية، مما يتيح التخزين والاسترجاع المتسقين داخل نظام ذاكرة الوكيل.FunctionTool
: يسمح هذا المكون بتغليف وظائف Python القياسية كأدوات قابلة للاتصال، والتي يمكن للوكيل استخدامها أثناء المحادثات لأداء مهام محددة، مثل استرداد الذكريات المخزنة.
قبل أن نتمكن من تزويد عميلنا بالذاكرة، علينا ربطها بنموذج لغة ونموذج تضمين. يتولى نموذج اللغة فهم النص وتوليده، بينما يحوّل نموذج التضمين مُدخلات المستخدم إلى تمثيلات متجهية تسمح باسترجاعها لاحقًا بناءً على التشابه.
llm = Groq(model="llama3-70b-8192", api_key="{{GROQ_API_KEY}}")embedding_model = OllamaEmbedding(model_name="nomic-embed-text")
llm
هو اتصالنا بنموذج LLaMA 3 المستضاف على Groq، والذي يولد استجابات للوكيل.embedding_model
يتيح لنا تحويل إدخال المستخدم إلى متجهات يمكن تخزينها والبحث عنها في الذاكرة طويلة المدى.
بعد إعداد نموذج اللغة ونموذج التضمين، يمكننا الآن تحويل انتباهنا إلى الذاكرة - وهي جزء أساسي من بناء وكيل ذكي واعي للسياق. ...