RAG-nin (Axtarış Artırılmış Nəsil) Müasir Veb Çərçivələri ilə inteqrasiyası: Praktik Bələdçi
Giriş
Son illərdə Natural Language Processing (NLP) sahəsi Böyük Dil Modellərinin (LLM) və onların müxtəlif sahələrdə tətbiqlərinin inkişafında əhəmiyyətli artımın şahidi oldu. Bununla belə, LLM-lərin əsas məhdudiyyətlərindən biri onların xarici bilikləri əldə etmək və öz cavablarına daxil etmək qabiliyyətinin olmamasıdır. Burada Axtarış-Augmented Nəsil (RAG) texnikaları işə düşür. Bu yazıda biz internet proqramlarında LLM imkanlarını artırmaq üçün FastAPI və Django istifadə edərək RAG texnikalarının tətbiqini araşdıracağıq, o cümlədən məlumatların fasiləsiz axtarışı və emalı üçün LangChain ilə orkestrasiya.
RAG nədir?
RAG daha dəqiq və məlumatlandırıcı cavablar hazırlamaq üçün Axtarış və Nəsil modellərinin güclü tərəflərini birləşdirən bir texnikadır. RAG-ın arxasında duran əsas ideya əvvəlcə bilik bazasından və ya verilənlər bazasından müvafiq məlumatları əldə etmək və sonra bu məlumatdan cavab yaratmaq üçün istifadə etməkdir. Bu yanaşma LLM-lərə xarici biliklərdən istifadə etməyə və daha dəqiq və informativ cavablar təqdim etməyə imkan verir.
Niyə FastAPI və Django ilə RAG istifadə edin?
FastAPI və Django veb proqramları yaratmaq üçün istifadə edilən ən məşhur veb çərçivələrdən ikisidir. Onlar veb proqramların yaradılması üçün möhkəm və genişlənə bilən infrastruktur təmin edir və LLM imkanlarını artırmaq üçün RAG texnikaları ilə asanlıqla inteqrasiya oluna bilər. FastAPI veb proqramlar yaratmaq üçün sürətli və səmərəli üsul təqdim edən müasir veb çərçivədir, Django isə möhkəm veb proqramları yaratmaq üçün memarlıq, şablonlar və API təmin edən yüksək səviyyəli veb çərçivədir.
** FastAPI ilə RAG tətbiqi**
FastAPI RAG üsullarını həyata keçirmək üçün sadə və səmərəli üsul təqdim edir. Budur, RAG tətbiq etmək üçün FastAPI-dən necə istifadə olunacağını nümayiş etdirən nümunə kod bloku:
fastapi idxal FastAPI
langchain idxal LMChain-dən
langchain.chains.openai-dən OpenAIApi idxal edin
proqram = FastAPI()
@app.get("/rag")
async def rag (sorğu: str):
llm_zəncir = LLMCain(
llm=OpenAIApi(),
axtarış=LangChainRetrieval(
index=LangChainIndex(
ad = "mənim_indeks",
sənədlər =["sənəd1", "sənəd2", "doc3"]
)
)
)
# LLM zəncirindən istifadə edərək cavab yaradın
cavab = llm_chain.run(sorğu)
qaytar {"cavab": cavab}
Bu nümunədə biz LangChain-dən LLMCain sinfindən istifadə edərək LLM zəncirini təyin edirik. Daha sonra bilik bazasından və ya verilənlər bazasından müvafiq məlumatı əldə etmək üçün istifadə edilən LangChainRetrieval sinfindən istifadə edərək axtarış komponentini müəyyən edirik. Nəhayət, LLM zəncirindən istifadə edərək cavab yaratmaq üçün run metodundan istifadə edirik.
Django ilə RAG tətbiqi
Django, RAG texnikaları ilə asanlıqla inteqrasiya oluna bilən yüksək səviyyəli veb çərçivə təmin edir. Budur RAG-ı həyata keçirmək üçün Django-dan necə istifadə olunacağını göstərən nümunə kod bloku:
django.http-dən JsonResponse-u idxal edin
langchain idxal LMChain-dən
langchain.chains.openai-dən OpenAIApi idxal edin
def rag (istək):
# LLM zəncirini müəyyənləşdirin
llm_zəncir = LLMCain(
llm=OpenAIApi(),
axtarış=LangChainRetrieval(
index=LangChainIndex(
ad = "mənim_indeks",
sənədlər =["sənəd1", "sənəd2", "doc3"]
)
)
)
# LLM zəncirindən istifadə edərək cavab yaradın
cavab = llm_chain.run(request.GET.get("sorğu"))
JsonResponse ({"cavab": cavab}) qaytarın
Bu misalda sorğunu giriş kimi qəbul edən və LLM zəncirindən istifadə edərək cavab yaradan “rag” baxış funksiyasını təyin edirik.
LangChain ilə RAG-ın təşkili
LangChain, RAG texnikalarını idarə etmək üçün sadə və səmərəli bir yol təqdim edir. Budur, RAG-ı idarə etmək üçün LangChain-dən necə istifadə olunacağını göstərən nümunə kod bloku:
langchain idxal LMChain-dən
langchain.chains.openai-dən OpenAIApi idxal edin
# LLM zəncirini müəyyənləşdirin
llm_zəncir = LLMCain(
llm=OpenAIApi(),
axtarış=LangChainRetrieval(
index=LangChainIndex(
ad = "mənim_indeks",
sənədlər =["sənəd1", "sənəd2", "doc3"]
)
)
)
# LLM zəncirindən istifadə edərək cavab yaradın
cavab = llm_chain.run("RAG nədir?")
çap (cavab)
Bu nümunədə biz LangChain-dən LLMCain sinfindən istifadə edərək LLM zəncirini təyin edirik. Daha sonra LLM zəncirindən istifadə edərək cavab yaratmaq üçün “run” metodundan istifadə edirik.
Ən çox istifadə olunan 5-10 əmr/parça
FastAPI və Django ilə RAG tətbiq etmək üçün ən çox istifadə edilən 5-10 əmr/parçalar bunlardır:
langchain import LLMCain-dən: LangChain-dənLLMCainsinfini idxal edin.llm_chain = LLMCain(llm=OpenAIApi(), axtarış=LangChainRetrieval(index=LangChainIndex(name="my_index", sənədlər =["doc1", "doc2", "doc3"]))):LLMChasinfindən istifadə edərək LLM zəncirini təyin edin.cavab = llm_chain.run(query): LLM zəncirindən istifadə edərək cavab yaradın.from fastapi import FastAPI: FastAPI-dənFastAPIsinfini idxal edin.app = FastAPI(): FastAPI tətbiqini müəyyənləşdirin.@app.get("/rag"): RAG son nöqtəsi üçün marşrut təyin edin.llm_chain = LLMCain(llm=OpenAIApi(), axtarış=LangChainRetrieval(index=LangChainIndex(name="my_index", sənədlər =["doc1", "doc2", "doc3"]))):LLMChasinfindən istifadə edərək LLM zəncirini təyin edin.cavab = llm_chain.run(query): LLM zəncirindən istifadə edərək cavab yaradın.django.http import JsonResponse: Django-danJsonResponsesinfini idxal edin.return JsonResponse({"response": respond}): Yaradılmış cavabla JSON cavabını qaytarın.
Vizuallaşdırma
Budur, Chart.js istifadə edərək RAG boru kəmərinin vizualizasiyası:
{
"type": "horizontalBar",
"data": {
"etiketlər": ["Alma", "Nəsil", "Post-emal"],
"verilənlər dəsti": [
{
"label": "RAG Pipeline",
"data": [10, 20, 30],
"fon Rəngi": [
"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
}
]
},
"seçimlər": {
"başlıq": {
"ekran": doğru,
"text": "RAG Pipeline"
},
"tərəzi": {
"yAxes": [
{
"gənə": {
"beginAtZero": doğrudur
}
}
]
}
}
}
Bu vizuallaşdırma RAG boru kəmərini üç mərhələdə göstərir: axtarış, generasiya və sonrakı emal.
Nəticə
Bu yazıda biz internet proqramlarında LLM imkanlarını artırmaq üçün FastAPI və Django istifadə edərək RAG texnikalarının tətbiqini araşdırdıq, o cümlədən məlumatların fasiləsiz axtarışı və emalı üçün LangChain ilə orkestrasiya. Biz həmçinin FastAPI və Django ilə RAG-nin həyata keçirilməsi üçün praktiki bələdçi təqdim etdik, o cümlədən kod nümunələri və RAG boru kəmərinin vizuallaşdırılması. Ümid edirik ki, bu məqalə RAG texnikalarını veb tətbiqlərində tətbiq etmək istəyən tərtibatçılar üçün faydalı mənbə təmin etmişdir.