كيفية استخدام برنامج استرداد المستندات الأصل في LangChain؟

Kyfyt Astkhdam Brnamj Astrdad Almstndat Alasl Fy Langchain



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

سيوضح هذا المنشور عملية استخدام مسترد المستندات الأصلي في LangChain.

كيفية استخدام مسترد المستندات الأصلية في LangChain؟

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







لمعرفة عملية استخدام مسترد المستندات الأصلية في LangChain، ما عليك سوى مراجعة هذا الدليل:



الخطوة 1: تثبيت الوحدات



أولاً، ابدأ في استخدام مسترد المستندات الأصلي عن طريق تثبيت إطار عمل LangChain باستخدام الأمر pip:





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

قم بتثبيت وحدة قاعدة بيانات Chroma لحفظ تضمينات المستند واسترداد البيانات منه:



نقطة تثبيت chromadb

لتثبيت tiktoken وهو أداة رمزية تحصل على الرموز المميزة للمستند عن طريق إنشاء أجزاء صغيرة:

نقطة تثبيت tiktoken

احصل على وحدة OpenAI عن طريق تنفيذ الأمر التالي على دفتر ملاحظات Python للحصول على تبعياته ومكتباته:

نقطة تثبيت openai

الخطوة 2: إعداد البيئة وتحميل البيانات

الخطوة التالية هي إعداد البيئة باستخدام مفتاح API من حساب OpenAI:

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

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

الآن، قم بتحميل المستندات من النظام المحلي بعد استيراد مكتبة الملفات ثم قم باستدعاء طريقة التحميل ():

من جوجل. وآخرون يستورد ملفات
تم الرفع = ملفات. رفع ( )

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

تحتوي الخطوة التالية على الكود الخاص باستيراد المكتبات المطلوبة لاستخدام أدوات استرداد المستندات الأصلية باستخدام إطار عمل LangChain:

من com.langchain. المستردون يستورد ParentDocumentRetriever
من com.langchain. com.vectorstores يستورد صفاء
من com.langchain. التضمينات يستورد OpenAIEmbeddings
من com.langchain. text_splitter يستورد RecursiveCharacterTextSplitter
من com.langchain. تخزين يستورد InMemoryStore
من com.langchain. أدوات تحميل المستندات يستورد محمل النص

قم بتحميل المستند لإنشاء المسترد باستخدام طرق TextLoader() مع مسار الملفات:

لوادر = [
محمل النص ( 'بيانات.txt' ) ,
محمل النص ( 'state_of_the_union.txt' ) ,
]
مستندات = [ ]
ل ل في لوادر:

الخطوة 4: استرداد المستندات الكاملة

بمجرد تحميل المستندات/الملفات إلى النموذج، ما عليك سوى إنشاء تضمينات المستندات وتخزينها في مخازن المتجهات:

Child_splitter = RecursiveCharacterTextSplitter ( حجم قطعة = 400 )

com.vectorstore = صفاء (
Collection_name = 'المستندات_الكاملة' ,
وظيفة التضمين = OpenAIEmbeddings ( )
)

محل = InMemoryStore ( )
المسترد = ParentDocumentRetriever (
com.vectorstore = com.vectorstore ,
docstore = محل ,
Child_splitter = Child_splitter ,
)

الآن، قم باستدعاء التابع add_documents()‎ باستخدام المسترد لإيصال المسترد إلى المستندات:

المسترد. add_documents ( مستندات , معرفات = لا أحد )

يستخرج التعليمة البرمجية التالية تضمينات المستندات التي تم تخزينها في قاعدة البيانات للملفات التي تم تحميلها:

قائمة ( محل. return_keys ( ) )

بعد الحصول على تضمينات المستندات، قم باستدعاء طريقة التشابه_search() مع الاستعلام للحصول على الأجزاء الصغيرة من المستند:

sub_docs = com.vectorstore. تشابه_بحث ( 'بريير العدالة' )

قم باستدعاء طريقة الطباعة () لعرض الأجزاء التي تم استدعاؤها في الكود السابق بناءً على الاستعلام:

مطبعة ( sub_docs [ 0 ] . محتوى الصفحة )

قم باستدعاء وظيفة الاسترداد () الكاملة للحصول على جميع الرموز المميزة المخزنة في قاعدة البيانات باستخدام الكود التالي:

Retrived_docs = المسترد. get_relevant_documents ( 'بريير العدالة' )

ستستغرق طباعة جميع المستندات وقتًا طويلاً وقوة معالجة كبيرة، لذلك ما عليك سوى الحصول على طول المستندات التي تم استردادها مسبقًا:

فقط ( Retrived_docs [ 0 ] . محتوى الصفحة )

الخطوة 5: استرداد قطع أكبر

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

parent_splitter = RecursiveCharacterTextSplitter ( حجم قطعة = 2000 )
Child_splitter = RecursiveCharacterTextSplitter ( حجم قطعة = 400 )
com.vectorstore = صفاء ( Collection_name = 'تقسيم_الآباء' , وظيفة التضمين = OpenAIEmbeddings ( ) )
محل = InMemoryStore ( )

قم بتكوين المسترد للحصول على الرمز الأصغر من مجموعة البيانات الضخمة المخزنة في ' com.vectorstore ' عامل:

المسترد = ParentDocumentRetriever (
com.vectorstore = com.vectorstore ,
docstore = محل ,
Child_splitter = Child_splitter ,
parent_splitter = parent_splitter ,
)

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

المسترد. add_documents ( مستندات )

احصل على طول هذه المستندات من مستندات متغير عبر الأمر أدناه:

فقط ( قائمة ( محل. return_keys ( ) ) )

ما عليك سوى الحصول على جزء أصغر من جزء أكبر حيث تعرض لقطة الشاشة السابقة وجود 23 مستندًا مخزنًا في متجر المتجهات. يتم استخدام الاستعلام للحصول على البيانات ذات الصلة باستخدام تشابه_البحث () طريقة استرجاع البيانات من مخزن المتجهات:

sub_docs = com.vectorstore. تشابه_بحث ( 'بريير العدالة' )

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

مطبعة ( sub_docs [ 0 ] . محتوى الصفحة )

الآن، استخدم المسترد في مجموعة البيانات الكاملة المخزنة في قاعدة البيانات باستخدام الاستعلام كوسيطة للدالة:

Retrived_docs = المسترد. get_relevant_documents ( 'بريير العدالة' )

احصل على طول القطع الكاملة التي تم إنشاؤها وتخزينها في قاعدة البيانات:

فقط ( Retrived_docs [ 0 ] . محتوى الصفحة )

لا يمكننا عرض جميع القطع، ولكن يتم عرض القطعة الأولى برقم الفهرس 0 باستخدام الكود التالي:

مطبعة ( Retrived_docs [ 0 ] . محتوى الصفحة

يتعلق هذا كله بعملية استخدام مسترد المستندات الأصلي في LangChain.

خاتمة

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