...

/

استخدام RAG-Fusion لتحسين السياق

استخدام RAG-Fusion لتحسين السياق

تعرف على مفهوم إعادة الترتيب، بما في ذلك التقنيات مثل RAG-Fusion، واستكشف تنفيذه خطوة بخطوة.

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

لنفترض أننا نبحث عن معلومات عبر الإنترنت. نكتب استعلامنا، فيُظهر النظام قائمة بالنتائج. ولكن هل هي حقًا الأكثر صلة؟ غالبًا ما تُعطي خوارزميات الترتيب التقليدية الأولوية لعوامل مثل مطابقة الكلمات المفتاحية، مما قد يُغفل المعنى الأعمق لبحثك. وهنا يأتي دور إعادة الترتيب.

ما هو إعادة الترتيب؟

إعادة الترتيب هي عملية استرجاع من مرحلتين تُحسّن صلة نتائج البحث. إليك كيفية عملها:

  • الاسترجاع الأولي: يقوم النظام الأساسي، مثل محرك البحث، باسترجاع مجموعة كبيرة من العناصر ذات الصلة المحتملة استنادًا إلى الكلمات الرئيسية أو عوامل أخرى.

  • تحسين القائمة: يقوم نموذج إعادة الترتيب، الذي يعتمد غالبًا على التعلم الآلي، بتحليل كل عنصر في المجموعة ويمنحه درجة جديدة بناءً على صلته صحيح باستعلام المستخدم. يمكن لهذه الدرجة أن تأخذ في الاعتبار عوامل مثل التشابه الدلالي وسياق المستخدم.

  • النتائج المعاد ترتيبها: أخيرًا، يتم إعادة ترتيب العناصر استنادًا إلى درجاتها الجديدة، مع عرض النتائج الأكثر صلة في الأعلى.

أنواع تقنيات إعادة الترتيب

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

  • دمج التوليد المعزز بالاسترجاع (RAG-Fusion): تجمع هذه التقنية بين نموذجين: مُسترجع يبحث عن مستندات ذات صلة محتملة، ونموذج توليد يفهم غرض الاستعلام. يستفيد RAG-Fusion من نقاط قوة كليهما، وغالبًا ما يستخدم مُعيد ترتيب لتحسين الاختيار النهائي للمستندات التي سيُعالجها النموذج التوليدي.

  • إعادة ترتيب المُرمِّز المتقاطع: هنا، يأخذ نموذج مُنفصل يُسمى "المُرمِّز المتقاطع" الاستعلام وكل عنصر مُسترجع إدخال. ثم يُخرِج درجة تُشير إلى مدى مُطابقة العنصر لنية المستخدم. تُعيد هذه الدرجة ترتيب القائمة الأولية وتُعرِض العناصر الأكثر تشابهًا دلاليًا في الأعلى.

ما هو RAG-Fusion؟

يجمع RAG-Fusion بين الاسترجاع (العثور على المستندات ذات الصلة) والتوليد (صياغة الاستعلامات). ويعتمد على برنامج ماجستير في إدارة الأعمال لإنشاء هذه الاستعلامات المتنوعة بناءً على سؤال المستخدم الأصلي. باستخدام برنامج ماجستير في إدارة الأعمال، يستطيع RAG-Fusion استيعاب الفروق الدقيقة في اللغة وإنشاء استعلامات تُمثل قصد المستخدم بفعالية.

RAG-Fusion هي تقنية تعتمد على نماذج RAG لتحسين نتائج البحث، خاصةً في سياق برامج الدردشة الآلية. إليك شرح لكيفية عملها:

  • فهم نية المستخدم: يبدأ RAG-Fusion باستعلام المستخدم. وكما هو الحال في نماذج RAG، يهدف إلى فهم النية صحيح وراء السؤال.

  • إنشاء استعلامات متعددة: يتجاوز RAG-Fusion مجرد استعلام واحد، إذ يستخدم الاستعلام الأصلي لإنشاء صيغ متعددة، ما يُعيد صياغة السؤال من زوايا مختلفة. يُساعد هذا على فهم قصد المستخدم بدقة.

  • الاسترجاع مع التضمين: تُحوَّل الاستعلامات الأصلية والمُولَّدة إلى تمثيل رقمي باستخدام نماذج التضمين. يتيح ذلك بحثًا فعّالاً ضمن مجموعة مستندات أو قاعدة معارف. يتم استرجاع المستندات ذات الصلة بكل استعلام.

  • دمج الرتب التبادلي (RRF): يستخدم RAG-Fusion تقنية دمج الرتب التبادلي (RRF). تُحدد RRF الدرجات بناءً على مدى تطابق المستندات المُسترجعة مع كل استعلام. من المرجح أن تكون المستندات ذات الدرجات العالية عبر استعلامات متعددة أكثر ملاءمةً لهدف المستخدم.

  • دمج المستندات والنتائج: أخيرًا، يجمع RAG-Fusion المستندات المسترجعة ونتائجها المقابلة. هذا يوفر مجموعة أغنى من المعلومات التي يمكن استخدامها لصياغة استجابة.

Press + to interact
The high level workflow of RAG-Fusion technique
The high level workflow of RAG-Fusion technique

التنفيذ خطوة بخطوة

الآن، لنبدأ بتطبيق RAG-Fusion. الخطوات الخمس الأولى مشابهة لتقنية الاستعلامات المتعددة:

Press + to interact
Steps for implementing RAG-Fusion
Steps for implementing RAG-Fusion

تعتبر هذه المكتبات والوحدات ضرورية للخطوات اللاحقة في العملية.

1. استيراد المكتبات الضرورية

سنقوم باستيراد الوحدات المطلوبة من المكتبات المثبتة لتنفيذ الاستعلامات المتعددة:

Press + to interact
import os
import bs4
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from operator import itemgetter
from langchain_openai import ChatOpenAI
from langchain_core.runnables import RunnablePassthrough

2. إعداد مفاتيح API بـ LangSmith و OpenAI

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

Press + to interact
os.environ['LANGCHAIN_TRACING_V2'] = 'true'
os.environ['LANGCHAIN_ENDPOINT'] = 'https://api.smith.langchain.com'
os.environ['LANGCHAIN_API_KEY'] = '' # Add your LangSmith LangChain API key
os.environ['LANGCHAIN_PROJECT']='RAG-Fusion'
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] = "" # Add your OpenAI API key
if OPENAI_API_KEY == "":
raise ValueError("Please set the OPENAI_API_KEY environment variable")
...