Ho kopanya RAG (Retrieval-Augmented Generation) le Meaho ea Marang-rang ea Marang-rang: Tataiso e sebetsang | B4N1

Ho kopanya RAG (Retrieval-Augmented Generation) le Meaho ea Marang-rang ea Marang-rang: Tataiso e sebetsang

9 months ago · b4n1 Read time: 5 min

Ho kopanya RAG (Retrieval-Augmented Generation) le Meralo ea Sejoale-joale ea Marang-rang: Tataiso e Sebetsang

Selelekela

Lilemong tsa morao tjena, lefapha la Natural Language Processing (NLP) le bone keketseho e kholo ho nts'etsopele ea Mehlala ea Lipuo tse Kholo (LLMs) le ts'ebeliso ea tsona libakeng tse fapaneng. Leha ho le joalo, e 'ngoe ea likhaello tse kholo tsa LLM ke ho se khone ho fumana le ho kenyelletsa tsebo ea kantle ho likarabo tsa bona. Mona ke moo mekhoa ea Retrieval-Augmented Generation (RAG) e sebetsang teng. Sehloohong sena, re tla hlahloba ts'ebetsong ea mekhoa ea RAG e sebelisang FastAPI le Django ho ntlafatsa bokhoni ba LLM lits'ebetsong tsa marang-rang, ho kenyelletsa le 'mino oa liletsa le LangChain bakeng sa ho khutlisa le ho sebetsa ka mokhoa o se nang moeli.

RAG ke eng?

RAG ke mokhoa o kopanyang matla a mehlala ea ho Khutlisa le Meloko ho hlahisa likarabo tse nepahetseng le tse rutang. Taba ea mantlha ka morao ho RAG ke ho qala ka ho fumana tlhaiso-leseling e nepahetseng ho tsoa setsing sa tsebo kapa polokelong ea litaba, ebe o sebelisa tlhahisoleseling ena ho hlahisa karabo. Mokhoa ona o lumella LLMs ho phahamisa tsebo ea kantle le ho fana ka likarabo tse nepahetseng le tse rutang.

Hobaneng o Sebelisa RAG ka FastAPI le Django?

FastAPI le Django ke tse peli tsa meralo e tsebahalang haholo ea webo e sebelisoang ho aha lits'ebetso tsa webo. Ba fana ka lisebelisoa tse matla le tse ka senyehang bakeng sa ho aha lits'ebetso tsa marang-rang, 'me li ka kopanngoa habonolo le mekhoa ea RAG ho ntlafatsa bokhoni ba LLM. FastAPI ke moralo oa sejoale-joale oa marang-rang o fanang ka mokhoa o potlakileng le o sebetsang oa ho aha lits'ebetso tsa marang-rang, athe Django ke moralo oa boemo bo holimo oa marang-rang o fanang ka meralo, litempele le li-API tsa ho aha lits'ebetso tse matla tsa marang-rang.

Ho kenya tšebetsong RAG ka FastAPI

FastAPI e fana ka mokhoa o bonolo le o sebetsang oa ho kenya ts'ebetsong mekhoa ea RAG. Mona ke mohlala oa "code block" o bonts'ang mokhoa oa ho sebelisa FastAPI ho kenya ts'ebetsong RAG:

ho tloha ho fastapi ho kenya FastAPI
ho tsoa ho langchain ho kenya LLMChain
ho tsoa ho langchain.chains.openai import OpenAIApi

app = FastAPI()

@app.get("/rag")
async def rag(potso: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                lebitso = "index_yaka",
                litokomane="doc1", "doc2", "doc3"]
            )
        )
    )

    # Hlahisa karabo u sebelisa ketane ea LLM
    karabo = llm_chain.run(potso)

    khutlisetsa {"karabo": karabo}

Mohlala ona, re hlalosa ketane ea LLM ho sebelisa sehlopha sa LLMChain ho tloha LangChain. Ka mor'a moo re hlalosa karolo ea ho khutlisa re sebelisa sehlopha sa LangChainRetrieval, se sebelisetsoang ho fumana lintlha tse nepahetseng ho tloha setsing sa tsebo kapa polokelong ea boitsebiso. Qetellong, re sebelisa mokhoa oa run ho hlahisa karabo re sebelisa ketane ea LLM.

Ho kenya tšebetsong RAG le Django

Django e fana ka moralo oa marang-rang oa boemo bo holimo o ka kopanngoang habonolo le mekhoa ea RAG. Mona ke mohlala oa "code block" o bonts'ang mokhoa oa ho sebelisa Django ho kenya ts'ebetsong RAG:

