Ukudibanisa i-RAG (i-Retrieval-Augmented Generation) kunye neZikhokelo zeWebhu zanamhlanje: Isikhokelo esiSebenzayo | B4N1

Ukudibanisa i-RAG (i-Retrieval-Augmented Generation) kunye neZikhokelo zeWebhu zanamhlanje: Isikhokelo esiSebenzayo

9 months ago · b4n1 Tiempo de lectura: 3 min

Ukudibanisa i-RAG (i-Retrieval-Augmented Generation) kunye neZikhokelo zeWebhu zanamhlanje: Isikhokelo esiSebenzayo

Intshayelelo

Kwiminyaka yakutshanje, icandelo le-Natural Language Processing (NLP) libone ukunyuka okubonakalayo kuphuhliso lweeModeli zoLwimi olukhulu (LLMs) kunye nokusetyenziswa kwazo kwiindawo ezahlukeneyo. Nangona kunjalo, omnye weyona mida iphambili yee-LLMs kukungakwazi kwazo ukufumana kwakhona kunye nokudibanisa ulwazi lwangaphandle kwiimpendulo zabo. Apha kulapho iindlela zokuBuyisa-Augmented Generation (RAG) zingena khona. Kule nqaku, siza kuphonononga ukuphunyezwa kweendlela ze-RAG zisebenzisa i-FastAPI kunye ne-Django ukuphucula amandla e-LLM kwizicelo zewebhu, kubandakanywa i-orchestration kunye neLangChain yokubuyiswa kwedatha engenamthungo kunye nokucubungula.

Yintoni iRAG?

I-RAG bubuchule obudibanisa amandla eemodeli zokuFundisa kunye nokuVelisa ukuvelisa iimpendulo ezichanekileyo nezinolwazi. Ingcamango esisiseko emva kwe-RAG kukuqala ukufumana ulwazi olufanelekileyo kwisiseko solwazi okanye kwisiseko sedatha, kwaye usebenzise olu lwazi ukuvelisa impendulo. Le ndlela ivumela iiLLMs ukuba zisebenzise ulwazi lwangaphandle kwaye zinike iimpendulo ezichanekileyo nezinolwazi.

Kutheni usebenzisa iRAG kunye neFastAPI kunye neDjango?

I-FastAPI kunye ne-Django zimbini zezona zikhokelo zewebhu ezidumileyo ezisetyenziselwa ukwakha izicelo zewebhu. Babonelela ngesiseko esomeleleyo kunye nesakhekekayo sokwakha usetyenziso lwewebhu, kwaye sinokudityaniswa ngokulula neendlela zeRAG zokuphucula amandla eLLM. I-FastAPI yinkqubo yewebhu yanamhlanje ebonelela ngendlela ekhawulezayo nesebenzayo yokwakha izicelo zewebhu, ngelixa i-Django iyisakhelo sewebhu esiphezulu esibonelela ngezakhiwo, iitemplates, kunye ne-APIs zokwakha izicelo zewebhu ezinamandla.

Ukusebenzisa iRAG ngeFastAPI

I-FastAPI inikezela ngendlela elula nesebenzayo yokuphumeza ubuchule be-RAG. Nantsi ibhloko yekhowudi yomzekelo ebonisa indlela yokusebenzisa i-FastAPI ukuphumeza i-RAG:

ukusuka kwi-fastapi yokungenisa i-FastAPI
ukusuka kwi-langchain yokungenisa i-LLMChain
ukusuka langchain.chains.openai ngenisa i-OpenAIApi

app = FastAPI ()

@app.get("/rag")
async def rag(umbuzo: str):
    
    llm_chain = LLMChain(
        llm=VulaAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChaindex(
                igama = "isalathi_ sam",
                amaxwebhu="doc1", "doc2", "doc3"]
            )
        )
    )

    # Yenza impendulo usebenzisa ikhonkco leLLM
    impendulo = llm_chain.run(umbuzo)

    buyisela {"impendulo": impendulo}

Kulo mzekelo, sichaza ikhonkco leLLM kusetyenziswa iklasi LLMChain esuka eLangChain. Emva koko sichaza icandelo lokubuyisela kusetyenziswa iklasi LangChainRetrieval, esetyenziselwa ukubuyisela ulwazi olufanelekileyo kwisiseko solwazi okanye kwisiseko sedatha. Okokugqibela, sisebenzisa indlela ethi baleka ukwenza impendulo kusetyenziswa ikhonkco leLLM.

Ukuphumeza iRAG ngeDjango

I-Django ibonelela ngesakhelo sewebhu esikwinqanaba eliphezulu esinokudibaniswa lula kunye nobuchule be-RAG. Nantsi ibhloko yekhowudi yomzekelo ebonisa indlela yokusebenzisa i-Django ukuphumeza iRAG:

ukusuka django.http ngenisa JsonResponse
ukusuka kwi-langchain yokungenisa i-LLMChain
ukusuka langchain.chains.openai ngenisa i-OpenAIApi

