RAG (Retrieval-Augmented Generation)-ийг орчин үеийн вэб хүрээтэй нэгтгэх нь: Практик гарын авлага | B4N1

RAG (Retrieval-Augmented Generation)-ийг орчин үеийн вэб хүрээтэй нэгтгэх нь: Практик гарын авлага

9 months ago · b4n1 Read time: 4 min

** RAG (Retrieval-Augmented Generation)-ийг орчин үеийн вэб хүрээтэй нэгтгэх нь: Практик гарын авлага**

Танилцуулга

Сүүлийн жилүүдэд байгалийн хэлний боловсруулалтын (NLP) салбар нь Том хэлний загвар (LLM) болон тэдгээрийн янз бүрийн салбарт хэрэглэгдэхүүнийг хөгжүүлэхэд мэдэгдэхүйц өсөлтийг гэрчилж байна. Гэсэн хэдий ч LLM-ийн гол хязгаарлалтуудын нэг нь гадны мэдлэгийг олж авч, хариултдаа оруулах чадваргүй байдаг. Эндээс "Retrieval-Augmented Generation" (RAG) техникүүд гарч ирдэг. Энэ нийтлэлд бид FastAPI болон Django-г ашиглан LLM-ийн чадавхийг сайжруулахын тулд FastAPI болон Django-г ашиглан мэдээлэл олж авах, боловсруулахад зориулсан LangChain-тай зохион байгуулалтыг багтаасан талаар судлах болно.

RAG гэж юу вэ?

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

Яагаад RAG-г FastAPI болон Django-тэй ашиглах хэрэгтэй вэ?

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

** FastAPI-тэй RAG-г хэрэгжүүлэх**

FastAPI нь RAG техникийг хэрэгжүүлэх энгийн бөгөөд үр дүнтэй аргыг санал болгодог. RAG-ийг хэрэгжүүлэхийн тулд FastAPI-г хэрхэн ашиглахыг харуулсан жишээ кодын блок энд байна:

fastapi-аас импортлох FastAPI
langchain импортоос LMChain
langchain.chains.openai импортын OpenAIApi-аас

програм = FastAPI()

@app.get("/rag")
async def rag(асуулга: str):
    
    llm_chain = LMCchain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            индекс=LangChainIndex(
                нэр = "миний_индекс",
                баримтууд=["doc1", "doc2", "doc3"]
            )
        )
    )

    # LLM сүлжээг ашиглан хариулт үүсгэх
    хариулт = llm_chain.run(асуулга)

    буцах {"хариу": хариу}

Энэ жишээнд бид LangChain-ийн LLMCain анги ашиглан LLM хэлхээг тодорхойлдог. Дараа нь бид "LangChainRetrieval" классыг ашиглан хайлт хийх бүрэлдэхүүн хэсгийг тодорхойлдог бөгөөд энэ нь мэдлэгийн сан эсвэл мэдээллийн сангаас холбогдох мэдээллийг татаж авахад ашиглагддаг. Эцэст нь бид LLM хэлхээг ашиглан хариулт үүсгэхийн тулд run аргыг ашигладаг.

Django-тэй RAG-г хэрэгжүүлэх

Django нь RAG техниктэй хялбар нэгтгэж болох өндөр түвшний вэб хүрээг хангадаг. RAG-ийг хэрэгжүүлэхийн тулд Django-г хэрхэн ашиглахыг харуулсан жишээ кодын блок энд байна:

django.http-аас JsonResponse импортлох
langchain импортоос LMChain
langchain.chains.openai импортын OpenAIApi-аас

def rag(хүсэлт):
    # LLM хэлхээг тодорхойлох
    llm_chain = LMCchain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            индекс=LangChainIndex(
                нэр = "миний_индекс",
                баримтууд=["doc1", "doc2", "doc3"]
            )
        )
    )

    # LLM сүлжээг ашиглан хариулт үүсгэх
    хариу = llm_chain.run(request.GET.get("асуулга"))

    буцах JsonResponse({"response": хариу})

Энэ жишээнд бид асуулгыг оролт болгон авч, LLM гинжин хэлхээг ашиглан хариулт үүсгэдэг "rag" харах функцийг тодорхойлсон.

LangChain-тай RAG зохион байгуулж байна

