RAG تعني الجيل المعزز للاسترجاع، وهي تقنية قوية مصممة لتحسين أداء نماذج اللغات الكبيرة (LLMs) من خلال تزويدها بسياق محدد ذي صلة في شكل مستندات. على عكس ماجستير إدارة الأعمال التقليدي الذي يولد استجابات تعتمد فقط على معرفتهم المدربة مسبقًا، يتيح لك RAG مواءمة مخرجات النموذج بشكل أوثق مع النتائج المرجوة من خلال استرداد واستخدام البيانات في الوقت الفعلي أو المعلومات الخاصة بالمجال.
بينما يهدف كل من RAG والضبط الدقيق إلى تحسين أداء LLMs، غالبًا ما يكون RAG طريقة أكثر كفاءة وصديقة للموارد. يتضمن الضبط الدقيق إعادة تدريب النموذج على مجموعة بيانات متخصصة، الأمر الذي يتطلب موارد حسابية كبيرة ووقتًا وخبرة. ومن ناحية أخرى، تقوم RAG باسترداد المعلومات ذات الصلة ديناميكيًا ودمجها في عملية الإنشاء، مما يسمح بتكيف أكثر مرونة وفعالية من حيث التكلفة مع المهام الجديدة دون إعادة تدريب مكثفة.
يوفر Olma البنية التحتية الخلفية اللازمة لتشغيل LLaMA محليًا. للبدء، توجه إلى موقع Ollama وقم بتنزيل التطبيق. اتبع التعليمات لإعداده على جهازك المحلي.
LangChain هو إطار عمل Python مصمم للعمل مع العديد من حاملي شهادات LLM وقواعد بيانات المتجهات، مما يجعله مثاليًا لبناء وكلاء RAG. قم بتثبيت LangChain وتبعياته عن طريق تشغيل الأمر التالي:
pip install langchain
أولاً، ستحتاج إلى وظيفة للتفاعل مع مثيل LLaMA المحلي لديك. إليك كيفية إعداده:
from requests import post as rpost def call_llama(prompt): headers = {"Content-Type": "application/json"} payload = { "model": "llama3.1", "prompt": prompt, "stream": False, } response = rpost( "http://localhost:11434/api/generate", headers=headers, json=payload ) return response.json()["response"]
بعد ذلك، قم بدمج هذه الوظيفة في فئة LLM مخصصة داخل LangChain:
from langchain_core.language_models.llms import LLM class LLaMa(LLM): def _call(self, prompt, **kwargs): return call_llama(prompt) @property def _llm_type(self): return "llama-3.1-8b"
المسترد مسؤول عن جلب المستندات ذات الصلة بناءً على استعلام المستخدم. إليك كيفية إعداده باستخدام FAISS لتخزين المتجهات ودمجات HuggingFace المدربة مسبقًا:
from langchain.vectorstores import FAISS from langchain_huggingface import HuggingFaceEmbeddings documents = [ {"content": "What is your return policy? ..."}, {"content": "How long does shipping take? ..."}, # Add more documents as needed ] texts = [doc["content"] for doc in documents] retriever = FAISS.from_texts( texts, HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") ).as_retriever(k=5)
حدد قالب المطالبة الذي سيستخدمه وكيل RAG لإنشاء ردود بناءً على المستندات المستردة:
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder faq_template = """ You are a chat agent for my E-Commerce Company. As a chat agent, it is your duty to help the human with their inquiry and make them a happy customer. Help them, using the following context:{context} """ faq_prompt = ChatPromptTemplate.from_messages([ ("system", faq_template), MessagesPlaceholder("messages") ])
دمج استرجاع المستندات وإنشاء LLaMA في سلسلة متماسكة:
from langchain.chains.combine_documents import create_stuff_documents_chain document_chain = create_stuff_documents_chain(LLaMa(), faq_prompt) def parse_retriever_input(params): return params["messages"][-1].content retrieval_chain = RunnablePassthrough.assign( context=parse_retriever_input | retriever ).assign(answer=document_chain)
قبل تشغيل وكيل RAG الخاص بك، تأكد من أن خادم Ollama قيد التشغيل. ابدأ الخادم بالأمر التالي:
ollama serve
الآن، يمكنك اختبار وكيل RAG الخاص بك عن طريق إرسال استعلام:
from langchain.schema import HumanMessage response = retrieval_chain.invoke({ "messages": [ HumanMessage("I received a damaged item. I want my money back.") ] }) print(response)
إجابة:
"يؤسفني جدًا سماع أنك استلمت منتجًا تالفًا. وفقًا لسياستنا، إذا تلقيت منتجًا تالفًا، فيرجى الاتصال بفريق خدمة العملاء لدينا على الفور وإبلاغه بصور الضرر. وسوف نقوم بترتيب عملية استبدال أو استرداد الأموال لك. هل تريد مني مساعدتك في استرداد الأموال؟ سأحتاج إلى بعض المعلومات منك، مثل رقم طلبك وتفاصيل حول العنصر التالف، هل يمكنك تقديم ذلك حتى أتمكن من المساعدة في معالجة طلبك؟"
باتباع هذه الخطوات، يمكنك إنشاء وكيل RAG محلي يعمل بكامل طاقته وقادر على تحسين أداء LLM الخاص بك في سياق الوقت الفعلي. يمكن تكييف هذا الإعداد ليناسب مجالات ومهام مختلفة، مما يجعله حلاً متعدد الاستخدامات لأي تطبيق يكون فيه الإنشاء المراعي للسياق أمرًا بالغ الأهمية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3