كيفية الجمع بين الوكلاء ومتاجر المتجهات في LangChain؟

Kyfyt Aljm Byn Alwkla Wmtajr Almtjhat Fy Langchain



LangChain هو الإطار الذي يصمم نماذج اللغة. وتقوم كميات هائلة من البيانات بتدريب هذه النماذج على اللغة الطبيعية. هناك العديد من قواعد البيانات أو مخازن المتجهات مثل Chroma وما إلى ذلك لإدارة مجموعات البيانات هذه. من خلال الجمع بين مخازن الوكيل والمتجهات، يعمل النموذج بشكل أفضل مع البيانات من مجالات مختلفة. يسمح LangChain باستخدام العديد من متاجر المتجهات لتدريب نموذج اللغة أو برنامج الدردشة الآلي.

مخطط سريع

سوف تظهر هذه المشاركة:







كيفية استخدام وكيل لإرجاع مخرجات منظمة في LangChain



الطريقة الأولى: دمج الوكيل مع متاجر المتجهات



الطريقة الثانية: استخدام الوكيل كجهاز توجيه





الطريقة الثالثة: استخدام الوكيل مع متجر Multi-Hop Vector

خاتمة



كيفية استخدام وكيل لإرجاع مخرجات منظمة في LangChain؟

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

للتعرف على عملية دمج الوكلاء ومخازن المتجهات في LangChain، ما عليك سوى اتباع الخطوات المذكورة:

الخطوة 1: تثبيت الأطر

أولاً، قم بتثبيت وحدة LangChain وتوابعها لدمج الوكلاء ومخازن المتجهات:

نقطة تثبيت لانجشين

في هذا الدليل، نستخدم قاعدة بيانات Chroma التي يمكنها تخزين البيانات في مواقع أو جداول مختلفة:

نقطة تثبيت chromadb

للحصول على فهم أفضل للبيانات، قم بتقسيم الملفات الكبيرة إلى أجزاء أصغر باستخدام رمز tiktoken:

نقطة تثبيت tiktoken

OpenAI هي الوحدة التي يمكن استخدامها لبناء نموذج اللغة الكبير في إطار عمل LangChain:

نقطة تثبيت openai

الخطوة 2: بيئة OpenAI

الخطوة التالية هنا هي إعداد البيئة باستخدام مفتاح واجهة برمجة التطبيقات الخاص بـ OpenAI والذي يمكن استخراجه من حساب OpenAI الرسمي:

يستورد أنت
يستورد com.getpass

أنت . تقريبًا [ 'OPENAI_API_KEY' ] = com.getpass . com.getpass ( 'مفتاح واجهة برمجة تطبيقات OpenAI:' )

الآن، قم بتحميل البيانات من النظام المحلي إلى نظام Google التعاوني لاستخدامها في المستقبل:

من جوجل. وآخرون يستورد ملفات

تم الرفع = ملفات. رفع ( )

الخطوة 3: إنشاء متجر المتجهات

تقوم هذه الخطوة بتكوين المكون الأول لمهمتنا وهو مخزن متجه لتخزين البيانات التي تم تحميلها. يتطلب تكوين مخازن المتجهات المكتبات التي يمكن استيرادها من تبعيات مختلفة لـ LangChain:

من com.langchain. التضمينات . openai يستورد OpenAIEmbeddings

#Vector يخزن التبعية للحصول على قاعدة البيانات أو المتجه المطلوب

من com.langchain. com.vectorstores يستورد صفاء

# يستخدم مقسم النص لتحويل النص الكبير إلى أجزاء أصغر

من com.langchain. text_splitter يستورد CharacterTextSplitter

من com.langchain. llms يستورد OpenAI

من com.langchain. أدوات تحميل المستندات يستورد WebBaseLoader

من com.langchain. السلاسل يستورد استرجاع سؤال وجواب


LLM = OpenAI ( درجة حرارة = 0 )

الخطوة 4: تحديد المسار

بعد استيراد المكتبات، ما عليك سوى تحديد المسار للوصول إلى مخازن المتجهات قبل تخزين البيانات فيها:

من com.pathlib يستورد طريق

ذات الصلة_الأجزاء = [ ]
ل ص في طريق ( '.' ) . مطلق ( ) . القطع :
ذات الصلة_الأجزاء. ألحق ( ص )
لو ذات الصلة_الأجزاء [ - 3 : ] == [ 'لانجشين' , 'المستندات' , 'وحدات' ] :
استراحة
# بيان شرطي داخل الحلقة لتعيين المسار لكل قاعدة بيانات
doc_path = شارع ( طريق ( *relevant_parts ) / 'state_of_the_union.txt' )

الخطوة 5: تحميل البيانات وتقسيمها

الآن، ما عليك سوى تحميل البيانات وتقسيمها إلى أجزاء أصغر لتحسين إمكانية قراءتها وفهمها. قم بإنشاء تضمينات للبيانات عن طريق تحويل النص إلى أرقام مما يجعل مساحات المتجهات الخاصة بها وتخزينها في قاعدة بيانات Chorma:

