Yekkirina RAG (Nifşa Vegerandin-Zêdekirî) bi Çarçoveyên Webê yên Nûjen: Rêbernameyek Pratîk | B4N1

Yekkirina RAG (Nifşa Vegerandin-Zêdekirî) bi Çarçoveyên Webê yên Nûjen: Rêbernameyek Pratîk

9 months ago · b4n1 Read time: 4 min

Yekkirina RAG (Nifşa Vegerandin-Zêdekirî) bi Çarçoveyên Webê yên Nûjen: Rêbernameyek Pratîk

Destpêk

Di salên dawî de, qada Pêvajoya Zimanê Xwezayî (NLP) di pêşkeftina Modelên Zimanên Mezin (LLM) û serîlêdanên wan de di warên cihêreng de şahidiyek girîng e. Lêbelê, yek ji tixûbên sereke yên LLM-an nebûna wan e ku zanyariyên derveyî di bersivên xwe de bistînin û tevlihev bikin. Li vir teknîkên Retrieval-Augmented Generation (RAG) dileyizin. Di vê gotarê de, em ê pêkanîna teknîkên RAG-ê bi karanîna FastAPI û Django vekolînin da ku kapasîteyên LLM-ê di serîlêdanên malperê de zêde bikin, di nav de orkestrasyona bi LangChain re ji bo vegerandin û hilanîna daneya bêkêmasî.

RAG çi ye?

RAG teknîkek e ku hêza modelên Retrieval û Generation berhev dike da ku bersivên rast û agahdartir hilberîne. Fikra bingehîn a li pişt RAG ev e ku meriv pêşî agahdariya têkildar ji bingehek zanînê an databasek bigire, û dûv re vê agahiyê bikar bîne da ku bersivek çêbike. Ev nêzîkatî destûrê dide LLM-an ku zanyariyên derveyî bikar bînin û bersivên rast û agahdartir peyda bikin.

Çima RAG bi FastAPI û Django re bikar bînin?

FastAPI û Django du çarçoveyên webê yên herî populer in ku ji bo avakirina serîlêdanên malperê têne bikar anîn. Ew ji bo avakirina serîlêdanên webê binesaziyek zexm û berbelav peyda dikin, û dikarin bi hêsanî bi teknîkên RAG-ê re werin yek kirin da ku kapasîteyên LLM zêde bikin. FastAPI çarçoveyek webê ya nûjen e ku ji bo avakirina serîlêdanên malperê rêyek bilez û bikêr peyda dike, dema ku Django çarçoveyek malperê ya asta bilind e ku mîmarî, şablon û API-yan ji bo avakirina serîlêdanên malperê yên bihêz peyda dike.

Pêkanîna RAG bi FastAPI re

FastAPI ji bo pêkanîna teknîkên RAG rêyek hêsan û bikêr peyda dike. Li vir mînakek bloka kodê heye ku destnîşan dike ka meriv çawa FastAPI bikar tîne da ku RAG bicîh bîne:

`` python ji fastapi import FastAPI ji langchain import LLMChain ji langchain.chains.openai import OpenAIApi

sepan = FastAPI()

@app.get ("/rag") async def rag (pirsîn: str):

llm_zincîra = LLMCchain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChainIndex(
            nav = "min_index",
            belge = ["doc1", "doc2", "doc3"]
        )
    )
)

# Bi karanîna zincîra LLM re bersivek çêbikin
bersiv = llm_chain.run (pirsîn)

vegera {"bersiv": bersiv}

Di vê nimûneyê de, em zincîreyek LLM-ê bi karanîna çîna `LLMChain` ji LangChain destnîşan dikin. Dûv re em bi karanîna çîna `LangChainRetrieval`, ku ji bo wergirtina agahdariya têkildar ji bingehek zanînê an databasek tê bikar anîn, hêmanek vegerandinê diyar dikin. Di dawiyê de, em rêbaza `run` bikar tînin ku bi karanîna zincîra LLM bersivek çêbikin.

** Pêkanîna RAG bi Django re **


Django çarçoveyek malperê ya asta bilind peyda dike ku dikare bi teknîkên RAG-ê re bi hêsanî were yek kirin. Li vir mînakek bloka kodê heye ku destnîşan dike ka meriv çawa Django ji bo pêkanîna RAG bikar tîne:

`` python
ji django.http import JsonResponse
ji langchain import LLMChain
ji langchain.chains.openai import OpenAIApi

