Samþætting RAG (Retrieval-Augmented Generation) við nútíma veframma: Hagnýt leiðarvísir | B4N1

Samþætting RAG (Retrieval-Augmented Generation) við nútíma veframma: Hagnýt leiðarvísir

9 months ago · b4n1 Read time: 4 min

Að samþætta RAG (Retrieval-Augmented Generation) við nútíma veframma: Hagnýt leiðarvísir

Kynning

Undanfarin ár hefur sviði náttúrulegrar málvinnslu (NLP) orðið vitni að verulegri aukningu í þróun stórra tungumálalíkana (LLMs) og notkunar þeirra á ýmsum sviðum. Hins vegar er ein af helstu takmörkunum LLMs vanhæfni þeirra til að sækja og fella utanaðkomandi þekkingu inn í svör sín. Þetta er þar sem Retrieval-Augmented Generation (RAG) tækni kemur við sögu. Í þessari grein munum við kanna innleiðingu RAG tækni með því að nota FastAPI og Django til að auka LLM getu í vefforritum, þar á meðal skipulagningu með LangChain fyrir óaðfinnanlega gagnaöflun og vinnslu.

Hvað er RAG?

RAG er tækni sem sameinar styrkleika Retrieval og Generation líkana til að framleiða nákvæmari og upplýsandi svör. Grunnhugmyndin á bak við RAG er að sækja fyrst viðeigandi upplýsingar úr þekkingargrunni eða gagnagrunni og nota síðan þessar upplýsingar til að búa til svar. Þessi nálgun gerir LLMs kleift að nýta utanaðkomandi þekkingu og veita nákvæmari og upplýsandi svör.

Af hverju að nota RAG með FastAPI og Django?

FastAPI og Django eru tveir af vinsælustu veframmanum sem notaðir eru til að byggja vefforrit. Þau bjóða upp á öflugan og stigstærðan innviði til að byggja upp vefforrit og auðvelt er að samþætta þeim við RAG tækni til að auka LLM getu. FastAPI er nútímalegur veframmi sem veitir hraðvirka og skilvirka leið til að smíða vefforrit, en Django er veframmi á háu stigi sem býður upp á arkitektúr, sniðmát og API til að byggja upp öflug vefforrit.

Innleiða RAG með FastAPI

FastAPI veitir einfalda og skilvirka leið til að innleiða RAG tækni. Hér er dæmi um kóðablokk sem sýnir hvernig á að nota FastAPI til að innleiða RAG:

frá fastapi innflutningur FastAPI
frá langchain import LLMChain
frá langchain.chains.openai innflutningur OpenAIApi

app = FastAPI()

@app.get("/rag")
async def rag (fyrirspurn: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                name="my_index",
                skjöl=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Búðu til svar með LLM keðjunni
    svar = llm_chain.run(fyrirspurn)

    skila {"response": response}

Í þessu dæmi skilgreinum við LLM keðju með því að nota LLMCain flokkinn frá LangChain. Við skilgreinum síðan endurheimtunarhluta með því að nota LangChainRetrieval flokkinn, sem er notaður til að sækja viðeigandi upplýsingar úr þekkingargrunni eða gagnagrunni. Að lokum notum við "keyra" aðferðina til að búa til svar með því að nota LLM keðjuna.

Innleiða RAG með Django

Django býður upp á hágæða veframma sem auðvelt er að samþætta við RAG tækni. Hér er dæmi um kóðablokk sem sýnir hvernig á að nota Django til að innleiða RAG:

frá django.http flytja inn JsonResponse
frá langchain import LLMChain
frá langchain.chains.openai innflutningur OpenAIApi

def rag (beiðni):
    # Skilgreindu LLM keðjuna
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                name="my_index",
                skjöl=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Búðu til svar með LLM keðjunni
    svar = llm_chain.run(request.GET.get("query"))

    skila JsonResponse({"svar": svar})

Í þessu dæmi skilgreinum við útsýnisaðgerð „rag“ sem tekur fyrirspurn sem inntak og býr til svar með því að nota LLM keðjuna.

Hljómsveita RAG með LangChain

LangChain veitir einfalda og skilvirka leið til að skipuleggja RAG tækni. Hér er dæmi um kóðablokk sem sýnir hvernig á að nota LangChain til að skipuleggja RAG:

frá langchain import LLMChain
frá langchain.chains.openai innflutningur OpenAIApi

# Skilgreindu LLM keðjuna
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChainIndex(
            name="my_index",
            skjöl=["doc1", "doc2", "doc3"]
        )
    )
)

# Búðu til svar með LLM keðjunni
svar = llm_chain.run("Hvað er RAG?")

prenta (svar)

Í þessu dæmi skilgreinum við LLM keðju með því að nota LLMCain flokkinn frá LangChain. Við notum síðan „run“ aðferðina til að búa til svar með því að nota LLM keðjuna.

Top 5-10 mest notuðu skipanir/bútar

Hér eru 5-10 mest notuðu skipanirnar/bútarnir til að útfæra RAG með FastAPI og Django:

  1. from langchain import LLMChain: Flyttu inn LLMCain flokkinn frá LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])): Skilgreindu LLM keðju með því að nota LLMChain flokkinn.
  3. response = llm_chain.run(query): Búðu til svar með því að nota LLM keðjuna.
  4. from fastapi import FastAPI: Flyttu inn FastAPI flokkinn frá FastAPI.
  5. app = FastAPI(): Skilgreindu FastAPI forrit.
  6. @app.get("/rag"): Skilgreindu leið fyrir RAG endapunktinn.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])): Skilgreindu LLM keðju með því að nota LLMChain flokkinn.
  8. response = llm_chain.run(query): Búðu til svar með því að nota LLM keðjuna.
  9. from django.http import JsonResponse: Flyttu inn JsonResponse flokkinn frá Django.
  10. return JsonResponse({"response": response}): Skilaðu JSON svari með mynduðu svarinu.

Sjónræn

Hér er mynd af RAG leiðslunni með því að nota Chart.js:

{
  "type": "horisontalBar",
  "gögn": {
    "labels": ["Sótt", "Kynslóð", "Eftirvinnsla"],
    "gagnasett": [
      {
        "label": "RAG leiðsla",
        "gögn": [10, 20, 30],
        "bakgrunnslitur": [
          "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)"
        ],
        "borderWidth": 1
      }
    ]
  },
  "valkostir": {
    "titill": {
      "skjá": satt,
      "text": "RAG leiðsla"
    },
    "vog": {
      "yAxes": [
        {
          "tikkar": {
            "beginAtZero": satt
          }
        }
      ]
    }
  }
}

Þessi mynd sýnir RAG leiðsluna með þremur stigum: endurheimt, kynslóð og eftirvinnslu.

Niðurstaða

Í þessari grein könnuðum við innleiðingu RAG tækni með því að nota FastAPI og Django til að auka LLM getu í vefforritum, þar á meðal skipulagningu með LangChain fyrir óaðfinnanlega gagnaöflun og vinnslu. Við útveguðum einnig hagnýta leiðbeiningar um innleiðingu RAG með FastAPI og Django, þar á meðal kóðadæmi og sjónmynd af RAG leiðslunni. Við vonum að þessi grein hafi veitt gagnlegt úrræði fyrir forritara sem vilja innleiða RAG tækni í vefforritum sínum.


Have Questions?

Let's Talk

Contact me on LinkedIn