Paghiusa sa RAG (Retrieval-Augmented Generation) sa Modernong Web Frameworks: Usa ka Praktikal nga Giya
Pasiuna
Sa bag-ohay nga mga tuig, ang natad sa Natural Language Processing (NLP) nakasaksi sa usa ka mahinungdanon nga pagdagsang sa pagpalambo sa Large Language Models (LLMs) ug ang ilang mga aplikasyon sa nagkalain-laing mga dominyo. Bisan pa, usa sa mga dagkong limitasyon sa mga LLM mao ang ilang kawalay katakus sa pagkuha ug pag-apil sa gawas nga kahibalo sa ilang mga tubag. Dinhi diin ang mga teknik sa Retrieval-Augmented Generation (RAG) magamit. Niini nga artikulo, atong susihon ang pagpatuman sa mga teknik sa RAG gamit ang FastAPI ug Django aron mapausbaw ang mga kapabilidad sa LLM sa mga aplikasyon sa web, lakip ang orkestra sa LangChain alang sa seamless data retrieval ug pagproseso.
Unsa ang RAG?
Ang RAG usa ka teknik nga naghiusa sa mga kalig-on sa Retrieval ug Generation nga mga modelo aron makahimo og mas tukma ug impormasyon nga mga tubag. Ang sukaranan nga ideya sa luyo sa RAG mao ang pagkuha una nga may kalabotan nga kasayuran gikan sa base sa kahibalo o database, ug dayon gamiton kini nga kasayuran aron makamugna usa ka tubag. Kini nga pamaagi nagtugot sa mga LLM sa paggamit sa gawas nga kahibalo ug paghatag og mas tukma ug impormasyon nga mga tubag.
Nganong Gamiton ang RAG sa FastAPI ug Django?
Ang FastAPI ug Django mao ang duha sa labing inila nga web frameworks nga gigamit sa paghimo og mga web application. Naghatag sila og usa ka lig-on ug scalable nga imprastraktura alang sa pagtukod sa mga aplikasyon sa web, ug dali nga ma-integrate sa mga teknik sa RAG aron mapalambo ang mga kapabilidad sa LLM. Ang FastAPI usa ka moderno nga web framework nga naghatag usa ka paspas ug episyente nga paagi sa paghimo sa mga aplikasyon sa web, samtang ang Django usa ka taas nga lebel sa web framework nga naghatag usa ka arkitektura, template, ug mga API alang sa paghimo og lig-on nga mga aplikasyon sa web.
Pagpatuman sa RAG sa FastAPI
Naghatag ang FastAPI og yano ug episyente nga paagi sa pagpatuman sa mga teknik sa RAG. Ania ang usa ka pananglitan nga bloke sa code nga nagpakita kung giunsa paggamit ang FastAPI aron ipatuman ang RAG:
gikan sa fastapi import FastAPI
gikan sa langchain import LLMChain
gikan sa langchain.chains.openai import OpenAIApi
app = FastAPI()
@app.get("/rag")
async def rag(pangutana: str):
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
ngalan="my_index",
dokumento=["doc1", "doc2", "doc3"]
)
)
)
# Paghimo usa ka tubag gamit ang kadena sa LLM
tubag = llm_chain.run(query)
balik {"tubag": tubag}
Niini nga pananglitan, among gihubit ang usa ka kadena sa LLM gamit ang klase nga LLMChain gikan sa LangChain. Among gihubit dayon ang usa ka bahin sa pagkuha gamit ang klase nga LangChainRetrieval, nga gigamit sa pagkuha sa may kalabutan nga impormasyon gikan sa base sa kahibalo o database. Sa katapusan, gigamit namo ang run nga pamaagi aron makamugna og tubag gamit ang LLM chain.
Pagpatuman sa RAG uban ni Django
Naghatag ang Django og taas nga lebel sa web framework nga dali nga maapil sa mga teknik sa RAG. Ania ang usa ka pananglitan nga bloke sa code nga nagpakita kung giunsa paggamit ang Django aron ipatuman ang RAG:
gikan sa django.http import JsonResponse
gikan sa langchain import LLMChain
gikan sa langchain.chains.openai import OpenAIApi
def rag(hangyo):
# Ipasabut ang kadena sa LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
ngalan="my_index",
dokumento=["doc1", "doc2", "doc3"]
)
)
)
# Paghimo usa ka tubag gamit ang kadena sa LLM
tubag = llm_chain.run(request.GET.get("query"))
ibalik ang JsonResponse({"tubag": tubag})
Niini nga pananglitan, among gihubit ang usa ka function sa pagtan-aw nga rag nga nagkinahanglan og pangutana isip input ug makamugna og tubag gamit ang LLM chain.
Orchestrating RAG uban sa LangChain
Naghatag ang LangChain og yano ug episyente nga paagi sa pag-orkestrate sa mga teknik sa RAG. Ania ang usa ka pananglitan nga bloke sa code nga nagpakita kung giunsa paggamit ang LangChain aron ma-orkestrate ang RAG:
gikan sa langchain import LLMChain
gikan sa langchain.chains.openai import OpenAIApi
# Ipasabut ang kadena sa LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
ngalan="my_index",
dokumento=["doc1", "doc2", "doc3"]
)
)
)
# Paghimo usa ka tubag gamit ang kadena sa LLM
tubag = llm_chain.run("Unsa ang RAG?")
print(tubag)
Niini nga pananglitan, among gihubit ang usa ka kadena sa LLM gamit ang klase nga LLMChain gikan sa LangChain. Dayon atong gamiton ang run nga pamaagi aron makamugna og tubag gamit ang LLM chain.
Top 5-10 Labing Gigamit nga mga Sugo/Snippet
Ania ang nanguna nga 5-10 nga labing gigamit nga mga mando / snippet alang sa pagpatuman sa RAG sa FastAPI ug Django:
gikan sa langchain import LLMChain: Import angLLMChainnga klase gikan sa LangChain.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Define sa LLM chain gamit angLLMChainclass.response = llm_chain.run(query): Paghimo og tubag gamit ang LLM chain.gikan sa fastapi import FastAPI: Import angFastAPInga klase gikan sa FastAPI.app = FastAPI(): Ipasabot ang FastAPI nga aplikasyon.@app.get("/rag"): Ipasabot ang ruta para sa RAG endpoint.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Ipasabot ang LLM chain gamit angLLMChainclass.response = llm_chain.run(query): Paghimo og tubag gamit ang LLM chain.gikan sa django.http import JsonResponse: Import angJsonResponsenga klase gikan sa Django.return JsonResponse({"response": response}): Ibalik ang JSON nga tubag uban ang nahimo nga tubag.
Pagtan-aw
Ania ang usa ka visualization sa RAG pipeline gamit ang Chart.js:
{
"type": "horizontalBar",
"data": {
"labels": ["Pagbawi", "Generation", "Post-processing"],
"mga dataset": [
{
"label": "RAG Pipeline",
"data": [10, 20, 30],
"kolor sa background": [
"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
}
]
},
"mga kapilian": {
"titulo": {
"display": tinuod,
"text": "RAG Pipeline"
},
"mga timbangan": {
"yAxes": [
{
"tikang": {
"beginAtZero": tinuod
}
}
]
}
}
}
Kini nga visualization nagpakita sa RAG pipeline nga adunay tulo ka yugto: retrieval, generation, ug post-processing.
Konklusyon
Niini nga artikulo, among gisuhid ang pagpatuman sa mga teknik sa RAG gamit ang FastAPI ug Django aron mapausbaw ang mga kapabilidad sa LLM sa mga aplikasyon sa web, lakip ang orkestra sa LangChain alang sa seamless data retrieval ug pagproseso. Naghatag usab kami usa ka praktikal nga giya sa pagpatuman sa RAG sa FastAPI ug Django, lakip ang mga pananglitan sa code ug usa ka pagtan-aw sa pipeline sa RAG. Kami nanghinaut nga kini nga artikulo naghatag usa ka mapuslanon nga kapanguhaan alang sa mga nag-develop nga nagtinguha nga ipatuman ang mga teknik sa RAG sa ilang mga aplikasyon sa web.