Сайжруулсан програм хангамж хөгжүүлэх ажлын урсгалын хувьд RAG-ийг LLM-тэй нэгтгэх
Танилцуулга
Хиймэл оюун ухаан (AI), машин сурах (ML), байгалийн хэл боловсруулах (NLP) зэрэг дэвшилд тулгуурлан програм хангамж хөгжүүлэх орчин хурдацтай хөгжиж байна. Бидний програм хангамжийг хөгжүүлэх аргад хувьсгал хийж буй хоёр гол технологи нь Retrieval-Augmented Generation (RAG) болон Large Language Models (LLMs) юм. Энэ нийтлэлд бид програм хангамжийн инженерчлэлийн үйл явцыг оновчтой болгох, код үүсгэх, хөгжүүлэгчийн бүтээмжийг нэмэгдүүлэх зорилгоор RAG-ийг LLM-тэй нэгтгэх талаар судлах болно.
Retrieval-Augmented Generation (RAG) гэж юу вэ?
RAG нь NLP-ийн олж авах болон үүслээр суурилсан аргуудын давуу талыг хослуулсан техник юм. Энэ нь том хэмжээний текстээс холбогдох мэдээллийг авч, шинэ текст үүсгэхэд ашиглах явдал юм. Энэ арга нь асуултанд хариулах, текстийг нэгтгэн дүгнэх, код үүсгэх зэрэг олон төрлийн NLP даалгавруудад өндөр үр дүнтэй болохыг харуулсан.
Том хэлний загвар (LLM) гэж юу вэ?
LLM нь хүнтэй төстэй хэлийг боловсруулах, үүсгэхэд зориулагдсан мэдрэлийн сүлжээний нэг төрөл юм. Тэдгээрийг ихэвчлэн текстийн асар их мэдээллийн багц дээр сургадаг бөгөөд хэлний орчуулга, текстийг нэгтгэн дүгнэх, код үүсгэх зэрэг тодорхой ажлуудад зориулж нарийн тааруулж болно. LLM нь NLP-ийн олон даалгавруудад хамгийн сүүлийн үеийн үр дүнд хүрсэн бөгөөд чатбот, виртуал туслах, хэлний орчуулгын систем зэрэг програмуудад өргөн хэрэглэгддэг.
Сайжруулсан програм хангамж хөгжүүлэх ажлын урсгалын хувьд RAG-ийг LLM-тэй нэгтгэх
RAG-ийг LLM-тэй нэгтгэх нь бидний програм хангамжийг хөгжүүлэх аргад хувьсгал хийх боломжтой юм. Татаж авахад суурилсан болон үүслээр суурилсан аргуудын давуу талыг нэгтгэснээр RAG нь LLM-д илүү үнэн зөв, хамааралтай кодыг бий болгоход тусална. Энэ нь хөгжүүлэгчийн бүтээмж, кодын чанар, ерөнхий програм хангамж боловсруулах ажлын урсгалыг мэдэгдэхүйц сайжруулахад хүргэж болно.
** Зохион байгуулах хэрэгслүүд: LangChain болон DSPy**
RAG-ийг LLM-тэй нэгтгэхийн тулд бидэнд өгөгдлийн урсгалыг удирдаж, RAG болон LLM бүрэлдэхүүн хэсгүүдийн гүйцэтгэлийг хянах боломжтой зохион байгуулалтын хэрэгслүүд хэрэгтэй. Энэ зорилгоор ашиглаж болох хоёр алдартай зохион байгуулалтын хэрэгсэл бол LangChain болон DSPy юм.
LangChain
LangChain нь Python-ийн нээлттэй эхийн номын сан бөгөөд RAG-д суурилсан програмуудыг бүтээхэд хялбар бөгөөд ойлгомжтой API-г өгдөг. Энэ нь хөгжүүлэгчдэд хүчирхэг програм хангамж хөгжүүлэх ажлын урсгалыг бий болгохын тулд RAG-ийг LLM болон бусад NLP бүрэлдэхүүн хэсгүүдтэй хялбархан нэгтгэх боломжийг олгодог.
DSPy
DSPy бол RAG-д суурилсан програмуудыг бүтээх өндөр түвшний API өгдөг өөр нэг нээлттэй эхийн Python номын сан юм. Энэ нь LLM болон бусад NLP бүрэлдэхүүн хэсгүүдтэй саадгүй ажиллахаар бүтээгдсэн бөгөөд RAG-ийг LLM-тэй нэгтгэхэд хамгийн тохиромжтой сонголт юм.
Код жишээ: LangChain ашиглан RAG-г LLM-тэй нэгтгэх
LangChain ашиглан RAG-ийг LLM-тэй хэрхэн нэгтгэхийг харуулсан энгийн кодын жишээ энд байна.
langchain импортлох
langchain.chains-аас RAGChain импортлох
rag_model = langchain.RAG(
индекс=langchain.Index(
нэр = "миний_индекс",
document="document1", "document2", "document3"],
),
retriever=langchain.Retriever(
нэр = "миний_оролцогч",
загвар = "миний_хэрэглэгчийн_загвар",
),
генератор=langchain.Generator(
нэр = "миний_үүсгүүр",
загвар = "миний_үүсгүүрийн_загвар",
),
)
# LLM загварыг тодорхойлох
llm_model = langchain.LLM(
нэр = "my_llm",
загвар = "my_llm_model",
)
# RAG гинж үүсгэх
rag_chain = RAGChain(
нэр = "миний_нөөшний_гинж",
загвар = өөдөс_загвар,
llm=llm_загвар,
)
# Код үүсгэхийн тулд RAG гинжийг ашиглана уу
код = rag_chain.generate(
input_text="Хоёр бүхэл тоог оролт болгон авч нийлбэрийг нь буцаадаг функц бичнэ үү",
)
хэвлэх (код)
Энэхүү кодын жишээ нь LangChain ашиглан RAG загварыг хэрхэн тодорхойлох, LLM загварыг тодорхойлох, RAG гинж үүсгэх, код үүсгэхийн тулд гинжийг хэрхэн ашиглахыг харуулж байна.
Хамгийн их ашиглагддаг 5-10 тушаал/хэсэг
LangChain болон DSPy ашиглан RAG-ийг LLM-тэй нэгтгэхэд хамгийн их хэрэглэгддэг 5-10 тушаал/хэсэг энд байна.
langchain.RAG(): RAG загварын жишээг үүсгэдэг.langchain.Index(): Баримт бичгийг хадгалах, сэргээх индексийн жишээг үүсгэнэ.langchain.Retriever(): Холбогдох баримт бичгүүдийг сэргээхийн тулд ретриверийн жишээ үүсгэнэ.langchain.Generator(): Шинэ текст үүсгэх генераторын жишээг үүсгэдэг.langchain.LLM(): LLM загварын жишээг үүсгэдэг.RAGChain(): RAG хэлхээний жишээг үүсгэнэ.rag_chain.generate(): Код үүсгэхийн тулд RAG хэлхээг ашигладаг.llm_model.generate(): Код үүсгэхийн тулд LLM загварыг ашигладаг.index.add_document(): Баримт бичгийг индекст нэмнэ.retriever.retrieve(): Retriever ашиглан холбогдох бичиг баримтыг татаж авна.
Дүрслэл
Chart.js ашиглан RAG болон LLM бүрэлдэхүүн хэсгүүдийн дүрслэлийг энд үзүүлэв:
{
"төрөл": "бар",
"өгөгдөл": {
"шошго": ["RAG", "LLM"],
"өгөгдлийн багц": [
{
"label": "Бүрдэл хэсгүүд",
"өгөгдөл": [10, 20],
"backgroundColor": ["#4CAF50", "#FF9800"]
}
]
},
"сонголт": {
"гарчиг": {
"дэлгэц": үнэн,
"текст": "RAG болон LLM бүрэлдэхүүн хэсгүүд"
},
"масштаб": {
"yAxes": [
{
"дэлгэц": үнэн,
"beginAtZero": үнэн
}
]
}
}
}
Энэхүү дүрслэл нь RAG болон LLM загваруудын бүрэлдэхүүн хэсгүүдийн тоог харуулж байна.
Дүгнэлт
RAG-ийг LLM-тэй нэгтгэх нь бидний програм хангамжийг хөгжүүлэх аргад хувьсгал хийх боломжтой юм. Татаж авахад суурилсан болон үүслээр суурилсан аргуудын давуу талыг нэгтгэснээр RAG нь LLM-д илүү үнэн зөв, хамааралтай кодыг бий болгоход тусална. Энэ нь хөгжүүлэгчийн бүтээмж, кодын чанар, ерөнхий програм хангамж боловсруулах ажлын урсгалыг мэдэгдэхүйц сайжруулахад хүргэж болно. LangChain болон DSPy зэрэг зохион байгуулалтын хэрэгслүүдийн тусламжтайгаар хөгжүүлэгчид RAG-ийг LLM болон бусад NLP бүрэлдэхүүн хэсгүүдтэй хялбархан нэгтгэж, хүчирхэг програм хангамж хөгжүүлэх ажлын урсгалыг бий болгож чадна.