Ukuhlanganisa i-RAG (Isizukulwane Sokubuyisa-Esithuthukisiwe) Nezinhlaka Zewebhu Zesimanje: Umhlahlandlela Osebenzayo
Isingeniso
Eminyakeni yakamuva, umkhakha we-Natural Language Processing (NLP) ubone ukwanda okukhulu ekuthuthukisweni kwamamodeli olimi olukhulu (LLMs) kanye nokusetshenziswa kwawo ezizindeni ezahlukahlukene. Nokho, omunye wemikhawulo emikhulu yama-LLM ukungakwazi ukubuyisa nokuhlanganisa ulwazi lwangaphandle ezimpendulweni zawo. Kulapho amasu e-Retrieval-Augmented Generation (RAG) esebenza khona. Kulesi sihloko, sizohlola ukuqaliswa kwamasu e-RAG sisebenzisa i-FastAPI ne-Django ukuthuthukisa amakhono e-LLM ezinhlelweni zokusebenza zewebhu, okuhlanganisa i-orchestration ne-LangChain yokubuyiswa kwedatha okungenamthungo nokucubungula.
Iyini iRAG?
I-RAG iwubuchule obuhlanganisa amandla amamodeli Wokubuyisa kanye Nesizukulwane ukuze kukhiqizwe izimpendulo ezinembe kakhulu nezifundisayo. Umqondo oyisisekelo nge-RAG uwukuthola kuqala ulwazi olufanele kusizinda solwazi noma kusizindalwazi, bese usebenzisa lolu lwazi ukuze ukhiqize impendulo. Le ndlela ivumela ama-LLM ukuthi asebenzise ulwazi lwangaphandle futhi anikeze izimpendulo ezinembayo nezifundisayo.
Kungani Sebenzisa i-RAG nge-FastAPI ne-Django?
I-FastAPI ne-Django yizinhlaka ezimbili zewebhu ezaziwa kakhulu ezisetshenziselwa ukwakha izinhlelo zokusebenza zewebhu. Bahlinzeka ngengqalasizinda eqinile nengalawuleki yokwakha izinhlelo zokusebenza zewebhu, futhi ingahlanganiswa kalula namasu e-RAG ukuthuthukisa amakhono e-LLM. I-FastAPI wuhlaka lwewebhu lwesimanje oluhlinzeka ngendlela esheshayo nephumelelayo yokwakha izinhlelo zokusebenza zewebhu, kuyilapho i-Django iwuhlaka lwewebhu olusezingeni eliphezulu oluhlinzeka ngezakhiwo, izifanekiso, nama-API wokwakha izinhlelo zokusebenza zewebhu eziqinile.
Ukusebenzisa i-RAG nge-FastAPI
I-FastAPI inikeza indlela elula nephumelelayo yokusebenzisa amasu e-RAG. Nasi isibonelo sokuvimbela ikhodi esibonisa indlela yokusebenzisa i-FastAPI ukuze kusetshenziswe i-RAG:
kusuka ku-fastapi ngenisa i-FastAPI
kusuka ku-langchain ngenisa i-LLMChain
kusuka ku-langchain.chains.openai ngenisa i-OpenAIApi
uhlelo lokusebenza = FastAPI()
@app.get("/rag")
i-async def rag(umbuzo: str):
llm_chain = LLMChain(
llm=OpenAIApi(),
ukubuyisa=LangChainRetrieval(
index=LangChaindex(
igama="inkomba_yami",
imibhalo="doc1", "doc2", "doc3"]
)
)
)
# Khiqiza impendulo usebenzisa iketango le-LLM
impendulo = llm_chain.run(umbuzo)
buyisela {"impendulo": impendulo}
Kulesi sibonelo, sichaza uchungechunge lwe-LLM sisebenzisa ikilasi elithi LLMChain elisuka ku-LangChain. Sibe sesichaza ingxenye yokubuyisa sisebenzisa ikilasi elithi LangChainRetrieval, elisetshenziselwa ukubuyisa ulwazi olubalulekile kusizinda solwazi noma kusizindalwazi. Ekugcineni, sisebenzisa indlela ethi run ukuze sikhiqize impendulo sisebenzisa uchungechunge lwe-LLM.
Ukusebenzisa i-RAG nge-Django
I-Django inikeza uhlaka lwewebhu olusezingeni eliphezulu olungahlanganiswa kalula namasu e-RAG. Nasi isibonelo sebhulokhi yekhodi ebonisa indlela yokusebenzisa i-Django ukuze kusetshenziswe i-RAG:
kusuka ku-django.http ngenisa i-JsonResponse
kusuka ku-langchain ngenisa i-LLMChain
kusuka ku-langchain.chains.openai ngenisa i-OpenAIApi
def rag (isicelo):
# Chaza uchungechunge lwe-LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
ukubuyisa=LangChainRetrieval(
index=LangChaindex(
igama="inkomba_yami",
imibhalo="doc1", "doc2", "doc3"]
)
)
)
# Khiqiza impendulo usebenzisa iketango le-LLM
impendulo = llm_chain.run(request.GET.get("query"))
buyisela i-JsonResponse({"impendulo": impendulo})
Kulesi sibonelo, sichaza umsebenzi wokubuka othi rag othatha umbuzo njengokufakwayo futhi okhiqize impendulo kusetshenziswa uchungechunge lwe-LLM.
I-RAG yokuhlela ngeLangChain
I-LangChain inikeza indlela elula nephumelelayo yokuhlela amasu e-RAG. Nasi isibonelo sebhulokhi yekhodi ebonisa indlela yokusebenzisa i-LangChain ukuze uhlele i-RAG:
kusuka ku-langchain ngenisa i-LLMChain
kusuka ku-langchain.chains.openai ngenisa i-OpenAIApi
# Chaza uchungechunge lwe-LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
ukubuyisa=LangChainRetrieval(
index=LangChaindex(
igama="inkomba_yami",
imibhalo="doc1", "doc2", "doc3"]
)
)
)
# Khiqiza impendulo usebenzisa iketango le-LLM
impendulo = llm_chain.run("Iyini i-RAG?")
phrinta (impendulo)
Kulesi sibonelo, sichaza uchungechunge lwe-LLM sisebenzisa ikilasi elithi LLMChain elisuka ku-LangChain. Sibe sesisebenzisa indlela ethi run ukuze sikhiqize impendulo sisebenzisa uchungechunge lwe-LLM.
Imiyalo/Amazwibela Aphezulu Okuyi-5-10
Nansi imiyalo/izifinyezo eziphezulu ezi-5-10 ezisetshenziswa kakhulu ekusebenziseni i-RAG nge-FastAPI ne-Django:
kusuka ku-langchain ngenisa i-LLMChain: Ngenisa ikilasi elithiLLMChainlisuka kwa-LangChain.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza iketango le-LLM usebenzisa ikilasi elithiLLMChain.impendulo = llm_chain.run(umbuzo): Khiqiza impendulo usebenzisa iketango le-LLM.kusuka ku-fastapi ngenisa i-FastAPI: Ngenisa ikilasi elithiFastAPIukusuka ku-FastAPI.uhlelo lokusebenza = FastAPI(): Chaza uhlelo lokusebenza lwe-FastAPI.@app.get("/rag"): Chaza umzila wephoyinti lokugcina le-RAG.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza iketango le-LLM usebenzisa ikilasi elithiLLMChain.impendulo = llm_chain.run(umbuzo): Khiqiza impendulo usebenzisa iketango le-LLM.kusuka ku-django.http ngenisa i-JsonResponse: Ngenisa ikilasi elithiJsonResponselisuka ku-Django.buyisela i-JsonResponse({"impendulo": impendulo}): Buyisa impendulo ye-JSON nempendulo ekhiqiziwe.
Ukubona
Nakhu okubonwayo kwepayipi le-RAG kusetshenziswa i-Chart.js:
{
"type": "horizontalBar",
"idatha": {
"labels": ["Retrieval", "Generation", "Post-processing"],
"idathasethi": [
{
"label": "RAG Pipeline",
"idatha": [10, 20, 30],
"Umbala wangemuva": [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 206, 86, 0.2)"
],
"Umbala Womngcele": [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)"
],
"BorderWidth": 1
}
]
},
"izinketho": {
"isihloko": {
"Display": iqiniso,
"text": "RAG Pipeline"
},
"izikali": {
"yAxes": [
{
"imikhaza": {
"beginAtZero": kuyiqiniso
}
}
]
}
}
}
Lokhu kubukwa kukhombisa ipayipi le-RAG elinezigaba ezintathu: ukubuyisa, ukukhiqiza, kanye nokucubungula ngemuva.
Isiphetho
Kulesi sihloko, sihlole ukuqaliswa kwamasu e-RAG sisebenzisa i-FastAPI ne-Django ukuthuthukisa amakhono e-LLM ezinhlelweni zokusebenza zewebhu, okuhlanganisa i-orchestration ne-LangChain yokuthola nokucutshungulwa kwedatha okungenamthungo. Siphinde sahlinzeka ngomhlahlandlela osebenzayo wokusebenzisa i-RAG nge-FastAPI ne-Django, okuhlanganisa izibonelo zekhodi kanye nokubonwa kwepayipi le-RAG. Sithemba ukuthi lesi sihloko sinikeze insiza ewusizo konjiniyela abafuna ukusebenzisa amasu e-RAG ezinhlelweni zabo zokusebenza zewebhu.