def rag (daxwaz):
    # Zincîra LLM diyar bikin
    llm_zincîra = LLMCchain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                nav = "min_index",
                belge = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # Bi karanîna zincîra LLM re bersivek çêbikin
    bersiv = llm_chain.run(request.GET.get("pirsîn"))

    vegere JsonResponse ({"bersiv": bersiv})

Di vê nimûneyê de, em fonksiyonek dîtinê rag diyar dikin ku pirsek wekî têketinê digire û bi karanîna zincîra LLM bersivek çêdike.

Orkestrakirina RAG bi LangChain

LangChain rêgezek hêsan û bikêrhatî peyda dike ku teknîkên RAG-ê saz bike. Li vir mînakek bloka kodê heye ku destnîşan dike ka meriv çawa LangChain bikar tîne da ku RAG saz bike:

`` python ji langchain import LLMChain ji langchain.chains.openai import OpenAIApi

Zincîra LLM diyar bikin

llm_zincîra = LLMCchain( llm=OpenAIApi(), retrieval=LangChainRetrieval( index=LangChainIndex( nav = "min_index", belge = ["doc1", "doc2", "doc3"] ) ) )

Bi karanîna zincîra LLM re bersivek çêbikin

bersiv = llm_chain.run ("RAG çi ye?")

çapkirin (bersiv)


Di vê nimûneyê de, em zincîreyek LLM-ê bi karanîna çîna `LLMChain` ji LangChain destnîşan dikin. Dûv re em rêbaza `run` bikar tînin da ku bi karanîna zincîra LLM bersivek çêbikin.

** Serê 5-10 Fermanên Herî Bikaranîn / Parçeyên **


Li vir 5-10 fermanên herî zêde têne bikar anîn ji bo pêkanîna RAG bi FastAPI û Django re hene:

1. `ji importa langchain LLMChain`: Dersa `LLMChain` ji LangChain derxînin.
2. `llm_zincîra = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", belge=["doc1", "doc2", "doc3"])))": Zincîrek LLM`ê bi karanîna çîna `LLMCha` diyar bike
3. `bersiv = llm_chain.run(pirsîn)`: Bi karanîna zincîra LLM bersivek çêbike.
4. `ji fastAPI import FastAPI`: Dersa `FastAPI` ji FastAPI derxînin.
5. `app = FastAPI()`: Serlêdanek FastAPI diyar bike.
6. `@app.get("/rag")`: Ji bo xala dawiya RAG rêyek diyar bike.
7. `llm_zincîra = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", belge=["doc1", "doc2", "doc3"])))": Zincîrek LLM`ê bi karanîna çîna `LLMCha` destnîşan bikin.
8. `bersiv = llm_chain.run(pirsîn)`: Bi karanîna zincîra LLM bersivek çêbike.
9. `ji django.http import JsonResponse`: Dersa `JsonResponse` ji Django derxîne.
10. `JsonResponse vegere({"bersiv": bersiv})`: Bersiva JSON bi bersiva hatî çêkirin vegerîne.

**Visualization **


Li vir dîmenek lûleya RAG-ê bi karanîna Chart.js heye:

```json
{
  "type": "HorizontalBar",
  "dane": {
    "labels": ["Vegerandin", "Nifş", "Pişt-pêvajo"],
    "daneyên": [
      {
        "label": "Rag Pipeline",
        "dane": [10, 20, 30],
        "backgroundColor": [
          "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)"
        ],
        "Berfirehiya sînor": 1
      }
    ]
  },
  "vebijark": {
    "sernav": {
      "nîşandan": rast,
      "text": "Rag Pipeline"
    },
    "pîvan": {
      "yAxes": [
        {
          "tik": {
            "beginAtZero": rast
          }
        }
      ]
    }
  }
}

Ev dîtbarî boriyê RAG-ê bi sê qonaxan nîşan dide: wergirtin, nifşkirin, û paş-pêvajoyê.

** Encam **

Di vê gotarê de, me pêkanîna teknîkên RAG-ê bi karanîna FastAPI û Django vekoland da ku kapasîteyên LLM-ê di serîlêdanên webê de zêde bikin, tevî orkestrasyona bi LangChain re ji bo vegerandin û hilanîna daneya bêkêmasî. Me di heman demê de rêbernameyek pratîkî ji bo pêkanîna RAG bi FastAPI û Django re peyda kir, di nav de mînakên kodê û dîmenek boriya RAG. Em hêvî dikin ku ev gotar ji bo pêşdebiran ku digerin ku teknîkên RAG-ê di serîlêdanên xwe yên malperê de bicîh bikin çavkaniyek kêrhatî peyda kiriye.


Have Questions?

Let's Talk

Contact me on LinkedIn