RAG-ny (Gözleg-giňeldilen nesil) häzirki zaman web çarçuwalary bilen birleşdirmek: amaly gollanma
Giriş
Soňky ýyllarda Tebigy dilleri gaýtadan işlemek (NLP) pudagy Uly dil modelleriniň (LLM) ösüşiniň we dürli domenlerde ulanylyşynyň ep-esli ýokarlanmagyna şaýat boldy. Şeýle-de bolsa, LLM-leriň esasy çäklendirmelerinden biri, daşarky bilimleri alyp bilmezligi we jogaplaryna goşmazlygydyr. Ynha, “Retrieval-Augmented Generation” (RAG) usullary güýje girýär. Bu makalada, web programmalarynda LLM mümkinçiliklerini ýokarlandyrmak üçin, şol sanda maglumatlary yzygiderli gözlemek we gaýtadan işlemek üçin LangChain bilen orkestr döretmek üçin FastAPI we Django ulanyp, RAG usullarynyň durmuşa geçirilişini öwreneris.
RAG näme?
RAG has takyk we maglumat beriji jogaplary çykarmak üçin Gözleg we nesil modelleriniň güýçli taraplaryny birleşdirýän usuldyr. RAG-yň esasy pikiri ilki bilen bilim bazasyndan ýa-da maglumat bazasyndan degişli maglumatlary almak, soň bolsa jogap döretmek üçin bu maglumatlary ulanmak. Bu çemeleşme LLM-lere daşarky bilimleri ulanmaga we has takyk we maglumat beriji jogaplary bermäge mümkinçilik berýär.
Näme üçin RAG-ny FastAPI we Django bilen ulanmaly?
FastAPI we Django, web programmalaryny gurmak üçin ulanylýan iň meşhur web çarçuwasydyr. Web programmalaryny gurmak üçin ygtybarly we ulaldylan infrastrukturany üpjün edýär we LLM mümkinçiliklerini ýokarlandyrmak üçin RAG usullary bilen aňsat birleşdirilip bilner. “FastAPI” web programmalaryny gurmagyň çalt we täsirli usulyny üpjün edýän häzirki zaman web çarçuwasydyr, Django bolsa berk web programmalaryny gurmak üçin arhitekturany, şablonlary we API-leri üpjün edýän ýokary derejeli web çarçuwasydyr.
RAG-ny FastAPI bilen ýerine ýetirmek
FastAPI RAG usullaryny durmuşa geçirmegiň ýönekeý we täsirli usulyny hödürleýär. Ine, RAG-y durmuşa geçirmek üçin FastAPI-ni nädip ulanmalydygyny görkezýän kod bloky:
`` piton fastapi importyndan FastAPI langchain importyndan LLMChain langchain.chains.openai-dan OpenAIApi import ediň
programma = FastAPI ()
@ app.get ("/ rag") async def rag (talap: str):
llm_chain = LLMChain (
llm = OpenAIApi (),
gözlemek = LangChainRetrieval (
indeks = LangChainIndex (
name = "my_index",
resminamalar = ["doc1", "doc2", "doc3"]
)
)
)
# LLM zynjyryny ulanyp jogap dörediň
jogap = llm_chain.run (talap)
gaýdyp {"jogap": jogap}
``
Bu mysalda, LangChain-den "LLMChain" synpyny ulanyp, LLM zynjyryny kesgitleýäris. Soňra bilim bazasyndan ýa-da maglumat bazasyndan degişli maglumatlary almak üçin ulanylýan "LangChainRetrieval" synpyny ulanyp, gözleg komponentini kesgitleýäris. Ahyrynda, LLM zynjyryny ulanyp jogap döretmek üçin "run" usulyny ulanýarys.
Django bilen RAG-ny durmuşa geçirmek
Django, RAG usullary bilen aňsat birleşdirilip bilinjek ýokary derejeli web çarçuwasyny üpjün edýär. Ine, RAG-ny durmuşa geçirmek üçin Django-ny nädip ulanmalydygyny görkezýän kod bloky:
`` piton django.http-den import JsonResponse langchain importyndan LLMChain langchain.chains.openai-dan OpenAIApi import ediň
def rag (haýyş): # LLM zynjyryny kesgitläň llm_chain = LLMChain ( llm = OpenAIApi (), gözlemek = LangChainRetrieval ( indeks = LangChainIndex ( name = "my_index", resminamalar = ["doc1", "doc2", "doc3"] ) ) )
# LLM zynjyryny ulanyp jogap dörediň
jogap = llm_chain.run (haýyş.GET.get ("talap"))
JsonResponse gaýtar ({"jogap": jogap})
``
Bu mysalda, giriş hökmünde LLM zynjyryny ulanyp jogap berýän “rag” görnüş funksiýasyny kesgitleýäris.
LangChain bilen RAG orkestri
LangChain, RAG usullaryny orkestrlemegiň ýönekeý we täsirli usulyny hödürleýär. Ine, RAG-y orkestrlemek üçin LangChain-den nädip peýdalanmalydygyny görkezýän kod bloky:
`` piton langchain importyndan LLMChain langchain.chains.openai-dan OpenAIApi import ediň
LLM zynjyryny kesgitläň
llm_chain = LLMChain ( llm = OpenAIApi (), gözlemek = LangChainRetrieval ( indeks = LangChainIndex ( name = "my_index", resminamalar = ["doc1", "doc2", "doc3"] ) ) )
LLM zynjyryny ulanyp jogap dörediň
jogap = llm_chain.run ("RAG näme?")
çap (jogap) ``
Bu mysalda, LangChain-den "LLMChain" synpyny ulanyp, LLM zynjyryny kesgitleýäris. Soňra LLM zynjyryny ulanyp jogap döretmek üçin "run" usulyny ulanýarys.
Iň köp ulanylýan buýruklar / bölekler
RAG-ny FastAPI we Django bilen ýerine ýetirmek üçin iň köp ulanylýan 5-10 buýruk / bölek:
- "Langchain importyndan LLMChain": "LLMChain" synpyny LangChain-den import ediň.
- "Llm_chain = LLMChain (llm = OpenAIApi (), gözlemek = LangChainRetrieval (index = LangChainIndex (name =" my_index ", resminamalar = [" doc1 "," doc2 "," doc3 "]))):" LLMChain "synpyny ulanyp LLM zynjyryny kesgitläň.
- "Jogap = llm_chain.run (talap)": LLM zynjyryny ulanyp jogap dörediň.
- "Fastapi import FastAPI" -den: "FastAPI" synpyny FastAPI-den import ediň.
- "Programma = FastAPI ()": FastAPI programmasyny kesgitläň.
- "@ App.get (" / rag ")`: RAG ahyrky nokady üçin ugry kesgitläň.
- "Llm_chain = LLMChain (llm = OpenAIApi (), gözlemek = LangChainRetrieval (index = LangChainIndex (name =" my_index ", resminamalar =
- "response = llm_chain.run (talap)": LLM zynjyryny ulanyp jogap dörediň.
- "Django.http-den JsonResponse import": Django-dan "JsonResponse" synpyny import ediň.
- "JsonResponse gaýtaryň ({" jogap ": jogap})`: Döredilen jogap bilen JSON jogabyny gaýtaryň.
Wizuallaşdyrma
Ine, Chart.js ulanyp, RAG turbageçirijisiniň wizual görnüşi:
json { "görnüş": "gorizontalBar", "maglumatlar": { "bellikler": ["Gözleg", "Nesil", "Gaýtadan işlemek"], "maglumat bazalary": [ { "bellik": "RAG turbageçiriji", "maglumatlar": [10, 20, 30], "backgroundColor": [ "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 } ] }, "opsiýalar": { "title": { "görkezmek": dogry, "text": "RAG turbageçiriji" }, "terezisi": { "yAxes": [ { "bellikler": { "startAtZero": dogry } } ] } } }
Bu wizuallaşdyrma RAG turbageçirijisini üç basgançakly görkezýär: gözlemek, öndürmek we gaýtadan işlemek.
Netije
Bu makalada, web programmalarynda LLM mümkinçiliklerini ýokarlandyrmak üçin, şol sanda maglumatlary yzygiderli gözlemek we gaýtadan işlemek üçin LangChain bilen orkestr döretmek üçin FastAPI we Django ulanyp, RAG usullarynyň durmuşa geçirilişini öwrendik. Şeýle hem, kod mysallary we RAG turbageçirijisini wizuallaşdyrmak ýaly FastAPI we Django bilen RAG-ny durmuşa geçirmek üçin amaly gollanma berdik. Bu makala, web programmalarynda RAG usullaryny ornaşdyrmak isleýän döredijiler üçin peýdaly çeşme berdi diýip umyt edýäris.