Fampidirana ny RAG (Generation Retrieval-Augmented) amin'ny Frameworks Web Modern: Torolalana azo ampiharina
Fampidirana
Tao anatin'ny taona vitsivitsy izay, ny sehatry ny Natural Language Processing (NLP) dia nanatri-maso ny firongatry ny fivoaran'ny Large Language Models (LLMs) sy ny fampiharana azy ireo amin'ny sehatra samihafa. Na izany aza, ny iray amin'ireo fetra lehibe amin'ny LLM dia ny tsy fahafahany mamerina sy mampiditra ny fahalalana ivelany amin'ny valinteniny. Eo no miditra ny teknika Retrieval-Augmented Generation (RAG). Ato amin'ity lahatsoratra ity dia hijery ny fampiharana ny teknika RAG mampiasa FastAPI sy Django isika mba hanatsarana ny fahaiza-manaon'ny LLM amin'ny fampiharana tranonkala, anisan'izany ny orkestra miaraka amin'i LangChain ho an'ny fakana sy fanodinana angon-drakitra.
Inona no atao hoe RAG?
RAG dia teknika iray manambatra ny tanjaky ny modely Retrieval sy Generation mba hamokatra valiny marina sy ahalalana kokoa. Ny hevitra fototra ao ambadiky ny RAG dia ny maka aloha ny vaovao mifandraika amin'ny toby fahalalana na angon-drakitra, ary avy eo dia ampiasao izany fampahalalana izany mba hamoronana valiny. Ity fomba fiasa ity dia ahafahan'ny LLM mampiasa fahalalana ivelany ary manome valiny marina sy mampahafantatra kokoa.
Nahoana no Mampiasa RAG amin'ny FastAPI sy Django?
FastAPI sy Django dia roa amin'ireo rafitra tranonkala malaza indrindra ampiasaina amin'ny fananganana rindranasa tranonkala. Izy ireo dia manome fotodrafitrasa matanjaka sy azo esorina amin'ny fananganana rindranasa tranonkala, ary azo ampidirina mora amin'ny teknika RAG hanatsarana ny fahaizan'ny LLM. FastAPI dia rafitra tranonkala maoderina izay manome fomba haingana sy mahomby amin'ny fananganana rindranasa tranonkala, raha i Django kosa dia rafitra tranonkala avo lenta izay manome maritrano, môdely ary API amin'ny fananganana rindranasa web matanjaka.
Mampihatra RAG miaraka amin'ny FastAPI
FastAPI dia manome fomba tsotra sy mahomby amin'ny fampiharana ny teknika RAG. Ity misy ohatra sakana kaody izay mampiseho ny fomba fampiasana FastAPI amin'ny fampiharana RAG:
avy amin'ny fastapi import FastAPI
avy amin'ny langchain import LLMChain
avy amin'ny langchain.chains.openai import OpenAIApi
app = FastAPI()
@app.get("/rag")
async def rag (fanontaniana: str):
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
anarana="my_index",
documents=["doc1", "doc2", "doc3"]
)
)
)
# Mamorona valiny amin'ny alàlan'ny rojo LLM
valiny = llm_chain.run(fanontaniana)
miverina {"valiny": valiny}
Amin'ity ohatra ity dia mamaritra rojo LLM mampiasa ny kilasy LLMChain avy amin'ny LangChain izahay. Avy eo dia mamaritra ny singa famerenana amin'ny alàlan'ny kilasy LangChainRetrieval, izay ampiasaina haka vaovao mifandraika amin'ny toby fahalalana na angona. Farany, mampiasa ny fomba mihazakazaka izahay hamoronana valiny amin'ny alàlan'ny rojo LLM.
Mampihatra RAG miaraka amin'i Django
Django dia manome rafitra tranonkala avo lenta izay azo ampidirina mora amin'ny teknika RAG. Ity misy ohatra bloc code izay mampiseho ny fomba fampiasana Django amin'ny fampiharana RAG:
avy amin'ny django.http import JsonResponse
avy amin'ny langchain import LLMChain
avy amin'ny langchain.chains.openai import OpenAIApi
def rag (fangatahana):
# Farito ny rojo LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
anarana="my_index",
documents=["doc1", "doc2", "doc3"]
)
)
)
# Mamorona valiny amin'ny alàlan'ny rojo LLM
valiny = llm_chain.run(request.GET.get("query"))
avereno JsonResponse({"valiny": valiny})
Amin'ity ohatra ity, dia mamaritra ny fomba fijery rag izay maka fanontaniana ho fampidirana ary miteraka valiny amin'ny alàlan'ny rojo LLM.
Orchestrating RAG miaraka amin'ny LangChain
LangChain dia manome fomba tsotra sy mahomby handrindrana ny teknika RAG. Ity misy ohatra sakana kaody mampiseho ny fomba fampiasana LangChain handrindrana ny RAG:
avy amin'ny langchain import LLMChain
avy amin'ny langchain.chains.openai import OpenAIApi
# Farito ny rojo LLM
llm_chain = LLMChain(
llm=OpenAIApi(),
retrieval=LangChainRetrieval(
index=LangChainIndex(
anarana="my_index",
documents=["doc1", "doc2", "doc3"]
)
)
)
# Mamorona valiny amin'ny alàlan'ny rojo LLM
valiny = llm_chain.run("Inona ny RAG?")
fanontana (valiny)
Amin'ity ohatra ity dia mamaritra rojo LLM mampiasa ny kilasy LLMChain avy amin'ny LangChain izahay. Avy eo dia mampiasa ny fomba mihazakazaka izahay mba hamoronana valiny amin'ny alàlan'ny rojo LLM.
Didy/Snippet 5-10 ambony indrindra
Ireto ny baiko / snippet 5-10 ambony indrindra amin'ny fampiharana RAG miaraka amin'ny FastAPI sy Django:
avy amin'ny langchain import LLMChain: Manafatra ny kilasyLLMChainavy any LangChain.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Farito ny rojo LLM mampiasa ny kilasyLLMChain.valiny = llm_chain.run(query): Mamorona valiny amin'ny alalan'ny rojo LLM.avy amin'ny fastapi import FastAPI: Ampidiro ny kilasyFastAPIavy amin'ny FastAPI.app = FastAPI(): Farito ny fampiharana FastAPI.@app.get("/rag"): Farito ny lalana iray ho an'ny tondro farany RAG.llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Farito ny rojo LLM mampiasa ny kilasyLLMChain.valiny = llm_chain.run(query): Mamorona valiny amin'ny alalan'ny rojo LLM.avy amin'ny django.http import JsonResponse: Ampidiro avy any Django ny kilasyJsonResponse.Return JsonResponse({"response": response}): Avereno valiny JSON miaraka amin'ny valiny novokarina.
Visualization
Ity misy sary mampiseho ny fantsona RAG mampiasa Chart.js:
{
"type": "Bar horizontal",
"data": {
"labels": ["Retrieval", "Generation", "Post-processing"],
"datasets": [
{
"label": "Rag Pipeline",
"data": [10, 20, 30],
"loko loko": [
"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
}
]
},
"safidy": {
"lohateny": {
"fampisehoana": marina,
"text": "Rag Pipeline"
},
"mizana": {
"yAxes": [
{
"tonga": {
"beginAtZero": marina
}
}
]
}
}
}
Ity sary ity dia mampiseho ny fantsona RAG misy dingana telo: famerenana, famokarana ary fanodinana.
Famaranana
Ao amin'ity lahatsoratra ity, dia nandinika ny fampiharana ny teknika RAG mampiasa FastAPI sy Django izahay mba hanatsarana ny fahaiza-manaon'ny LLM amin'ny rindranasa tranonkala, anisan'izany ny orkestra miaraka amin'i LangChain ho an'ny fakana sy fanodinana angon-drakitra. Nanome torolalana azo ampiharina ihany koa izahay amin'ny fampiharana ny RAG miaraka amin'ny FastAPI sy Django, ao anatin'izany ny ohatra kaody sy ny fijerena ny fantsona RAG. Manantena izahay fa ity lahatsoratra ity dia nanome loharano mahasoa ho an'ny mpamorona mitady hampihatra ny teknika RAG amin'ny rindranasa amin'ny tranonkala.