...

/

تحسين قدرات الوكيل باستخدام الذاكرة في LlamaIndex

تحسين قدرات الوكيل باستخدام الذاكرة في LlamaIndex

تعرف على كيفية تمكين وكلاء الذكاء الاصطناعي بالذاكرة لتحسين الاحتفاظ بالسياق والتفاعلات الأكثر ذكاءً.

سنغطي ما يلي...

تخيل أنك تتحدث مع مساعد ذكاء اصطناعي لا يستجيب بدقة في اللحظة فحسب، بل يتذكر أيضًا اسمك ووظيفتك وتفضيلاتك في المحادثات المستقبلية. في هذا الدرس، بناء ذلك تحديدًا: وكيل مدرك للذاكرة باستخدام LlamaIndex.

ولتحقيق ذلك، يتعين علينا دمج أنظمة الذاكرة في وكيل الذكاء الاصطناعي الخاص بنا، مما يمكّنه من تخزين واسترجاع المعلومات عبر التفاعلات.

Press + to interact
LlamaIndex agent enhanced with memory: chat history is stored in a memory buffer and persisted in vector storage to enable contextual retrieval
LlamaIndex agent enhanced with memory: chat history is stored in a memory buffer and persisted in vector storage to enable contextual retrieval

أنواع الذاكرة في LlamaIndex

يوفر LlamaIndex العديد من وحدات الذاكرة بناء وكلاء أذكياء:

  • الذاكرة الأولية (ChatMemoryBuffer ): وهي ذاكرة قصيرة المدى تحتوي على سياق المحادثة الحالية.

  • الذاكرة الثانوية (VectorMemory ): وهي ذاكرة طويلة المدى تحتفظ بالمعلومات المهمة التي تتجاوز محادثة واحدة.

  • الذاكرة القابلة للتكوين (SimpleComposableMemory ): يجمع بين مصادر الذاكرة الأولية والثانوية.

سنوضح كيفية إعداد كل منها، خطوة بخطوة:

أولاً، نقوم باستيراد جميع الوحدات التي سنستخدمها طوال الدرس.

from llama_index.llms.groq import Groq
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.core.memory import VectorMemory, SimpleComposableMemory, ChatMemoryBuffer
from llama_index.core.llms import ChatMessage
from llama_index.core.tools import FunctionTool
Import required modules

ستساعدنا هذه الوحدات في الاتصال بنموذج اللغة، وتضمين رسائل المستخدم كمتجهات، وتحديد آليات الذاكرة، بناء أدوات تفاعلية يمكن لوكيلنا استخدامها.

  • 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")
Initialize the LLM and embedding model
  • llm هو اتصالنا بنموذج LLaMA 3 المستضاف على Groq، والذي يولد استجابات للوكيل.

  • embedding_model يتيح لنا تحويل إدخال المستخدم إلى متجهات يمكن تخزينها والبحث عنها في الذاكرة طويلة المدى.

بعد إعداد نموذج اللغة ونموذج التضمين، يمكننا الآن تحويل انتباهنا إلى الذاكرة - وهي جزء أساسي من بناء وكيل ذكي واعي للسياق. ...