** RAG (እንደገና የተሻሻለ ትውልድ) ከዘመናዊ የድር ማዕቀፎች ጋር ማቀናጀት፡ ተግባራዊ መመሪያ ***
መግቢያ
ከቅርብ ዓመታት ወዲህ፣ የተፈጥሮ ቋንቋ ማቀነባበሪያ (NLP) መስክ በትላልቅ የቋንቋ ሞዴሎች (LLMs) ልማት እና አፕሊኬሽኖቻቸው በተለያዩ ጎራዎች ውስጥ ከፍተኛ እድገት አሳይቷል። ነገር ግን፣ የኤል.ኤል.ኤም.ኤስ ዋና ገደቦች አንዱ የውጭ እውቀትን መልሰው ማግኘት እና ማካተት አለመቻላቸው ነው። የዳግም ማግኛ-የተጨመረው ትውልድ (RAG) ቴክኒኮች የሚጫወቱት እዚህ ነው። በዚህ ጽሑፍ ውስጥ የኤልኤልኤም አቅምን በድር አፕሊኬሽኖች ውስጥ ለማሳደግ FastAPI እና Django ን በመጠቀም የ RAG ቴክኒኮችን መተግበርን እንመረምራለን, ከ LangChain ጋር ኦርኬስትራ ያለችግር የውሂብ መልሶ ማግኘት እና ማቀናበርን ጨምሮ.
** RAG ምንድን ነው?**
RAG የበለጠ ትክክለኛ እና መረጃ ሰጭ ምላሾችን ለማምረት የ Retrieval and Generation ሞዴሎችን ጥንካሬዎች አጣምሮ የያዘ ዘዴ ነው። ከ RAG በስተጀርባ ያለው መሰረታዊ ሀሳብ መጀመሪያ ተዛማጅ መረጃዎችን ከእውቀት መሰረት ወይም የውሂብ ጎታ ማምጣት ነው፣ እና ይህን መረጃ ተጠቅሞ ምላሽ ማመንጨት ነው። ይህ አካሄድ LLMs ውጫዊ እውቀትን እንዲጠቀሙ እና የበለጠ ትክክለኛ እና መረጃ ሰጭ ምላሾችን እንዲሰጡ ያስችላቸዋል።
** RAG በ FastAPI እና Django ለምን ይጠቀሙ?**
FastAPI እና Django የድር አፕሊኬሽኖችን ለመገንባት የሚያገለግሉት በጣም ታዋቂ የድር ማዕቀፎች ናቸው። የድር መተግበሪያዎችን ለመገንባት ጠንካራ እና ሊሰፋ የሚችል መሠረተ ልማት ይሰጣሉ፣ እና የኤል.ኤም.ኤም አቅምን ለማሳደግ ከRAG ቴክኒኮች ጋር በቀላሉ ሊዋሃዱ ይችላሉ። FastAPI የድር መተግበሪያዎችን ለመገንባት ፈጣን እና ቀልጣፋ መንገድ የሚያቀርብ ዘመናዊ የድር ማዕቀፍ ሲሆን ዣንጎ ጠንካራ የድር መተግበሪያዎችን ለመገንባት አርክቴክቸር፣ አብነቶች እና ኤፒአይዎችን የሚያቀርብ ከፍተኛ ደረጃ የድር ማዕቀፍ ነው።
** RAG በ FastAPI በመተግበር ላይ ***
FastAPI የ RAG ቴክኒኮችን ተግባራዊ ለማድረግ ቀላል እና ቀልጣፋ መንገድ ያቀርባል። RAG ን ለመተግበር FastAPI እንዴት እንደሚጠቀሙ የሚያሳይ የምሳሌ ኮድ እገዳ ይኸውና፡
`` ፓይቶን ከ fastapi ማስመጣት FastAPI ከ langchain ማስመጣት LLMChain ከ langchain.chains.openai OpenAIApi አስመጣ
መተግበሪያ = FastAPI()
@app.get("/rag") async def rag(ጥያቄ፡ str)
llm_chain = LLMChain(
llm=OpenAIApi()
መልሶ ማግኘት=LangChainRetrieval(
index=LangChainindex(
ስም = "my_index",
ሰነዶች=["doc1"፣ "doc2"፣ "doc3"]
)
)
)
የኤልኤልኤም ሰንሰለት በመጠቀም ምላሽ ይፍጠሩ
ምላሽ = lm_chain.run (ጥያቄ)
መልስ {"ምላሽ": ምላሽ}
በዚህ ምሳሌ የLLM ሰንሰለትን ከላngChain የ`LLMChain` ክፍልን እንገልፃለን። ከዛም ተዛማጅ መረጃዎችን ከእውቀት መሰረት ወይም ከውሂብ ጎታ ለማውጣት ጥቅም ላይ የሚውለውን `LangChainRetrieval` ክፍልን በመጠቀም የመልሶ ማግኛ አካልን እንገልፃለን። በመጨረሻም የኤል ኤም ኤል ሰንሰለቱን ተጠቅመን ምላሽ ለመስጠት የ`run` ዘዴን እንጠቀማለን።
** RAGን ከጃንጎ ጋር በመተግበር ላይ ***
Django ከ RAG ቴክኒኮች ጋር በቀላሉ ሊዋሃድ የሚችል ከፍተኛ ደረጃ ያለው የድር መዋቅር ያቀርባል. RAG ን ለመተግበር Djangoን እንዴት መጠቀም እንደሚቻል የሚያሳይ የምሳሌ ኮድ እገዳ እዚህ አለ፡-
`` ፓይቶን
ከ django.http አስመጣ JsonResponse
ከ langchain ማስመጣት LLMChain
ከ langchain.chains.openai OpenAIApi አስመጣ
def rag(ጥያቄ)
# የኤልኤልኤም ሰንሰለትን ይግለጹ
llm_chain = LLMChain(
llm=OpenAIApi()
መልሶ ማግኘት=LangChainRetrieval(
index=LangChainindex(
ስም = "my_index",
ሰነዶች=["doc1"፣ "doc2"፣ "doc3"]
)
)
)
የኤልኤልኤም ሰንሰለት በመጠቀም ምላሽ ይፍጠሩ
ምላሽ = llm_chain.run(ጥያቄ.GET.get("ጥያቄ"))
መልስ JsonResponse ({"ምላሽ": ምላሽ})
በዚህ ምሳሌ፣ ጥያቄን እንደ ግብአት የሚወስድ እና የኤል ኤም ኤል ሰንሰለቱን በመጠቀም ምላሽ የሚያመነጭ የእይታ ተግባር ragን እንገልፃለን።
** RAG LangChain በማደራጀት ላይ ***
LangChain የ RAG ቴክኒኮችን ለማቀናጀት ቀላል እና ቀልጣፋ መንገድ ያቀርባል። RAGን ለማቀናጀት LangChainን እንዴት መጠቀም እንደሚቻል የሚያሳይ የምሳሌ ኮድ እገዳ ይኸውና፡
`` ፓይቶን ከ langchain ማስመጣት LLMChain ከ langchain.chains.openai OpenAIApi አስመጣ
የኤልኤልኤም ሰንሰለትን ይግለጹ
llm_chain = LLMChain( llm=OpenAIApi() መልሶ ማግኘት=LangChainRetrieval( index=LangChainindex( ስም = "my_index", ሰነዶች=["doc1"፣ "doc2"፣ "doc3"] ) ) )
የኤልኤልኤም ሰንሰለት በመጠቀም ምላሽ ይፍጠሩ ምላሽ = lm_chain.run ("RAG ምንድን ነው?")
ማተም (ምላሽ)
በዚህ ምሳሌ የLLM ሰንሰለትን ከላngChain የ`LLMChain` ክፍልን እንገልፃለን። ከዚያ የኤልኤልኤም ሰንሰለት በመጠቀም ምላሽ ለመስጠት የ`run` ዘዴን እንጠቀማለን።
**ምርጥ 5-10 በብዛት ጥቅም ላይ የዋሉ ትዕዛዞች/ቅንጣዎች**
RAGን ከFastAPI እና Django ጋር ለመተግበር ከ5-10 በጣም ጥቅም ላይ የዋሉ ትዕዛዞች/ቅንጣፎች እዚህ አሉ፡
1. `ከ langchain አስመጣ LLMChain`፡ የ`LLMChain` ክፍልን ከላngChain አስመጣ።
2. `llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name= "my_index", documents=["doc1", "doc2", "doc3"))))): የ `LLMChain` ክፍልን በመጠቀም የኤልኤልኤም ሰንሰለት ይግለጹ።
3. `ምላሽ = lm_chain.run(ጥያቄ)`፡ የኤልኤልኤም ሰንሰለት በመጠቀም ምላሽ ይፍጠሩ።
4. `ከ fastapi ማስመጣት FastAPI`፡ የ`FastAPI` ክፍልን ከFastAPI አስመጣ።
5. `app = FastAPI()`፡ የFastAPI መተግበሪያን ይግለጹ።
6. `@app.get("/rag")`፡ ለRAG የመጨረሻ ነጥብ መንገድ ይግለጹ።
7. `llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"))))): የ `LLMChain` ክፍልን በመጠቀም የኤልኤልኤም ሰንሰለት ይግለጹ።
8. `ምላሽ = lm_chain.run(ጥያቄ)`፡ የኤልኤልኤም ሰንሰለት በመጠቀም ምላሽ ይፍጠሩ።
9. `ከdjango.http አስመጣ JsonResponse`፡ የ`JsonResponse` ክፍልን ከጃንጎ አስመጣ።
10. `ተመለስ JsonResponse({"ምላሽ"፡ምላሽ})`፡ የJSON ምላሽ ከተፈጠረው ምላሽ ጋር ይመልሱ።
**እይታ**
Chart.jsን በመጠቀም የRAG ቧንቧ መስመር ምስላዊ እይታ እዚህ አለ፡-
``json
{
"አይነት": "horizontalBar",
"ውሂብ": {
"labels": ["ማስረጃ", "ትውልድ", "ድህረ-ሂደት"],
"መረጃዎች": [
{
"label": "RAG ቧንቧ",
"ውሂብ": [10, 20, 30],
"የጀርባ ቀለም": [
"rgba (255, 99, 132, 0.2)",
"rgba (54, 162, 235, 0.2)",
"rgba (255, 206, 86, 0.2)"
]፣
"የድንበር ቀለም":
"rgba (255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba (255, 206, 86, 1)"
]፣
"የድንበር ስፋት"፡ 1
}
]
}
"አማራጮች": {
"ርዕስ": {
"ማሳያ": እውነት,
"text": "RAG የቧንቧ መስመር"
}
"ሚዛኖች": {
"yAxes": [
{
"መዥገሮች": {
"beginAtZero"፡ እውነት
}
}
]
}
}
}
ይህ የእይታ እይታ የ RAG ቧንቧን በሶስት ደረጃዎች ያሳያል፡ ሰርስሮ ማውጣት፣ ማመንጨት እና ድህረ-ሂደት።
** መደምደሚያ**
በዚህ ጽሑፍ ውስጥ የኤልኤልኤም አቅምን በድር አፕሊኬሽኖች ውስጥ ለማሳደግ FastAPI እና Django ን በመጠቀም የ RAG ቴክኒኮችን መተግበሩን መርምረናል፣ ከ LangChain ጋር ኦርኬስትራውን ያለምንም እንከን የለሽ መረጃን ለማውጣት እና ለመስራት። የኮድ ምሳሌዎችን እና የ RAG ቧንቧ መስመር እይታን ጨምሮ RAGን ከ FastAPI እና Django ጋር ለመተግበር ተግባራዊ መመሪያን አቅርበናል። ይህ ጽሑፍ የ RAG ቴክኒኮችን በድር መተግበሪያዎቻቸው ውስጥ ለመተግበር ለሚፈልጉ ገንቢዎች ጠቃሚ ምንጭ እንደሰጠ ተስፋ እናደርጋለን።