def rag(isicelo):
    # Chaza ikhonkco leLLM
    llm_chain = LLMChain(
        llm=VulaAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChaindex(
                igama = "isalathi_ sam",
                amaxwebhu="doc1", "doc2", "doc3"]
            )
        )
    )

    # Yenza impendulo usebenzisa ikhonkco leLLM
    impendulo = llm_chain.run(request.GET.get("query"))

    buyisela i-JsonResponse({"impendulo": impendulo})

Kulo mzekelo, sichaza umsebenzi wemboniselo rag ethatha umbuzo njengegalelo kwaye ivelise impendulo isebenzisa ikhonkco leLLM.

Ukucwangcisa iRAG ngeLangChain

ILangChain ibonelela ngendlela elula nesebenzayo yokucwangcisa ubuchule beRAG. Nantsi ibhloko yekhowudi yomzekelo ebonisa indlela yokusebenzisa iLangChain ukwenza iRAG:

ukusuka kwi-langchain yokungenisa i-LLMChain
ukusuka langchain.chains.openai ngenisa i-OpenAIApi

# Chaza ikhonkco leLLM
llm_chain = LLMChain(
    llm=VulaAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChaindex(
            igama = "isalathi_ sam",
            amaxwebhu="doc1", "doc2", "doc3"]
        )
    )
)

# Yenza impendulo usebenzisa ikhonkco leLLM
impendulo = llm_chain.run("Yintoni iRAG?")

shicilela(impendulo)

Kulo mzekelo, sichaza ikhonkco leLLM kusetyenziswa iklasi LLMChain esuka eLangChain. Emva koko sisebenzisa indlela yokuqhuba ukwenza impendulo kusetyenziswa ikhonkco leLLM.

Ephezulu 5-10 Eyeyona Isetyenziswayo Imiyalelo/iziqwengana

Nantsi eyona miyalelo/iziqwengana eziphezulu ezi-5-10 zokuphumeza iRAG nge-FastAPI kunye ne-Django:

  1. ukusuka kwi-langchain ngenisa i-LLMChain: Ngenisa iklasi LLMChain esuka eLangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza ikhonkco leLLM usebenzisa iklasi LLMChain.
  3. impendulo = llm_chain.run(umbuzo): Veza impendulo usebenzisa ikhonkco leLLM.
  4. ukusuka kwi-fastapi yokungenisa i-FastAPI: Ngenisa iklasi FastAPI ukusuka kwi-FastAPI.
  5. usetyenziso = FastAPI (): Chaza isicelo se-FastAPI.
  6. @app.get("/rag"): Chaza indlela yeRAG endpoint.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza ikhonkco leLLM usebenzisa iklasi LLMChain.
  8. impendulo = llm_chain.run(umbuzo): Veza impendulo usebenzisa ikhonkco leLLM.
  9. ukusuka kwi-django.http ngenisa i-JsonImpendulo: Thatha ngaphandle iklasi ethi JsonResponse esuka kwi-Django.
  10. buyisela i-JsonResponse({"impendulo": impendulo}): Buyisa impendulo ye-JSON kunye nempendulo eyenziweyo.

Umbono

Nanku umboniso wombhobho weRAG usebenzisa iChart.js:

{
  "type": "HorizontalBar",
  "idatha": {
    "labels": ["Ukubuyiswa", "Isizukulwana", "Ulungiso lwasemva"],
    "iiseti zedatha": [
      {
        "label": "RAG Pipeline",
        "idatha": [10, 20, 30],
        "umbala ongasemva": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "Umbala womda": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "BorderWidth": 1
      }
    ]
  },
  "iinketho": {
    "isihloko": {
      "bonisa": yinyani,
      "text": "RAG Pipeline"
    },
    "izikali": {
      "yAxes": [
        {
          "amanqaku": {
            "beginAtZero": yinyani
          }
        }
      ]
    }
  }
}

Lo mboniso ubonisa umbhobho weRAG onezigaba ezithathu: ukubuyiswa, ukuvelisa, kunye nokulungiswa emva kokulungiswa.

Isiphelo

Kule nqaku, sihlolisise ukuphunyezwa kweendlela ze-RAG zisebenzisa i-FastAPI kunye ne-Django ukuphucula amandla e-LLM kwizicelo zewebhu, kubandakanywa ne-orchestration kunye ne-LangChain yokubuyiswa kwedatha engenamthungo kunye nokucubungula. Siphinde sanikezela ngesikhokelo esisebenzayo sokuphumeza i-RAG nge-FastAPI kunye ne-Django, kubandakanywa nemizekelo yekhowudi kunye nokubonwa kombhobho we-RAG. Siyathemba ukuba eli nqaku libonelele ngesixhobo esiluncedo kubaphuhlisi abafuna ukuphumeza ubuchule be-RAG kwizicelo zabo zewebhu.


¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn