Kuphatikiza RAG (Retrieval-Augmented Generation) ndi Zomangamanga Zamakono Zamakono: Buku Lothandiza | B4N1

Kuphatikiza RAG (Retrieval-Augmented Generation) ndi Zomangamanga Zamakono Zamakono: Buku Lothandiza

9 months ago · b4n1 Read time: 4 min

Kuphatikizira RAG (Kubweza-Kuwonjezera M'badwo) ndi Zomangamanga Zamakono Zapaintaneti: Buku Lothandiza

Chiyambi

M'zaka zaposachedwa, gawo la Natural Language Processing (NLP) lawona kuwonjezeka kwakukulu pakukula kwa Large Language Models (LLMs) ndikugwiritsa ntchito kwawo m'malo osiyanasiyana. Komabe, cholepheretsa chimodzi chachikulu cha ma LLM ndikulephera kupeza ndikuphatikiza chidziwitso chakunja pamayankho awo. Apa ndipamene njira za Retrieval-Augmented Generation (RAG) zimayambira. M'nkhaniyi, tiwona kukhazikitsidwa kwa njira za RAG pogwiritsa ntchito FastAPI ndi Django kuti tipititse patsogolo luso la LLM muzogwiritsira ntchito pa intaneti, kuphatikizapo kuyimba ndi LangChain pofuna kubwezeretsa deta ndi kukonzanso.

RAG ndi chiyani?

RAG ndi njira yomwe imaphatikiza mphamvu za Retrieval ndi Generation zitsanzo kuti apange mayankho olondola komanso odziwa zambiri. Lingaliro loyambirira la RAG ndikutenganso zidziwitso zoyenera kuchokera ku chidziwitso kapena nkhokwe, ndiyeno gwiritsani ntchito chidziwitsochi kuti muyankhe. Njirayi imalola ma LLM kutengera chidziwitso chakunja ndikupereka mayankho olondola komanso odziwitsa.

Chifukwa Chiyani Mugwiritse Ntchito RAG ndi FastAPI ndi Django?

FastAPI ndi Django ndi awiri mwazinthu zodziwika bwino zapaintaneti zomwe zimagwiritsidwa ntchito popanga mawebusayiti. Amapereka maziko olimba komanso owopsa omangira mawebusayiti, ndipo amatha kuphatikizidwa mosavuta ndi njira za RAG kuti apititse patsogolo luso la LLM. FastAPI ndi dongosolo lamakono la intaneti lomwe limapereka njira yofulumira komanso yabwino yopangira mapulogalamu a pa intaneti, pamene Django ndi dongosolo lapamwamba la intaneti lomwe limapereka zomangamanga, ma templates, ndi ma API omanga mapulogalamu olimba a intaneti.

**Kukhazikitsa RAG ndi FastAPI **

FastAPI imapereka njira yosavuta komanso yabwino yogwiritsira ntchito njira za RAG. Nayi chitsanzo cha code block chomwe chikuwonetsa momwe mungagwiritsire ntchito FastAPI kukhazikitsa RAG:

kuchokera ku Fastapi import FastAPI
kuchokera ku langchain import LLMChain
kuchokera ku langchain.chains.openai import OpenAIApi

app = FastAPI ()

@app.get("/chiguduli")
async def rag (funso: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChaindex(
                dzina = "mndandanda_wanga",
                zolemba="doc1", "doc2", "doc3"]
            )
        )
    )

    # Pangani yankho pogwiritsa ntchito unyolo wa LLM
    yankho = llm_chain.run(funso)

    bwezerani {"response": response}

Muchitsanzo ichi, timatanthauzira unyolo wa LLM pogwiritsa ntchito kalasi ya LLMChain kuchokera ku LangChain. Kenaka timatanthauzira chigawo chobwezeretsa pogwiritsa ntchito kalasi ya LangChainRetrieval, yomwe imagwiritsidwa ntchito kupeza mfundo zofunikira kuchokera ku chidziwitso kapena deta. Pomaliza, timagwiritsa ntchito njira ya run kupanga mayankho pogwiritsa ntchito tcheni cha LLM.

Kukhazikitsa RAG ndi Django

Django imapereka dongosolo lapamwamba la intaneti lomwe lingathe kuphatikizidwa mosavuta ndi njira za RAG. Nayi chitsanzo cha code block chomwe chikuwonetsa momwe mungagwiritsire ntchito Django kukhazikitsa RAG:

kuchokera ku django.http lowetsani JsonResponse
kuchokera ku langchain import LLMChain
kuchokera ku langchain.chains.openai import OpenAIApi