LangChain нь RAG техникийг зохион байгуулах энгийн бөгөөд үр дүнтэй аргыг санал болгодог. RAG-ийг зохицуулахын тулд LangChain-ийг хэрхэн ашиглахыг харуулсан жишээ код блок энд байна:

langchain импортоос LMChain
langchain.chains.openai импортын OpenAIApi-аас

# LLM хэлхээг тодорхойлох
llm_chain = LMCchain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        индекс=LangChainIndex(
            нэр = "миний_индекс",
            баримтууд=["doc1", "doc2", "doc3"]
        )
    )
)

# LLM сүлжээг ашиглан хариулт үүсгэх
хариу = llm_chain.run("RAG гэж юу вэ?")

хэвлэх (хариу)

Энэ жишээнд бид LangChain-ийн LLMCain анги ашиглан LLM хэлхээг тодорхойлдог. Дараа нь бид LLM хэлхээг ашиглан хариулт үүсгэхийн тулд run аргыг ашиглана.

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

FastAPI болон Django-тэй RAG-ийг хэрэгжүүлэхэд хамгийн их ашиглагддаг 5-10 тушаал/хэсэг энд байна:

  1. from langchain import LLMChain: LangChain-аас LLMChain ангийг импортлох.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(индекс=LangChainIndex(name="my_index", баримт бичиг=["doc1", "doc2", "doc3"]))): LLMCha анги ашиглан LLM хэлхээг тодорхойлно уу.
  3. response = llm_chain.run(query): LLM хэлхээг ашиглан хариулт үүсгэнэ.
  4. from fastapi import FastAPI: FastAPI-ээс FastAPI ангиллыг импортлох.
  5. app = FastAPI(): FastAPI програмыг тодорхойлно.
  6. @app.get("/rag"): RAG төгсгөлийн цэгийн маршрутыг тодорхойлно.
  7. llm_chain = LLMCain(llm=OpenAIApi(), retrieval=LangChainRetrieval(индекс=LangChainIndex(name="my_index", баримт бичиг=["doc1", "doc2", "doc3"]))): LLMCha анги ашиглан LLM хэлхээг тодорхойлно уу.
  8. response = llm_chain.run(query): LLM хэлхээг ашиглан хариулт үүсгэнэ.
  9. from django.http import JsonResponse: JsonResponse классыг Django-оос импортлох.
  10. return JsonResponse({"response": response}): Үүсгэсэн хариулттай JSON хариултыг буцаана.

Дүрслэл

Chart.js ашиглан RAG дамжуулах хоолойн дүрслэлийг энд үзүүлэв:

{
  "төрөл": "horizontalBar",
  "өгөгдөл": {
    "шошго": ["Татаж авах", "Үелэх", "Боловсруулахын дараах"],
    "өгөгдлийн багц": [
      {
        "label": "RAG Pipeline",
        "өгөгдөл": [10, 20, 30],
        "арын өнгө": [
          "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)"
        ],
        "хилийн өргөн": 1
      }
    ]
  },
  "сонголт": {
    "гарчиг": {
      "дэлгэц": үнэн,
      "текст": "RAG Pipeline"
    },
    "масштаб": {
      "yAxes": [
        {
          "хачиг": {
            "beginAtZero": үнэн
          }
        }
      ]
    }
  }
}

Энэхүү дүрслэл нь RAG дамжуулах хоолойг олж авах, үүсгэх, боловсруулалтын дараах гурван үе шаттайгаар харуулж байна.

Дүгнэлт

Энэ нийтлэлд бид FastAPI болон Django-г ашиглан LLM-ийн чадавхийг сайжруулах, тэр дундаа LangChain-тай өгөгдөл олж авах, боловсруулахад зориулсан зохион байгуулалтыг багтаасан RAG аргачлалын хэрэгжилтийг судалсан. Бид мөн FastAPI болон Django-тэй RAG-ийг хэрэгжүүлэх практик гарын авлага, кодын жишээнүүд болон RAG дамжуулах хоолойн дүрслэлийг оруулсан. Энэхүү нийтлэл нь RAG техникийг вэб программдаа хэрэгжүүлэхийг хүсч буй хөгжүүлэгчдэд хэрэгтэй эх сурвалж болсон гэж найдаж байна.


Have Questions?

Let's Talk

Contact me on LinkedIn