Динамик програм хангамжийн архитектурт зориулсан RAG-ийг LLM-тэй нэгтгэх нь: Практик гарын авлага | B4N1

Динамик програм хангамжийн архитектурт зориулсан RAG-ийг LLM-тэй нэгтгэх нь: Практик гарын авлага

8 months ago · b4n1 Read time: 3 min

** Динамик програм хангамжийн архитектурт зориулсан RAG-ийг LLM-тэй нэгтгэх нь: Практик гарын авлага**

Танилцуулга

Сүүлийн жилүүдэд Large Language Models (LLMs) болон Retrieval-Augmented Generation (RAG) техникүүд бий болсноор програм хангамжийн архитектурын салбарт ихээхэн өөрчлөлт гарсан. Эдгээр хоёр технологийн хамтын ажиллагаа нь бидний програм хангамжийн системийг зохион бүтээх, хөгжүүлэх аргад хувьсгал хийх боломжтой юм. Энэ нийтлэлд бид динамик програм хангамжийн архитектурт зориулсан RAG-ийг LLM-тэй нэгтгэх, түүний дотор LangChain болон DSPy зэрэг зохион байгуулалтын хэрэгслийг ашиглан хэрэгжүүлэх стратегиудыг судлах болно.

RAG гэж юу вэ?

RAG нь өндөр чанартай текст гаралтыг гаргахын тулд Retrieval-д суурилсан болон Generation-д суурилсан загваруудын давуу талыг хослуулсан техник юм. RAG-ийн үндсэн санаа нь том корпусаас холбогдох баримт бичиг эсвэл хэсгүүдийг сонгохдоо сэргээх загварыг ашиглах, дараа нь эдгээр олж авсан хэсгүүдэд үндэслэн текст үүсгэхийн тулд үеийн загварыг ашиглах явдал юм. Энэ арга нь асуултанд хариулах, текстийг нэгтгэн дүгнэх, харилцан ярианы хиймэл оюун ухаан гэх мэт ажлуудад мэдэгдэхүйц сайжруулалтыг харуулсан.

** LLM гэж юу вэ?**

LLM нь хүнийхтэй төстэй хэлний гаралтыг бий болгохын тулд их хэмжээний текст өгөгдөл дээр сургагдсан хиймэл оюун ухааны загварын нэг төрөл юм. Эдгээр загварууд нь ихэвчлэн трансформаторын архитектур дээр суурилдаг бөгөөд байгалийн хэлээр боловсруулах өргөн хүрээний ажлуудад хамгийн сүүлийн үеийн үр дүнд хүрсэн. LLM нь маш уян хатан бөгөөд хэлний орчуулга, текстийг нэгтгэн дүгнэх, харилцан ярианы хиймэл оюун ухаан зэрэг ажлуудад ашиглаж болно.

Яагаад RAG-г LLM-тэй нэгтгэх ёстой вэ?

RAG-ийг LLM-тэй нэгтгэх нь динамик програм хангамжийн архитектурт хэд хэдэн давуу талыг санал болгодог.

  1. Сайжруулсан нарийвчлал: RAG нь LLM-д том корпусаас холбогдох баримт бичиг эсвэл хэсгүүдийг сонгоход тусалж, илүү үнэн зөв, мэдээлэл сайтай текст гаралтыг бий болгодог.
  2. Үр ашгийг нэмэгдүүлэх: RAG нь зөвхөн хамгийн хамааралтай баримт бичиг эсвэл хэсгүүдийг сонгох замаар LLM-ийн тооцооллын нэмэлт зардлыг бууруулж, хариу өгөх хугацааг хурдан болгодог.
  3. Сайжруулсан уян хатан байдал: RAG-ийг хэрэглэгчийн сонголт, шаардлагын өөрчлөлтөд дасан зохицоход ашиглах боломжтой бөгөөд LLM-д илүү хамааралтай, сонирхол татахуйц текст гаралтыг бий болгох боломжийг олгодог.

Хэрэгжүүлэх стратеги

RAG-ийг LLM-тэй нэгтгэх хэд хэдэн хэрэгжүүлэх стратеги байдаг бөгөөд үүнд:

  1. LangChain: LangChain нь RAG-д суурилсан загваруудыг бүтээхэд хялбар бөгөөд ойлгомжтой API өгдөг нээлттэй эхийн номын сан юм. Энэ нь өргөн хүрээний LLM-ийг дэмждэг бөгөөд RAG-ийн нарийн төвөгтэй архитектурыг хэрэгжүүлэхэд ашиглаж болно.
  2. DSPy: DSPy нь RAG-д суурилсан загваруудыг хэрэгжүүлэх энгийн бөгөөд үр дүнтэй аргыг санал болгодог Python номын сан юм. Энэ нь өргөн хүрээний LLM-ийг дэмждэг бөгөөд RAG-ийн нарийн төвөгтэй архитектурыг хэрэгжүүлэхэд ашиглаж болно.