ho tsoa ho django.http import JsonResponse
ho tsoa ho langchain ho kenya LLMChain
ho tsoa ho langchain.chains.openai import OpenAIApi

def rag (kopo):
    # Hlalosa ketane ea LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                lebitso = "index_yaka",
                litokomane="doc1", "doc2", "doc3"]
            )
        )
    )

    # Hlahisa karabo u sebelisa ketane ea LLM
    karabo = llm_chain.run(request.GET.get("potso"))

    return JsonResponse({"karabo": karabo})

Mohlaleng ona, re hlalosa mosebetsi oa ho sheba rag o nkang potso e le ho kenya letsoho mme o hlahisa karabo o sebelisa ketane ea LLM.

Ho hlophisa RAG ka LangChain

LangChain e fana ka mokhoa o bonolo le o sebetsang oa ho hlophisa mekhoa ea RAG. Mona ke mohlala oa "code block" o bonts'ang mokhoa oa ho sebelisa LangChain ho hlophisa RAG:

ho tsoa ho langchain ho kenya LLMChain
ho tsoa ho langchain.chains.openai import OpenAIApi

# Hlalosa ketane ea LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChainIndex(
            lebitso = "index_yaka",
            litokomane="doc1", "doc2", "doc3"]
        )
    )
)

# Hlahisa karabo u sebelisa ketane ea LLM
karabo = llm_chain.run("RAG ke eng?")

hatisa(karabo)

Mohlala ona, re hlalosa ketane ea LLM ho sebelisa sehlopha sa LLMChain ho tloha LangChain. Ebe re sebelisa mokhoa oa run ho hlahisa karabo re sebelisa ketane ea LLM.

Kaholimo ho 5-10 Litaelo/Lipotlana tse Sebelisitsoeng ka ho Fetisisa

Mona ke tse 5-10 tse sebelisoang ka ho fetesisa ho sebelisa RAG ka FastAPI le Django:

  1. ho tsoa ho langchain import LLMChain: Reka sehlopha sa LLMChain ho tloha LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Hlalosa ketane ea LLM o sebelisa sehlopha sa LLMChain.
  3. response = llm_chain.run(potso): Hlahisa karabo ka ketane ea LLM.
  4. ho tloha ho fastapi import FastAPI: Kenya sehlopha sa FastAPI ho tloha FastAPI.
  5. app = FastAPI(): Hlalosa kopo ea FastAPI.
  6. @app.get("/rag"): Hlalosa tsela bakeng sa pheletso ea RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Hlalosa ketane ea LLM o sebelisa sehlopha sa LLMChain.
  8. response = llm_chain.run(potso): Hlahisa karabo ka ketane ea LLM.
  9. ho tsoa ho django.http import JsonResponse: Fumana sehlopha sa JsonResponse ho tsoa ho Django.
  10. khutlisa JsonResponse({"karabo": karabo}): Khutlisa karabo ea JSON le karabo e hlahisitsoeng.

Pono ya pono

Mona ke pono ea lipeipi tsa RAG tse sebelisang Chart.js:

{
  "type": "horizontalBar",
  "data": {
    "labels": ["Retrieval", "Generation", "Post-processing"],
    "lintlha tsa boitsebiso": [
      {
        "label": "RAG Pipeline",
        "data": [10, 20, 30],
        "backgroundColour": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "Mmala oa moeli": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "borderWidth": 1
      }
    ]
  },
  "likgetho": {
    "sehlooho": {
      "bontša": 'nete,
      "text": "RAG Pipeline"
    },
    "makala": {
      "yAxes": [
        {
          "li-ticks": {
            "beginAtZero": 'nete
          }
        }
      ]
    }
  }
}

Ponahalo ena e bonts'a phaephe ea RAG e nang le mekhahlelo e meraro: ho khutlisa, ho hlahisa, le ho sebetsa ka morao.

Qetello

Sehloohong sena, re ile ra hlahloba ts'ebetsong ea mekhoa ea RAG e sebelisang FastAPI le Django ho ntlafatsa bokhoni ba LLM lits'ebetsong tsa marang-rang, ho kenyelletsa le 'mino oa liletsa le LangChain bakeng sa ho khutlisa le ho sebetsa ka mokhoa o se nang moeli. Re boetse re fane ka tataiso e sebetsang ea ho kenya ts'ebetsong RAG ka FastAPI le Django, ho kenyelletsa le mehlala ea khoutu le pono ea lipeipi tsa RAG. Re tšepa hore sengoloa sena se fane ka sesebelisoa se molemo bakeng sa bahlahisi ba batlang ho kenya ts'ebetsong mekhoa ea RAG lits'ebetsong tsa bona tsa webo.


Have Questions?

Let's Talk

Contact me on LinkedIn