دمج RAG (جيل الاسترجاع المعزز) مع أطر عمل الويب الحديثة: دليل عملي
مقدمة
في السنوات الأخيرة، شهد مجال معالجة اللغات الطبيعية (NLP) طفرة كبيرة في تطوير نماذج اللغات الكبيرة (LLMs) وتطبيقاتها في مختلف المجالات. ومع ذلك، فإن أحد القيود الرئيسية لماجستير القانون هو عدم قدرتهم على استرجاع ودمج المعرفة الخارجية في استجاباتهم. هذا هو المكان الذي تلعب فيه تقنيات توليد الاسترجاع المعزز (RAG). في هذه المقالة، سوف نستكشف تنفيذ تقنيات RAG باستخدام FastAPI وDjango لتعزيز قدرات LLM في تطبيقات الويب، بما في ذلك التنسيق مع LangChain لاسترجاع البيانات ومعالجتها بسلاسة.
ما هو RAG؟
RAG هي تقنية تجمع بين نقاط قوة نماذج الاسترجاع والتوليد لإنتاج استجابات أكثر دقة وغنية بالمعلومات. الفكرة الأساسية وراء RAG هي استرداد المعلومات ذات الصلة أولاً من قاعدة المعرفة أو قاعدة البيانات، ثم استخدام هذه المعلومات لإنشاء استجابة. يسمح هذا النهج لـ LLMs بالاستفادة من المعرفة الخارجية وتقديم استجابات أكثر دقة وغنية بالمعلومات.
لماذا نستخدم RAG مع FastAPI وDjango؟
يعد FastAPI وDjango من أكثر أطر الويب شيوعًا المستخدمة لبناء تطبيقات الويب. إنها توفر بنية تحتية قوية وقابلة للتطوير لبناء تطبيقات الويب، ويمكن دمجها بسهولة مع تقنيات RAG لتعزيز قدرات LLM. FastAPI هو إطار ويب حديث يوفر طريقة سريعة وفعالة لبناء تطبيقات الويب، بينما Django هو إطار ويب عالي المستوى يوفر بنية وقوالب وواجهات برمجة التطبيقات لبناء تطبيقات ويب قوية.
تنفيذ RAG باستخدام FastAPI
يوفر FastAPI طريقة بسيطة وفعالة لتنفيذ تقنيات RAG. فيما يلي مثال لمقطع التعليمات البرمجية الذي يوضح كيفية استخدام FastAPI لتنفيذ RAG:
من fastapi استيراد FastAPI
من langchain استيراد LLMChain
من langchain.chains.openai قم باستيراد OpenAIApi
التطبيق = FastAPI ()
@app.get("/راج")
خرقة غير متزامنة (الاستعلام: str):
llm_chain = LLMChain(
llm=OpenAIApi(),
استرجاع=LangChainRetrieval(
الفهرس=LangChainIndex(
الاسم = "my_index"،
المستندات=["doc1"، "doc2"، "doc3"]
)
)
)
# قم بإنشاء استجابة باستخدام سلسلة LLM
الاستجابة = llm_chain.run(استعلام)
العودة {"الاستجابة": استجابة}
في هذا المثال، قمنا بتعريف سلسلة LLM باستخدام فئة LLMChain من LangChain. نقوم بعد ذلك بتحديد مكون الاسترجاع باستخدام فئة LangChainRetrieval، والذي يستخدم لاسترداد المعلومات ذات الصلة من قاعدة المعرفة أو قاعدة البيانات. وأخيرًا، نستخدم طريقة التشغيل لإنشاء استجابة باستخدام سلسلة LLM.
تنفيذ RAG مع جانغو
يوفر Django إطار ويب عالي المستوى يمكن دمجه بسهولة مع تقنيات RAG. فيما يلي مثال لكتلة تعليمات برمجية توضح كيفية استخدام Django لتنفيذ RAG:
من django.http استيراد JsonResponse
من langchain استيراد LLMChain
من langchain.chains.openai قم باستيراد OpenAIApi
خرقة ديف (طلب):
# تعريف سلسلة LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
استرجاع=LangChainRetrieval(
الفهرس=LangChainIndex(
الاسم = "my_index"،
المستندات=["doc1"، "doc2"، "doc3"]
)
)
)
# قم بإنشاء استجابة باستخدام سلسلة LLM
الاستجابة = llm_chain.run(request.GET.get("query"))
إرجاع JsonResponse({"response": استجابة})
في هذا المثال، قمنا بتعريف دالة عرض rag التي تأخذ استعلامًا كمدخل وتولد استجابة باستخدام سلسلة LLM.
تنسيق RAG مع LangChain
يوفر LangChain طريقة بسيطة وفعالة لتنسيق تقنيات RAG. فيما يلي مثال لمقطع التعليمات البرمجية الذي يوضح كيفية استخدام LangChain لتنسيق RAG:
من langchain استيراد LLMChain
من langchain.chains.openai قم باستيراد OpenAIApi
# تعريف سلسلة LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
استرجاع=LangChainRetrieval(
الفهرس=LangChainIndex(
الاسم = "my_index"،
المستندات=["doc1"، "doc2"، "doc3"]
)
)
)
# قم بإنشاء استجابة باستخدام سلسلة LLM
الاستجابة = llm_chain.run("ما هو RAG؟")
طباعة (رد)
في هذا المثال، قمنا بتعريف سلسلة LLM باستخدام فئة LLMChain من LangChain. نستخدم بعد ذلك طريقة التشغيل لإنشاء استجابة باستخدام سلسلة LLM.
أهم 5-10 أوامر/مقتطفات الأكثر استخدامًا
فيما يلي أهم 5-10 أوامر/مقتطفات الأكثر استخدامًا لتنفيذ RAG مع FastAPI وDjango:
- من langchain import LLMChain: قم باستيراد فئة LLMChain من LangChain.
llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"])))): حدد سلسلة LLM باستخدام فئةLLMChain.response = llm_chain.run(query): قم بإنشاء استجابة باستخدام سلسلة LLM.من fastapi استيراد FastAPI: قم باستيراد فئةFastAPIمن FastAPI.app = FastAPI(): تحديد تطبيق FastAPI.@app.get("/rag"): حدد مسارًا لنقطة نهاية RAG.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"])))): حدد سلسلة LLM باستخدام فئةLLMChain.response = llm_chain.run(query): قم بإنشاء استجابة باستخدام سلسلة LLM.- من django.http import JsonResponse: قم باستيراد فئة JsonResponse من Django.
10.
return JsonResponse({"response": Response}): قم بإرجاع استجابة JSON مع الاستجابة التي تم إنشاؤها.
التصور
فيما يلي تصور لخط أنابيب RAG باستخدام Chart.js:
{
"النوع": "شريط أفقي"،
"البيانات": {
"التسميات": ["الاسترجاع"، "الإنشاء"، "المعالجة اللاحقة"]،
"مجموعات البيانات": [
{
"label": "خط أنابيب RAG"،
"بيانات": [10، 20، 30]،
"لون الخلفية": [
"رغبا (255، 99، 132، 0.2)"،
"رغبا (54، 162، 235، 0.2)"،
"رغبا (255، 206، 86، 0.2)"
]،
"لون الحدود": [
"رغبا (255، 99، 132، 1)"،
"رغبا (54، 162، 235، 1)"،
"رغبا (255، 206، 86، 1)"
]،
"عرض الحدود": 1
}
]
},
"الخيارات": {
"العنوان": {
"العرض": صحيح،
"نص": "خط أنابيب RAG"
},
"المقاييس": {
"المحاور": [
{
"القراد": {
"beginAtZero": صحيح
}
}
]
}
}
}
يُظهر هذا التصور مسار RAG بثلاث مراحل: الاسترجاع، والتوليد، والمعالجة اللاحقة.
الخلاصة
في هذه المقالة، استكشفنا تنفيذ تقنيات RAG باستخدام FastAPI وDjango لتعزيز قدرات LLM في تطبيقات الويب، بما في ذلك التنسيق مع LangChain لاسترجاع البيانات ومعالجتها بسلاسة. لقد قدمنا أيضًا دليلاً عمليًا لتنفيذ RAG باستخدام FastAPI وDjango، بما في ذلك أمثلة التعليمات البرمجية وتصور لخط أنابيب RAG. نأمل أن تكون هذه المقالة قد وفرت مصدرًا مفيدًا للمطورين الذين يتطلعون إلى تطبيق تقنيات RAG في تطبيقات الويب الخاصة بهم.