من com.langchain. أدوات تحميل المستندات يستورد محمل النص

# تحميل مجموعة البيانات من مسارها وتخزين أجزاءها الأصغر في قاعدة البيانات

محمل = محمل النص ( doc_path )

وثائق = محمل. حمولة ( )

text_splitter = CharacterTextSplitter ( حجم قطعة = 2000 , Chunk_overlap = 0 )

النصوص = text_splitter. Split_documents ( وثائق )

# تحويل النص إلى أرقام وتخزين التضمينات في قاعدة البيانات

التضمينات = OpenAIEmbeddings ( )

com.docsearch = صفاء. from_documents ( النصوص , التضمينات , Collection_name = 'حالة الاتحاد' )

الخطوة 6: إنشاء المسترد

للجمع بين مخازن الوكيل والمتجهات، يلزم إنشاء مسترد باستخدام طريقة RetrievalQA() من إطار عمل LangChain. يوصى باستخدام طريقة الاسترداد هذه للحصول على البيانات من مخازن المتجهات باستخدام الوكلاء كأداة للعمل مع قواعد البيانات:

State_of_union = استرجاع سؤال وجواب. from_chain_type (

LLM = LLM , chain_type = 'أشياء' , المسترد = com.docsearch. as_retriever ( )

)

قم بتحميل مجموعة بيانات أخرى لدمج الوكيل مع مجموعات بيانات متعددة أو مخازن متجهة:

محمل = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )

قم بتخزين مجموعة بيانات ruff في chromadb بعد إنشاء الأجزاء الأصغر من البيانات باستخدام متجهات التضمين أيضًا:

مستندات = محمل. حمولة ( )
ruff_texts = text_splitter. Split_documents ( مستندات )
ruff_db = صفاء. from_documents ( ruff_texts , التضمينات , Collection_name = 'راف' )
راف = استرجاع سؤال وجواب. from_chain_type (
LLM = LLM , chain_type = 'أشياء' , المسترد = ruff_db. as_retriever ( )
)

الطريقة الأولى: دمج الوكيل مع متاجر المتجهات

الطريقة الأولى للجمع بين كل من الوكلاء ومخازن المتجهات لاستخراج المعلومات مذكورة أدناه:

الخطوة 1: تكوين الأدوات

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

من com.langchain. عملاء يستورد تهيئة_agent
من com.langchain. عملاء يستورد نوع الوكيل
#الحصول على الأدوات من LangChain لبناء الوكيل
من com.langchain. أدوات يستورد أداة أساسية
من com.langchain. llms يستورد OpenAI
#الحصول على LLMMathChain من السلاسل لبناء النموذج اللغوي
من com.langchain. السلاسل يستورد LLMMathChain
من com.langchain. خدمات يستورد SerpAPIWrapper
من com.langchain. عملاء يستورد أداة

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

أدوات = [
أداة (
اسم = 'نظام ضمان الجودة لحالة الاتحاد' ,
func = State_of_union. يجري ,
وصف = 'يقدم إجابات على الأسئلة المتعلقة بمجموعة البيانات المحملة مع الإدخال كسؤال مكتمل' ,
) ,
أداة (
اسم = 'نظام ضمان الجودة راف' ,
func = راف. يجري ,
وصف = 'يوفر إجابات على الأسئلة المتعلقة بـ ruff (a python linter) مع الإدخال كسؤال مكتمل' ,
) ,
]

الخطوة 2: تهيئة الوكيل

بمجرد تكوين الأدوات، ما عليك سوى تعيين الوكيل في الوسيطة الخاصة بالطريقةInitializa_agent(). الوكيل الذي نستخدمه هنا هو ZERO_SHOT_REACT_DESCRIPTION جنبًا إلى جنب مع الأدوات والماجستير (نموذج اللغة) والمطول:

عامل = تهيئة_agent (

أدوات , LLM , عامل = نوع الوكيل. ZERO_SHOT_REACT_DESCRIPTION , مطول = حقيقي

)

الخطوة 3: اختبار الوكيل

ما عليك سوى تنفيذ الوكيل باستخدام طريقة التشغيل () التي تحتوي على السؤال في الوسيطة الخاصة به:

عامل. يجري (

'ماذا قال الرئيس جو بايدن عن كانجي براون في الخطاب'

)

تعرض لقطة الشاشة التالية الإجابة المستخرجة من مخزني البيانات باستخدام الملاحظة المخزنة في ذاكرة الوكيل:

الطريقة الثانية: استخدام الوكيل كجهاز توجيه

هناك طريقة أخرى للجمع بين كلا المكونين وهي استخدام الوكيل كجهاز توجيه وفيما يلي شرح العملية:

الخطوة 1: تكوين الأدوات