Код жишээ

RAG-ийг LLM-тэй нэгтгэхийн тулд LangChain-ийг хэрхэн ашиглахыг харуулсан энгийн кодын жишээ энд байна.

langchain импортлох
langchain.chains-аас RAGChain импортлох
langchain.llms-аас LLaMA импортлох


лама = LLaMA()

# RAGChain загвар үүсгэх
rag_chain = RAGChain(лама, сэргээх_загвар = "t5-жижиг")

# Сануулгыг тодорхойл
prompt = "Францын нийслэл гэж юу вэ?"

# Текст гаралт үүсгэх
гаралт = rag_chain.run(шалгах)

хэвлэх (гаралт)

Энэхүү кодын жишээ нь LLaMA загварыг сэргээх загвартай нэгтгэсэн RAGChain загварыг үүсгэхийн тулд LangChain-ийг хэрхэн ашиглахыг харуулж байна. RAGChain загварыг дараа нь сануулга дээр үндэслэн текст гаралтыг бий болгоход ашигладаг.

Хамгийн их ашиглагддаг 5-10 тушаал/хэсэг

RAG-ийг LLM-тэй нэгтгэхэд хамгийн их хэрэглэгддэг 5-10 тушаал/хэсэг энд байна:

  1. langchain.RAGChain(llama, retrieval_model="t5-small"): LLaMA загварыг сэргээх загвартай нэгтгэсэн RAGChain загварыг үүсгэнэ.
  2. llama.run(prompt): LLaMA загварыг ашиглан prompt дээр үндэслэн текст гаралтыг үүсгэдэг.
  3. rag_chain.run(prompt): RAGChain загварыг ашиглан мэдэгдэл дээр үндэслэн текст гаралтыг үүсгэдэг.
  4. langchain.chains.RAGChain(llama, retrieval_model="t5-small", max_length=1024): LLaMA загварыг сэргээх загвартай нэгтгэсэн RAGChain загварыг үүсгэж, гаралтын текстийн хамгийн их уртыг тохируулна.
  5. llama.get_input(prompt): LLaMA загварын оролтын текстийг буцаана.
  6. rag_chain.get_output(prompt): RAGChain загварын гаралтын текстийг буцаана.
  7. langchain.chains.RAGChain(llama, retrieval_model="t5-small", batch_size=32): LLaMA загварыг сэргээх загвартай нэгтгэсэн RAGChain загварыг үүсгэж, багцын хэмжээг тохируулна.
  8. llama.get_output(prompt): LLaMA загварын гаралтын текстийг буцаана.
  9. rag_chain.get_input(prompt): RAGChain загварын оролтын текстийг буцаана.
  10. langchain.chains.RAGChain(llama, retrieval_model="t5-small", device="cuda"): LLaMA загварыг сэргээх загвартай нэгтгэсэн RAGChain загварыг үүсгэж төхөөрөмжийг CUDA болгож тохируулна.

Дүрслэл

Chart.js ашиглан RAGChain загварын энгийн дүрслэл энд байна:

{
  "төрөл": "бар",
  "өгөгдөл": {
    "шошго": ["LLaMA", "RAGChain"],
    "өгөгдлийн багц": [
      {
        "label": "Нягт байдал",
        "өгөгдөл": [0.8, 0.9],
        "backgroundColor": ["#FF6384", "#36A2EB"]
      }
    ]
  },
  "сонголт": {
    "гарчиг": {
      "дэлгэц": үнэн,
      "текст": "RAGChain загварын нарийвчлал"
    },
    "масштаб": {
      "yAxes": [
        {
          "хачиг": {
            "beginAtZero": үнэн
          }
        }
      ]
    }
  }
}

Энэхүү дүрслэл нь LLaMA загвар болон RAGChain загварын нарийвчлалыг харуулж байна.

Дүгнэлт

RAG-ийг LLM-тэй нэгтгэх нь динамик програм хангамжийн архитектурт хэд хэдэн давуу талыг санал болгодог бөгөөд үүнд нарийвчлал сайжирч, үр ашгийг дээшлүүлж, уян хатан байдал нэмэгддэг. LangChain болон DSPy нь RAG дээр суурилсан загваруудыг хэрэгжүүлэхэд ашиглаж болох хоёр алдартай зохион байгуулалтын хэрэгсэл юм. Энэ нийтлэлд өгөгдсөн хэрэгжүүлэх стратеги болон кодын жишээг дагаснаар хөгжүүлэгчид LLM-ийг хайлт хийх загвартай нэгтгэсэн нарийн төвөгтэй RAG архитектурыг бий болгож чадна. RAG-ийг LLM-тэй нэгтгэх хамгийн их ашиглагддаг 5-10 тушаал/хэсэгийг мөн лавлагаа болгон өгсөн болно.


Have Questions?

Let's Talk

Contact me on LinkedIn