استراتيجيات الاسترجاع: المستردون

تعرف على كيفية استرداد أجزاء البيانات ذات الصلة من مخازن المتجهات.

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

لنبدأ بدمج مُسترجعات LangChain. في جميع التمارين التالية، سنُعرّف استعلام المستخدم على أنه "استعلام = من هو آلان تورينج؟"

Vector store-backed retriever

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

Press + to interact
# Define a retriever and retrieve the relevant documents
retriever = db.as_retriever(search_kwargs={"k": 5})
docs = retriever.invoke(query)
# Print the output
print('Relevant documents:')
print('-'*80)
for idx, doc in enumerate(docs):
print(f'Relevant text {idx+1}: {doc.page_content}')
print('-'*80)

في هذا الكود نقوم بالخطوات التالية:

  • السطرين 1-2 : نقوم بتهيئة كائن استرداد من مخزن المتجهات الموجود (db) باستخدام معلمات بحث محددة حيث k=5 مما يعني أنه سيتم استرداد أفضل 5 أجزاء متشابهة.

  • السطر 3 : نقوم بتنفيذ استرجاع استعلام المستخدم والحصول على المستندات ذات الصلة.

  • الأسطر 5-10 : نقوم بطباعة المستندات المسترجعة والمحتوى ذي الصلة بكل منها.

وسيكون إخراج على النحو التالي:

الوثائق ذات الصلة:
--------------------------------------------------------------------------------
النص ذو الصلة 1: كان تورينج عالم رياضيات ومنطق وعلوم كمبيوتر بريطانيًا
--------------------------------------------------------------------------------
النص ذو الصلة 2: التقدم.

مساهمات آلان تورينج في العلوم والتكنولوجيا
--------------------------------------------------------------------------------
النص ذو الصلة 3: العمل على فك شفرة إنجما خلال الحرب العالمية الثانية. تورينج
--------------------------------------------------------------------------------
النص ذو الصلة 4: أبو علوم الكمبيوتر الحديثة وهو معروف بعمله
--------------------------------------------------------------------------------
النص ذو الصلة 5: الذكاء.

العمل الأساسي لألان تورينج، الذي تعمق في
--------------------------------------------------------------------------------

يقوم المسترد باسترجاع الجمل الأكثر صلة بالاستعلام.

Multi-Query Retriever

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

Press + to interact
from langchain.retrievers.multi_query import MultiQueryRetriever
# Define a retriever and retrieve the relevant documents
retriever = db.as_retriever()
llm_retriever = MultiQueryRetriever.from_llm(retriever=retriever, llm=llm)
docs = llm_retriever.invoke(query)
# Print the output
for idx, doc in enumerate(docs):
print(f'Relevant text {idx+1}: {doc.page_content}')
print('-'*80)

في هذا الكود نقوم بالخطوات التالية:

  • السطر 1 : نقوم باستيراد ...