def rag (pempho):
    # Tanthauzirani unyolo wa LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChaindex(
                dzina = "mndandanda_wanga",
                zolemba="doc1", "doc2", "doc3"]
            )
        )
    )

    # Pangani yankho pogwiritsa ntchito unyolo wa LLM
    yankho = llm_chain.run(request.GET.get("funso"))

    return JsonResponse({"response": response})

Muchitsanzo ichi, timatanthauzira ntchito yowonera rag yomwe imatenga funso ngati cholowetsa ndikupanga yankho pogwiritsa ntchito unyolo wa LLM.

Kupanga RAG ndi LangChain

LangChain imapereka njira yosavuta komanso yabwino yopangira njira za RAG. Nayi chitsanzo cha code block chomwe chikuwonetsa momwe mungagwiritsire ntchito LangChain kuyitanitsa RAG:

kuchokera ku langchain import LLMChain
kuchokera ku langchain.chains.openai import OpenAIApi

# Tanthauzirani unyolo wa LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChaindex(
            dzina = "mndandanda_wanga",
            zolemba="doc1", "doc2", "doc3"]
        )
    )
)

# Pangani yankho pogwiritsa ntchito unyolo wa LLM
yankho = llm_chain.run("RAG ndi chiyani?")

sindikiza (yankho)

Muchitsanzo ichi, timatanthauzira unyolo wa LLM pogwiritsa ntchito kalasi ya LLMChain kuchokera ku LangChain. Kenako timagwiritsa ntchito njira ya run kupanga mayankho pogwiritsa ntchito tcheni cha LLM.

**Malamulo/Zidutswa Zapamwamba za 5-10 **

Nawa malamulo / zidule za 5-10 zomwe zimagwiritsidwa ntchito kwambiri pakukhazikitsa RAG ndi FastAPI ndi Django:

  1. kuchokera ku langchain import LLMChain: Lowetsani kalasi ya LLMChain kuchokera ku LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Tanthauzirani unyolo wa LLM pogwiritsa ntchito kalasi ya LLMChain.
  3. response = llm_chain.run(funso): Pangani yankho pogwiritsa ntchito tcheni cha LLM.
  4. kuchokera ku fastapi import FastAPI: Lowetsani kalasi ya FastAPI kuchokera ku FastAPI.
  5. app = FastAPI(): Tanthauzirani pulogalamu ya FastAPI.
  6. @app.get("/rag"): Tanthauzirani njira yofikira kumapeto kwa RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Tanthauzirani unyolo wa LLM pogwiritsa ntchito kalasi ya LLMChain.
  8. response = llm_chain.run(funso): Pangani yankho pogwiritsa ntchito tcheni cha LLM.
  9. kuchokera ku django.http import JsonResponse: Lowetsani kalasi ya JsonResponse kuchokera ku Django.
  10. bwererani JsonResponse({"response": response}): Bweretsani yankho la JSON ndi yankho lopangidwa.

**Kuwona **

Nayi chithunzithunzi cha mapaipi a RAG pogwiritsa ntchito Chart.js:

{
  "type": "horizontalBar",
  "data": {
    "labels": ["Kubweza", "Generation", "Post-processing"],
    "ma dataset": [
      {
        "label": "RAG Pipeline",
        "data": [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)"
        ],
        "BorderWidth": 1
      }
    ]
  },
  "zosankha": {
    "mutu": {
      "kuwonetsa": zoona,
      "text": "RAG Pipeline"
    },
    "masikelo": {
      "yAxes": [
        {
          "nkhupakupa": {
            "beginAtZero": zoona
          }
        }
      ]
    }
  }
}

Kuwoneka uku kukuwonetsa payipi ya RAG yokhala ndi magawo atatu: kubweza, kutulutsa, ndi kukonza pambuyo.

Mapeto

M'nkhaniyi, tafufuza kukhazikitsidwa kwa njira za RAG pogwiritsa ntchito FastAPI ndi Django kupititsa patsogolo luso la LLM muzogwiritsira ntchito pa intaneti, kuphatikizapo kuyimba ndi LangChain pofuna kubwezeretsa deta ndi kukonza. Tidaperekanso chiwongolero chothandizira pakukhazikitsa RAG ndi FastAPI ndi Django, kuphatikiza zitsanzo zamakhodi ndikuwonetsa mapaipi a RAG. Tikukhulupirira kuti nkhaniyi yapereka zothandiza kwa opanga omwe akufuna kugwiritsa ntchito njira za RAG pakugwiritsa ntchito intaneti.


Have Questions?

Let's Talk

Contact me on LinkedIn