Ukudibanisa i-RAG (i-Retrieval-Augmented Generation) kunye neZikhokelo zeWebhu zanamhlanje: Isikhokelo esiSebenzayo
Intshayelelo
Kwiminyaka yakutshanje, icandelo le-Natural Language Processing (NLP) libone ukunyuka okubonakalayo kuphuhliso lweeModeli zoLwimi olukhulu (LLMs) kunye nokusetyenziswa kwazo kwiindawo ezahlukeneyo. Nangona kunjalo, omnye weyona mida iphambili yee-LLMs kukungakwazi kwazo ukufumana kwakhona kunye nokudibanisa ulwazi lwangaphandle kwiimpendulo zabo. Apha kulapho iindlela zokuBuyisa-Augmented Generation (RAG) zingena khona. Kule nqaku, siza kuphonononga ukuphunyezwa kweendlela ze-RAG zisebenzisa i-FastAPI kunye ne-Django ukuphucula amandla e-LLM kwizicelo zewebhu, kubandakanywa i-orchestration kunye neLangChain yokubuyiswa kwedatha engenamthungo kunye nokucubungula.
Yintoni iRAG?
I-RAG bubuchule obudibanisa amandla eemodeli zokuFundisa kunye nokuVelisa ukuvelisa iimpendulo ezichanekileyo nezinolwazi. Ingcamango esisiseko emva kwe-RAG kukuqala ukufumana ulwazi olufanelekileyo kwisiseko solwazi okanye kwisiseko sedatha, kwaye usebenzise olu lwazi ukuvelisa impendulo. Le ndlela ivumela iiLLMs ukuba zisebenzise ulwazi lwangaphandle kwaye zinike iimpendulo ezichanekileyo nezinolwazi.
Kutheni usebenzisa iRAG kunye neFastAPI kunye neDjango?
I-FastAPI kunye ne-Django zimbini zezona zikhokelo zewebhu ezidumileyo ezisetyenziselwa ukwakha izicelo zewebhu. Babonelela ngesiseko esomeleleyo kunye nesakhekekayo sokwakha usetyenziso lwewebhu, kwaye sinokudityaniswa ngokulula neendlela zeRAG zokuphucula amandla eLLM. I-FastAPI yinkqubo yewebhu yanamhlanje ebonelela ngendlela ekhawulezayo nesebenzayo yokwakha izicelo zewebhu, ngelixa i-Django iyisakhelo sewebhu esiphezulu esibonelela ngezakhiwo, iitemplates, kunye ne-APIs zokwakha izicelo zewebhu ezinamandla.
Ukusebenzisa iRAG ngeFastAPI
I-FastAPI inikezela ngendlela elula nesebenzayo yokuphumeza ubuchule be-RAG. Nantsi ibhloko yekhowudi yomzekelo ebonisa indlela yokusebenzisa i-FastAPI ukuphumeza i-RAG:
ukusuka kwi-fastapi yokungenisa i-FastAPI
ukusuka kwi-langchain yokungenisa i-LLMChain
ukusuka langchain.chains.openai ngenisa i-OpenAIApi
app = FastAPI ()
@app.get("/rag")
async def rag(umbuzo: str):
llm_chain = LLMChain(
llm=VulaAIApi(),
retrieval=LangChainRetrieval(
index=LangChaindex(
igama = "isalathi_ sam",
amaxwebhu="doc1", "doc2", "doc3"]
)
)
)
# Yenza impendulo usebenzisa ikhonkco leLLM
impendulo = llm_chain.run(umbuzo)
buyisela {"impendulo": impendulo}
Kulo mzekelo, sichaza ikhonkco leLLM kusetyenziswa iklasi LLMChain esuka eLangChain. Emva koko sichaza icandelo lokubuyisela kusetyenziswa iklasi LangChainRetrieval, esetyenziselwa ukubuyisela ulwazi olufanelekileyo kwisiseko solwazi okanye kwisiseko sedatha. Okokugqibela, sisebenzisa indlela ethi baleka ukwenza impendulo kusetyenziswa ikhonkco leLLM.
Ukuphumeza iRAG ngeDjango
I-Django ibonelela ngesakhelo sewebhu esikwinqanaba eliphezulu esinokudibaniswa lula kunye nobuchule be-RAG. Nantsi ibhloko yekhowudi yomzekelo ebonisa indlela yokusebenzisa i-Django ukuphumeza iRAG:
ukusuka django.http ngenisa JsonResponse
ukusuka kwi-langchain yokungenisa i-LLMChain
ukusuka langchain.chains.openai ngenisa i-OpenAIApi
def rag(isicelo):
# Chaza ikhonkco leLLM
llm_chain = LLMChain(
llm=VulaAIApi(),
retrieval=LangChainRetrieval(
index=LangChaindex(
igama = "isalathi_ sam",
amaxwebhu="doc1", "doc2", "doc3"]
)
)
)
# Yenza impendulo usebenzisa ikhonkco leLLM
impendulo = llm_chain.run(request.GET.get("query"))
buyisela i-JsonResponse({"impendulo": impendulo})
Kulo mzekelo, sichaza umsebenzi wemboniselo rag ethatha umbuzo njengegalelo kwaye ivelise impendulo isebenzisa ikhonkco leLLM.
Ukucwangcisa iRAG ngeLangChain
ILangChain ibonelela ngendlela elula nesebenzayo yokucwangcisa ubuchule beRAG. Nantsi ibhloko yekhowudi yomzekelo ebonisa indlela yokusebenzisa iLangChain ukwenza iRAG:
ukusuka kwi-langchain yokungenisa i-LLMChain
ukusuka langchain.chains.openai ngenisa i-OpenAIApi
# Chaza ikhonkco leLLM
llm_chain = LLMChain(
llm=VulaAIApi(),
retrieval=LangChainRetrieval(
index=LangChaindex(
igama = "isalathi_ sam",
amaxwebhu="doc1", "doc2", "doc3"]
)
)
)
# Yenza impendulo usebenzisa ikhonkco leLLM
impendulo = llm_chain.run("Yintoni iRAG?")
shicilela(impendulo)
Kulo mzekelo, sichaza ikhonkco leLLM kusetyenziswa iklasi LLMChain esuka eLangChain. Emva koko sisebenzisa indlela yokuqhuba ukwenza impendulo kusetyenziswa ikhonkco leLLM.
Ephezulu 5-10 Eyeyona Isetyenziswayo Imiyalelo/iziqwengana
Nantsi eyona miyalelo/iziqwengana eziphezulu ezi-5-10 zokuphumeza iRAG nge-FastAPI kunye ne-Django:
ukusuka kwi-langchain ngenisa i-LLMChain: Ngenisa iklasiLLMChainesuka eLangChain.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza ikhonkco leLLM usebenzisa iklasiLLMChain.impendulo = llm_chain.run(umbuzo): Veza impendulo usebenzisa ikhonkco leLLM.ukusuka kwi-fastapi yokungenisa i-FastAPI: Ngenisa iklasiFastAPIukusuka kwi-FastAPI.usetyenziso = FastAPI (): Chaza isicelo se-FastAPI.@app.get("/rag"): Chaza indlela yeRAG endpoint.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza ikhonkco leLLM usebenzisa iklasiLLMChain.impendulo = llm_chain.run(umbuzo): Veza impendulo usebenzisa ikhonkco leLLM.ukusuka kwi-django.http ngenisa i-JsonImpendulo: Thatha ngaphandle iklasi ethiJsonResponseesuka kwi-Django.buyisela i-JsonResponse({"impendulo": impendulo}): Buyisa impendulo ye-JSON kunye nempendulo eyenziweyo.
Umbono
Nanku umboniso wombhobho weRAG usebenzisa iChart.js:
{
"type": "HorizontalBar",
"idatha": {
"labels": ["Ukubuyiswa", "Isizukulwana", "Ulungiso lwasemva"],
"iiseti zedatha": [
{
"label": "RAG Pipeline",
"idatha": [10, 20, 30],
"umbala ongasemva": [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 206, 86, 0.2)"
],
"Umbala womda": [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)"
],
"BorderWidth": 1
}
]
},
"iinketho": {
"isihloko": {
"bonisa": yinyani,
"text": "RAG Pipeline"
},
"izikali": {
"yAxes": [
{
"amanqaku": {
"beginAtZero": yinyani
}
}
]
}
}
}
Lo mboniso ubonisa umbhobho weRAG onezigaba ezithathu: ukubuyiswa, ukuvelisa, kunye nokulungiswa emva kokulungiswa.
Isiphelo
Kule nqaku, sihlolisise ukuphunyezwa kweendlela ze-RAG zisebenzisa i-FastAPI kunye ne-Django ukuphucula amandla e-LLM kwizicelo zewebhu, kubandakanywa ne-orchestration kunye ne-LangChain yokubuyiswa kwedatha engenamthungo kunye nokucubungula. Siphinde sanikezela ngesikhokelo esisebenzayo sokuphumeza i-RAG nge-FastAPI kunye ne-Django, kubandakanywa nemizekelo yekhowudi kunye nokubonwa kombhobho we-RAG. Siyathemba ukuba eli nqaku libonelele ngesixhobo esiluncedo kubaphuhlisi abafuna ukuphumeza ubuchule be-RAG kwizicelo zabo zewebhu.