Kuunganisha RAG (Kizazi Kilichoongezwa Urejeshaji) na Mifumo ya Kisasa ya Wavuti: Mwongozo wa Kiutendaji
Utangulizi
Katika miaka ya hivi majuzi, uga wa Usindikaji wa Lugha Asilia (NLP) umeshuhudia ongezeko kubwa katika uundaji wa Miundo Kubwa ya Lugha (LLMs) na matumizi yake katika nyanja mbalimbali. Hata hivyo, mojawapo ya vikwazo vikubwa vya LLMs ni kutokuwa na uwezo wa kurejesha na kuingiza ujuzi wa nje katika majibu yao. Hapa ndipo mbinu za Retrieval-Augmented Generation (RAG) zinatumika. Katika makala hii, tutachunguza utekelezaji wa mbinu za RAG kwa kutumia FastAPI na Django ili kuboresha uwezo wa LLM katika programu za wavuti, ikiwa ni pamoja na upangaji na LangChain kwa urejeshaji na usindikaji wa data bila mshono.
RAG ni nini?
RAG ni mbinu inayochanganya nguvu za miundo ya Urejeshaji na Uzalishaji ili kutoa majibu sahihi zaidi na yenye taarifa. Wazo la msingi la RAG ni kupata kwanza taarifa muhimu kutoka kwa msingi wa maarifa au hifadhidata, na kisha kutumia taarifa hii kutoa jibu. Mbinu hii inaruhusu LLM kutumia maarifa ya nje na kutoa majibu sahihi na ya kuarifu zaidi.
Kwa nini Utumie RAG na FastAPI na Django?
FastAPI na Django ni mifumo miwili maarufu ya wavuti inayotumika kuunda programu za wavuti. Zinatoa miundombinu thabiti na inayoweza kupanuka kwa ajili ya kujenga programu za wavuti, na zinaweza kuunganishwa kwa urahisi na mbinu za RAG ili kuongeza uwezo wa LLM. FastAPI ni mfumo wa kisasa wa wavuti ambao hutoa njia ya haraka na bora ya kuunda programu za wavuti, wakati Django ni mfumo wa wavuti wa hali ya juu ambao hutoa usanifu, violezo, na API za kuunda programu dhabiti za wavuti.
** Utekelezaji wa RAG na FastAPI**
FastAPI hutoa njia rahisi na bora ya kutekeleza mbinu za RAG. Hapa kuna mfano wa kuzuia nambari ambayo inaonyesha jinsi ya kutumia FastAPI kutekeleza RAG:
kutoka kwa fastapi ingiza FastAPI
kutoka kwa langchain kuagiza LLMChain
kutoka langchain.chains.openai kuleta OpenAIApi
app = FastAPI()
@app.get("/rag")
async def rag(hoja: str):
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
jina = "index_yangu",
hati="doc1", "doc2", "doc3"]
)
)
)
# Toa jibu kwa kutumia mnyororo wa LLM
majibu = llm_chain.run(swali)
rudisha {"jibu": majibu}
Katika mfano huu, tunafafanua mlolongo wa LLM kwa kutumia darasa la LLMChain kutoka LangChain. Kisha tunafafanua kipengele cha urejeshaji kwa kutumia darasa la LangChainRetrieval, ambalo hutumika kupata taarifa muhimu kutoka kwa msingi wa maarifa au hifadhidata. Hatimaye, tunatumia mbinu ya run kutoa jibu kwa kutumia msururu wa LLM.
Kutekeleza RAG na Django
Django hutoa mfumo wa wavuti wa hali ya juu ambao unaweza kuunganishwa kwa urahisi na mbinu za RAG. Hapa kuna mfano wa kuzuia nambari ambayo inaonyesha jinsi ya kutumia Django kutekeleza RAG:
kutoka kwa django.http ingiza JsonResponse
kutoka kwa langchain kuagiza LLMChain
kutoka langchain.chains.openai kuleta OpenAIApi
def rag (ombi):
# Bainisha mnyororo wa LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
jina = "index_yangu",
hati="doc1", "doc2", "doc3"]
)
)
)
# Toa jibu kwa kutumia mnyororo wa LLM
majibu = llm_chain.run(request.GET.get("swali"))
rudisha JsonResponse({"jibu": majibu})
Katika mfano huu, tunafafanua chaguo la kukokotoa la kutazama rag ambalo huchukua hoja kama ingizo na kutoa jibu kwa kutumia msururu wa LLM.
Kupanga RAG na LangChain
LangChain hutoa njia rahisi na bora ya kupanga mbinu za RAG. Hapa kuna mfano wa kizuizi cha nambari ambacho kinaonyesha jinsi ya kutumia LangChain kupanga RAG:
kutoka kwa langchain kuagiza LLMChain
kutoka langchain.chains.openai kuleta OpenAIApi
# Bainisha mnyororo wa LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
jina = "index_yangu",
hati="doc1", "doc2", "doc3"]
)
)
)
# Toa jibu kwa kutumia mnyororo wa LLM
majibu = llm_chain.run("RAG ni nini?")
chapa (jibu)
Katika mfano huu, tunafafanua mlolongo wa LLM kwa kutumia darasa la LLMChain kutoka LangChain. Kisha sisi hutumia mbinu ya run kutoa jibu kwa kutumia msururu wa LLM.
Amri/Vijisehemu 5-10 Bora Zaidi
Hapa kuna amri / vijisehemu 5-10 vya juu zaidi vya kutekeleza RAG na FastAPI na Django:
kutoka langchain kuleta LLMChain: Leta darasa laLLMChainkutoka LangChain.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Bainisha msururu wa LLM ukitumia darasa laLLMChain.jibu = llm_chain.run(swali): Toa jibu kwa kutumia msururu wa LLM.kutoka fastapi kuleta FastAPI: Leta darasa laFastAPIkutoka FastAPI.programu = FastAPI(): Bainisha programu ya FastAPI.@app.get("/rag"): Bainisha njia ya sehemu ya mwisho ya RAG.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Bainisha msururu wa LLM kwa kutumia darasa laLLMChain.jibu = llm_chain.run(swali): Toa jibu kwa kutumia msururu wa LLM.kutoka kwa django.http ingiza JsonResponse: Leta darasa laJsonResponsekutoka kwa Django.return JsonResponse({"response": response}): Rejesha jibu la JSON lenye jibu lililotolewa.
Taswira
Hapa kuna taswira ya bomba la RAG kwa kutumia Chart.js:
{
"type": "horizontalBar",
"data": {
"labels": ["Retrieval", "Generation", "Baada ya usindikaji"],
"seti za data": [
{
"label": "Bomba la RAG",
"data": [10, 20, 30],
"backgroundRangi": [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 206, 86, 0.2)"
],
"borderColour": [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)"
],
"upana wa mpaka": 1
}
]
},
"chaguo": {
"kichwa": {
"onyesha": kweli,
"text": "Bomba la RAG"
},
"mizani": {
"yAxes": [
{
"tiki": {
"beginAtZero": kweli
}
}
]
}
}
}
Taswira hii inaonyesha bomba la RAG lenye hatua tatu: urejeshaji, uundaji, na uchakataji.
Hitimisho
Katika makala haya, tulichunguza utekelezaji wa mbinu za RAG kwa kutumia FastAPI na Django ili kuboresha uwezo wa LLM katika programu za wavuti, ikiwa ni pamoja na upangaji na LangChain kwa urejeshaji na usindikaji wa data bila mshono. Pia tulitoa mwongozo wa vitendo wa kutekeleza RAG na FastAPI na Django, ikijumuisha mifano ya msimbo na taswira ya bomba la RAG. Tunatumahi kuwa nakala hii imetoa nyenzo muhimu kwa wasanidi wanaotafuta kutekeleza mbinu za RAG katika programu zao za wavuti.