استخدام الوكيل كجهاز توجيه يعني أن نظام RetrievalQA سيعيد المخرجات مباشرة حيث يتم تكوين الأدوات لإرجاع المخرجات مباشرة:

أدوات = [
#تكوين الأدوات المطلوبة لبناء الوكيل للحصول على البيانات من البيانات
أداة (
اسم = 'نظام ضمان الجودة لحالة الاتحاد' ,
func = State_of_union. يجري ,
وصف = 'يقدم إجابات على الأسئلة المتعلقة بمجموعة البيانات المحملة مع الإدخال كسؤال كامل' ,
return_direct = حقيقي ,
) ,
أداة (
اسم = 'نظام ضمان الجودة راف' ,
func = راف. يجري ,
وصف = 'يوفر إجابات على الأسئلة المتعلقة بالراف (بايثون لينتر) مع الإدخال كسؤال كامل' ,
return_direct = حقيقي ,
) ,
]

الخطوة 2: تهيئة الوكيل واختباره

بعد ضبط الأدوات، ما عليك سوى تعيين الوكيل الذي يمكن استخدامه فقط كجهاز توجيه باستخدام طريقة التهيئة_agent():

عامل = تهيئة_agent (

أدوات , LLM , عامل = نوع الوكيل. ZERO_SHOT_REACT_DESCRIPTION , مطول = حقيقي

)

اختبر الوكيل عن طريق إعطاء سؤال الإدخال في طريقة agent.run() عن طريق تنفيذ الأمر التالي:

عامل. يجري (

'ماذا قال الرئيس جو بايدن عن كانجي براون في الخطاب'

)

انتاج |

تعرض لقطة الشاشة الناتجة أن الوكيل قد أعاد ببساطة إجابة السؤال من مجموعة البيانات المستخرجة بواسطة نظام RetrievalQA:

الطريقة الثالثة: استخدام الوكيل مع متجر Multi-Hop Vector

الطريقة الثالثة التي يمكن للمطورين من خلالها الجمع بين كل من مخازن الوكيل والمتجهات هي استعلامات مخزن المتجهات متعددة القفزات. يشرح القسم التالي العملية الكاملة:

الخطوة 1: تكوين الأدوات

الخطوة الأولى هي، كالعادة، تكوين الأدوات المستخدمة لبناء الوكلاء لاستخراج البيانات من مخازن البيانات:

أدوات = [
أداة (
اسم = 'نظام ضمان الجودة لحالة الاتحاد' ,
func = State_of_union. يجري ,
وصف = 'يوفر إجابات على الأسئلة المتعلقة بمجموعة البيانات المحملة مع الإدخال كسؤال مكتمل، دون الإشارة إلى أي ضمائر من المحادثة السابقة' ,
) ,
أداة (
اسم = 'نظام ضمان الجودة راف' ,
func = راف. يجري ,
وصف = 'يوفر إجابات على الأسئلة المتعلقة بمجموعة البيانات المحملة مع الإدخال كسؤال مكتمل، دون الإشارة إلى أي ضمائر من المحادثة السابقة' ,
) ,
]

الخطوة 2: تهيئة الوكيل واختباره

بعد ذلك، قم ببناء متغير الوكيل باستخدام طريقة التهيئة_agent() باسم الوكيل:

عامل = تهيئة_agent (

أدوات , LLM , عامل = نوع الوكيل. ZERO_SHOT_REACT_DESCRIPTION , مطول = حقيقي

)

قم بتشغيل الوكيل باستخدام سؤال متعدد القفزات الذي يحتوي على أكثر من جانب أو ميزة حيث أن مقطع التعليمات البرمجية التالي يحتوي على مثل هذا السؤال:

عامل. يجري (

'ما هي الأداة التي يستخدمها راف لتشغيل دفاتر ملاحظات بايثون وهل ذكر أي من المتحدثين الأداة في عنوانه'

)

انتاج |

تشير لقطة الشاشة التالية إلى أنه يتعين على الوكيل التعامل مع السؤال لفهم مدى تعقيده. لقد أعادت الإجابة التي استخرجها نظام ضمان الجودة من مخازن البيانات المتعددة التي قمنا بتحميلها سابقًا في العملية:

يتعلق الأمر كله بكيفية الجمع بين الوكلاء ومتاجر المتجهات في LangChain.

خاتمة

لدمج الوكلاء مع مخازن المتجهات في LangChain، ابدأ بتثبيت الوحدات لإعداد البيئة وتحميل مجموعات البيانات. قم بتكوين مخازن المتجهات لتحميل البيانات عن طريق تقسيمها إلى أجزاء أصغر أولاً ثم إنشاء نموذج اللغة باستخدام طريقة OpenAI(). قم بتكوين الوكيل لدمجه مع مخزن المتجهات لاستخراج البيانات لأنواع مختلفة من الاستعلامات. لقد تناولت هذه المقالة بالتفصيل عملية الجمع بين الوكلاء ومخازن المتجهات في LangChain.