RAG (qidiruv-kengaytirilgan avlod)ni zamonaviy veb-ramkalar bilan integratsiyalash: amaliy qo‘llanma
Kirish
So'nggi yillarda tabiiy tillarni qayta ishlash (NLP) sohasi katta til modellari (LLM) va ularning turli sohalarda qo'llanilishining sezilarli o'sishiga guvoh bo'ldi. Biroq, LLMlarning asosiy cheklovlaridan biri ularning javoblariga tashqi bilimlarni olish va qo'shish qobiliyatining yo'qligidir. Bu erda Retrieval-Augmented Generation (RAG) texnikasi o'ynaydi. Ushbu maqolada biz veb-ilovalarda LLM imkoniyatlarini yaxshilash uchun FastAPI va Django-dan foydalangan holda RAG texnikasini amalga oshirishni o'rganamiz, shu jumladan ma'lumotlarni uzluksiz olish va qayta ishlash uchun LangChain bilan orkestratsiya.
RAG nima?
RAG aniqroq va ma'lumot beruvchi javoblarni ishlab chiqarish uchun Qidiruv va Generation modellarining kuchli tomonlarini birlashtirgan texnikadir. RAGning asosiy g'oyasi birinchi navbatda ma'lumot bazasidan yoki ma'lumotlar bazasidan tegishli ma'lumotlarni olish va keyin bu ma'lumotlardan javob yaratish uchun foydalanishdir. Ushbu yondashuv LLMlarga tashqi bilimlardan foydalanish va aniqroq va ma'lumot beruvchi javoblarni taqdim etish imkonini beradi.
Nega FastAPI va Django bilan RAG dan foydalanish kerak?
FastAPI va Django veb-ilovalarni yaratish uchun ishlatiladigan eng mashhur veb-ramkalardan ikkitasidir. Ular veb-ilovalarni yaratish uchun mustahkam va kengaytiriladigan infratuzilmani ta'minlaydi va LLM imkoniyatlarini oshirish uchun RAG texnikasi bilan osongina birlashtirilishi mumkin. FastAPI - bu veb-ilovalarni yaratishning tez va samarali usulini ta'minlovchi zamonaviy veb-ramka, Django esa mustahkam veb-ilovalarni yaratish uchun arxitektura, andozalar va API-larni taqdim etuvchi yuqori darajadagi veb-ramkadir.
** FastAPI bilan RAGni amalga oshirish**
FastAPI RAG texnikasini amalga oshirishning oddiy va samarali usulini taqdim etadi. Mana, RAGni amalga oshirish uchun FastAPI dan qanday foydalanishni ko'rsatadigan misol kod bloki:
fastapi import FastAPI dan
langchain import LMChain dan
langchain.chains.openai import OpenAIApi dan
ilova = FastAPI()
@app.get("/rag")
async def rag (so'rov: str):
llm_chain = LMCchain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
indeks=LangChainIndex(
nomi = "mening_indeks",
hujjatlar = ["doc1", "doc2", "doc3"]
)
)
)
# LLM zanjiri yordamida javob yarating
javob = llm_chain.run (so'rov)
qaytish {"javob": javob}
Ushbu misolda biz LangChain-dan LLMCain klassi yordamida LLM zanjirini aniqlaymiz. Keyin biz ma'lumotlar bazasi yoki ma'lumotlar bazasidan tegishli ma'lumotlarni olish uchun ishlatiladigan "LangChainRetrieval" klassi yordamida qidirish komponentini aniqlaymiz. Nihoyat, biz LLM zanjiri yordamida javob yaratish uchun “run” usulidan foydalanamiz.
** Django bilan RAGni amalga oshirish**
Django RAG texnikasi bilan osongina birlashtirilishi mumkin bo'lgan yuqori darajadagi veb-ramkani taqdim etadi. Mana, RAGni amalga oshirish uchun Django-dan qanday foydalanishni ko'rsatadigan misol kod bloki:
django.http dan JsonResponse import
langchain import LMChain dan
langchain.chains.openai import OpenAIApi dan
def rag (so'rov):
# LLM zanjirini aniqlang
llm_chain = LMCchain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
indeks=LangChainIndex(
nomi = "mening_indeks",
hujjatlar = ["doc1", "doc2", "doc3"]
)
)
)
# LLM zanjiri yordamida javob yarating
javob = llm_chain.run(request.GET.get("so'rov"))
Qaytish JsonResponse({"response": javob})
Ushbu misolda biz so'rovni kirish sifatida qabul qiluvchi va LLM zanjiri yordamida javob hosil qiluvchi "rag" ko'rish funktsiyasini aniqlaymiz.
LangChain bilan RAGni tashkil qilish
LangChain RAG texnikasini boshqarishning oddiy va samarali usulini taqdim etadi. Mana, RAGni boshqarish uchun LangChain-dan qanday foydalanishni ko'rsatadigan misol kod bloki:
langchain import LMChain dan
langchain.chains.openai import OpenAIApi dan
# LLM zanjirini aniqlang
llm_chain = LMCchain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
indeks=LangChainIndex(
nomi = "mening_indeks",
hujjatlar = ["doc1", "doc2", "doc3"]
)
)
)
# LLM zanjiri yordamida javob yarating
javob = llm_chain.run ("RAG nima?")
chop etish (javob)
Ushbu misolda biz LangChain-dan LLMCain klassi yordamida LLM zanjirini aniqlaymiz. Keyin LLM zanjiri yordamida javob yaratish uchun “run” usulidan foydalanamiz.
Eng koʻp ishlatiladigan 5-10 ta buyruq/parchalar
FastAPI va Django bilan RAGni amalga oshirish uchun eng ko'p ishlatiladigan 5-10 ta eng yaxshi buyruqlar/parchalar:
langchain import LLMChain: LangChain-danLLMChainsinfini import qiling.llm_chain = LLMCain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", hujjatlar=["doc1", "doc2", "doc3"]))):LLMChasinfidan foydalanib LLM zanjirini aniqlang.response = llm_chain.run(query): LLM zanjiri yordamida javob yarating.From fastapi import FastAPI: FastAPI-danFastAPIsinfini import qiling.app = FastAPI(): FastAPI ilovasini aniqlang.@app.get("/rag"): RAG oxirgi nuqtasi uchun marshrutni belgilang.llm_chain = LLMCain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", hujjatlar=["doc1", "doc2", "doc3"]))):LLMChasinfidan foydalanib LLM zanjirini aniqlang.response = llm_chain.run(query): LLM zanjiri yordamida javob yarating.django.http import JsonResponse: Django'danJsonResponsesinfini import qiling.return JsonResponse({"response": respond}): Yaratilgan javob bilan JSON javobini qaytaring.
Vizualizatsiya
Mana Chart.js yordamida RAG quvur liniyasining vizualizatsiyasi:
{
"turi": "gorizontalBar",
"ma'lumotlar": {
"yorliqlar": ["Qayta olish", "Asl qilish", "Post qayta ishlash"],
"ma'lumotlar to'plami": [
{
"label": "RAG quvur liniyasi",
"ma'lumotlar": [10, 20, 30],
"fon rangi": [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba (255, 206, 86, 0.2)"
],
"borderColor": [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)"
],
"borderWidth": 1
}
]
},
"variantlar": {
"sarlavha": {
"displey": rost,
"matn": "RAG quvur liniyasi"
},
"tarozi": {
"yAxes": [
{
"tiklash": {
"beginAtZero": rost
}
}
]
}
}
}
Ushbu vizualizatsiya uch bosqichli RAG quvur liniyasini ko'rsatadi: olish, ishlab chiqarish va qayta ishlash.
Xulosa
Ushbu maqolada biz veb-ilovalarda LLM imkoniyatlarini yaxshilash uchun FastAPI va Django-dan foydalangan holda RAG texnikasini amalga oshirishni o'rganib chiqdik, shu jumladan ma'lumotlarni uzluksiz olish va qayta ishlash uchun LangChain bilan orkestratsiya. Shuningdek, biz RAG-ni FastAPI va Django bilan amalga oshirish bo'yicha amaliy qo'llanmani taqdim etdik, shu jumladan kod misollari va RAG quvurining vizualizatsiyasi. Umid qilamizki, ushbu maqola o'z veb-ilovalarida RAG texnikasini joriy qilmoqchi bo'lgan ishlab chiquvchilar uchun foydali manba bo'ldi.