Að samþætta RAG (Retrieval-Augmented Generation) við nútíma veframma: Hagnýt leiðarvísir
Kynning
Undanfarin ár hefur sviði náttúrulegrar málvinnslu (NLP) orðið vitni að verulegri aukningu í þróun stórra tungumálalíkana (LLMs) og notkunar þeirra á ýmsum sviðum. Hins vegar er ein af helstu takmörkunum LLMs vanhæfni þeirra til að sækja og fella utanaðkomandi þekkingu inn í svör sín. Þetta er þar sem Retrieval-Augmented Generation (RAG) tækni kemur við sögu. Í þessari grein munum við kanna innleiðingu RAG tækni með því að nota FastAPI og Django til að auka LLM getu í vefforritum, þar á meðal skipulagningu með LangChain fyrir óaðfinnanlega gagnaöflun og vinnslu.
Hvað er RAG?
RAG er tækni sem sameinar styrkleika Retrieval og Generation líkana til að framleiða nákvæmari og upplýsandi svör. Grunnhugmyndin á bak við RAG er að sækja fyrst viðeigandi upplýsingar úr þekkingargrunni eða gagnagrunni og nota síðan þessar upplýsingar til að búa til svar. Þessi nálgun gerir LLMs kleift að nýta utanaðkomandi þekkingu og veita nákvæmari og upplýsandi svör.
Af hverju að nota RAG með FastAPI og Django?
FastAPI og Django eru tveir af vinsælustu veframmanum sem notaðir eru til að byggja vefforrit. Þau bjóða upp á öflugan og stigstærðan innviði til að byggja upp vefforrit og auðvelt er að samþætta þeim við RAG tækni til að auka LLM getu. FastAPI er nútímalegur veframmi sem veitir hraðvirka og skilvirka leið til að smíða vefforrit, en Django er veframmi á háu stigi sem býður upp á arkitektúr, sniðmát og API til að byggja upp öflug vefforrit.
Innleiða RAG með FastAPI
FastAPI veitir einfalda og skilvirka leið til að innleiða RAG tækni. Hér er dæmi um kóðablokk sem sýnir hvernig á að nota FastAPI til að innleiða RAG:
frá fastapi innflutningur FastAPI
frá langchain import LLMChain
frá langchain.chains.openai innflutningur OpenAIApi
app = FastAPI()
@app.get("/rag")
async def rag (fyrirspurn: str):
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
name="my_index",
skjöl=["doc1", "doc2", "doc3"]
)
)
)
# Búðu til svar með LLM keðjunni
svar = llm_chain.run(fyrirspurn)
skila {"response": response}
Í þessu dæmi skilgreinum við LLM keðju með því að nota LLMCain flokkinn frá LangChain. Við skilgreinum síðan endurheimtunarhluta með því að nota LangChainRetrieval flokkinn, sem er notaður til að sækja viðeigandi upplýsingar úr þekkingargrunni eða gagnagrunni. Að lokum notum við "keyra" aðferðina til að búa til svar með því að nota LLM keðjuna.
Innleiða RAG með Django
Django býður upp á hágæða veframma sem auðvelt er að samþætta við RAG tækni. Hér er dæmi um kóðablokk sem sýnir hvernig á að nota Django til að innleiða RAG:
frá django.http flytja inn JsonResponse
frá langchain import LLMChain
frá langchain.chains.openai innflutningur OpenAIApi
def rag (beiðni):
# Skilgreindu LLM keðjuna
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
name="my_index",
skjöl=["doc1", "doc2", "doc3"]
)
)
)
# Búðu til svar með LLM keðjunni
svar = llm_chain.run(request.GET.get("query"))
skila JsonResponse({"svar": svar})
Í þessu dæmi skilgreinum við útsýnisaðgerð „rag“ sem tekur fyrirspurn sem inntak og býr til svar með því að nota LLM keðjuna.
Hljómsveita RAG með LangChain
LangChain veitir einfalda og skilvirka leið til að skipuleggja RAG tækni. Hér er dæmi um kóðablokk sem sýnir hvernig á að nota LangChain til að skipuleggja RAG:
frá langchain import LLMChain
frá langchain.chains.openai innflutningur OpenAIApi
# Skilgreindu LLM keðjuna
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
name="my_index",
skjöl=["doc1", "doc2", "doc3"]
)
)
)
# Búðu til svar með LLM keðjunni
svar = llm_chain.run("Hvað er RAG?")
prenta (svar)
Í þessu dæmi skilgreinum við LLM keðju með því að nota LLMCain flokkinn frá LangChain. Við notum síðan „run“ aðferðina til að búa til svar með því að nota LLM keðjuna.
Top 5-10 mest notuðu skipanir/bútar
Hér eru 5-10 mest notuðu skipanirnar/bútarnir til að útfæra RAG með FastAPI og Django:
from langchain import LLMChain: Flyttu innLLMCainflokkinn frá LangChain.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])): Skilgreindu LLM keðju með því að notaLLMChainflokkinn.response = llm_chain.run(query): Búðu til svar með því að nota LLM keðjuna.from fastapi import FastAPI: Flyttu innFastAPIflokkinn frá FastAPI.app = FastAPI(): Skilgreindu FastAPI forrit.@app.get("/rag"): Skilgreindu leið fyrir RAG endapunktinn.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])): Skilgreindu LLM keðju með því að notaLLMChainflokkinn.response = llm_chain.run(query): Búðu til svar með því að nota LLM keðjuna.from django.http import JsonResponse: Flyttu innJsonResponseflokkinn frá Django.return JsonResponse({"response": response}): Skilaðu JSON svari með mynduðu svarinu.
Sjónræn
Hér er mynd af RAG leiðslunni með því að nota Chart.js:
{
"type": "horisontalBar",
"gögn": {
"labels": ["Sótt", "Kynslóð", "Eftirvinnsla"],
"gagnasett": [
{
"label": "RAG leiðsla",
"gögn": [10, 20, 30],
"bakgrunnslitur": [
"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
}
]
},
"valkostir": {
"titill": {
"skjá": satt,
"text": "RAG leiðsla"
},
"vog": {
"yAxes": [
{
"tikkar": {
"beginAtZero": satt
}
}
]
}
}
}
Þessi mynd sýnir RAG leiðsluna með þremur stigum: endurheimt, kynslóð og eftirvinnslu.
Niðurstaða
Í þessari grein könnuðum við innleiðingu RAG tækni með því að nota FastAPI og Django til að auka LLM getu í vefforritum, þar á meðal skipulagningu með LangChain fyrir óaðfinnanlega gagnaöflun og vinnslu. Við útveguðum einnig hagnýta leiðbeiningar um innleiðingu RAG með FastAPI og Django, þar á meðal kóðadæmi og sjónmynd af RAG leiðslunni. Við vonum að þessi grein hafi veitt gagnlegt úrræði fyrir forritara sem vilja innleiða RAG tækni í vefforritum sínum.