Ukuhlanganisa i-RAG (i-Retrieval-Augmented Generation) ne-Modern Web Frameworks: Umhlahlandlela Osebenzayo | B4N1

Ukuhlanganisa i-RAG (i-Retrieval-Augmented Generation) ne-Modern Web Frameworks: Umhlahlandlela Osebenzayo

9 months ago · b4n1 Tiempo de lectura: 3 min

Ukuhlanganisa i-RAG (Isizukulwane Sokubuyisa-Esithuthukisiwe) Nezinhlaka Zewebhu Zesimanje: Umhlahlandlela Osebenzayo

Isingeniso

Eminyakeni yakamuva, umkhakha we-Natural Language Processing (NLP) ubone ukwanda okukhulu ekuthuthukisweni kwamamodeli olimi olukhulu (LLMs) kanye nokusetshenziswa kwawo ezizindeni ezahlukahlukene. Nokho, omunye wemikhawulo emikhulu yama-LLM ukungakwazi ukubuyisa nokuhlanganisa ulwazi lwangaphandle ezimpendulweni zawo. Kulapho amasu e-Retrieval-Augmented Generation (RAG) esebenza khona. Kulesi sihloko, sizohlola ukuqaliswa kwamasu e-RAG sisebenzisa i-FastAPI ne-Django ukuthuthukisa amakhono e-LLM ezinhlelweni zokusebenza zewebhu, okuhlanganisa i-orchestration ne-LangChain yokubuyiswa kwedatha okungenamthungo nokucubungula.

Iyini iRAG?

I-RAG iwubuchule obuhlanganisa amandla amamodeli Wokubuyisa kanye Nesizukulwane ukuze kukhiqizwe izimpendulo ezinembe kakhulu nezifundisayo. Umqondo oyisisekelo nge-RAG uwukuthola kuqala ulwazi olufanele kusizinda solwazi noma kusizindalwazi, bese usebenzisa lolu lwazi ukuze ukhiqize impendulo. Le ndlela ivumela ama-LLM ukuthi asebenzise ulwazi lwangaphandle futhi anikeze izimpendulo ezinembayo nezifundisayo.

Kungani Sebenzisa i-RAG nge-FastAPI ne-Django?

I-FastAPI ne-Django yizinhlaka ezimbili zewebhu ezaziwa kakhulu ezisetshenziselwa ukwakha izinhlelo zokusebenza zewebhu. Bahlinzeka ngengqalasizinda eqinile nengalawuleki yokwakha izinhlelo zokusebenza zewebhu, futhi ingahlanganiswa kalula namasu e-RAG ukuthuthukisa amakhono e-LLM. I-FastAPI wuhlaka lwewebhu lwesimanje oluhlinzeka ngendlela esheshayo nephumelelayo yokwakha izinhlelo zokusebenza zewebhu, kuyilapho i-Django iwuhlaka lwewebhu olusezingeni eliphezulu oluhlinzeka ngezakhiwo, izifanekiso, nama-API wokwakha izinhlelo zokusebenza zewebhu eziqinile.

Ukusebenzisa i-RAG nge-FastAPI

I-FastAPI inikeza indlela elula nephumelelayo yokusebenzisa amasu e-RAG. Nasi isibonelo sokuvimbela ikhodi esibonisa indlela yokusebenzisa i-FastAPI ukuze kusetshenziswe i-RAG:

kusuka ku-fastapi ngenisa i-FastAPI
kusuka ku-langchain ngenisa i-LLMChain
kusuka ku-langchain.chains.openai ngenisa i-OpenAIApi

uhlelo lokusebenza = FastAPI()

@app.get("/rag")
i-async def rag(umbuzo: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        ukubuyisa=LangChainRetrieval(
            index=LangChaindex(
                igama="inkomba_yami",
                imibhalo="doc1", "doc2", "doc3"]
            )
        )
    )

    # Khiqiza impendulo usebenzisa iketango le-LLM
    impendulo = llm_chain.run(umbuzo)

    buyisela {"impendulo": impendulo}

Kulesi sibonelo, sichaza uchungechunge lwe-LLM sisebenzisa ikilasi elithi LLMChain elisuka ku-LangChain. Sibe sesichaza ingxenye yokubuyisa sisebenzisa ikilasi elithi LangChainRetrieval, elisetshenziselwa ukubuyisa ulwazi olubalulekile kusizinda solwazi noma kusizindalwazi. Ekugcineni, sisebenzisa indlela ethi run ukuze sikhiqize impendulo sisebenzisa uchungechunge lwe-LLM.

Ukusebenzisa i-RAG nge-Django

I-Django inikeza uhlaka lwewebhu olusezingeni eliphezulu olungahlanganiswa kalula namasu e-RAG. Nasi isibonelo sebhulokhi yekhodi ebonisa indlela yokusebenzisa i-Django ukuze kusetshenziswe i-RAG:

kusuka ku-django.http ngenisa i-JsonResponse
kusuka ku-langchain ngenisa i-LLMChain
kusuka ku-langchain.chains.openai ngenisa i-OpenAIApi

def rag (isicelo):
    # Chaza uchungechunge lwe-LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        ukubuyisa=LangChainRetrieval(
            index=LangChaindex(
                igama="inkomba_yami",
                imibhalo="doc1", "doc2", "doc3"]
            )
        )
    )

    # Khiqiza impendulo usebenzisa iketango le-LLM
    impendulo = llm_chain.run(request.GET.get("query"))

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

Kulesi sibonelo, sichaza umsebenzi wokubuka othi rag othatha umbuzo njengokufakwayo futhi okhiqize impendulo kusetshenziswa uchungechunge lwe-LLM.

I-RAG yokuhlela ngeLangChain

I-LangChain inikeza indlela elula nephumelelayo yokuhlela amasu e-RAG. Nasi isibonelo sebhulokhi yekhodi ebonisa indlela yokusebenzisa i-LangChain ukuze uhlele i-RAG:

kusuka ku-langchain ngenisa i-LLMChain
kusuka ku-langchain.chains.openai ngenisa i-OpenAIApi

# Chaza uchungechunge lwe-LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    ukubuyisa=LangChainRetrieval(
        index=LangChaindex(
            igama="inkomba_yami",
            imibhalo="doc1", "doc2", "doc3"]
        )
    )
)

# Khiqiza impendulo usebenzisa iketango le-LLM
impendulo = llm_chain.run("Iyini i-RAG?")

phrinta (impendulo)

Kulesi sibonelo, sichaza uchungechunge lwe-LLM sisebenzisa ikilasi elithi LLMChain elisuka ku-LangChain. Sibe sesisebenzisa indlela ethi run ukuze sikhiqize impendulo sisebenzisa uchungechunge lwe-LLM.

Imiyalo/Amazwibela Aphezulu Okuyi-5-10

Nansi imiyalo/izifinyezo eziphezulu ezi-5-10 ezisetshenziswa kakhulu ekusebenziseni i-RAG nge-FastAPI ne-Django:

  1. kusuka ku-langchain ngenisa i-LLMChain: Ngenisa ikilasi elithi LLMChain lisuka kwa-LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza iketango le-LLM usebenzisa ikilasi elithi LLMChain.
  3. impendulo = llm_chain.run(umbuzo): Khiqiza impendulo usebenzisa iketango le-LLM.
  4. kusuka ku-fastapi ngenisa i-FastAPI: Ngenisa ikilasi elithi FastAPI ukusuka ku-FastAPI.
  5. uhlelo lokusebenza = FastAPI(): Chaza uhlelo lokusebenza lwe-FastAPI.
  6. @app.get("/rag"): Chaza umzila wephoyinti lokugcina le-RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(igama="my_index", documents=["doc1", "doc2", "doc3"]))): Chaza iketango le-LLM usebenzisa ikilasi elithi LLMChain.
  8. impendulo = llm_chain.run(umbuzo): Khiqiza impendulo usebenzisa iketango le-LLM.
  9. kusuka ku-django.http ngenisa i-JsonResponse: Ngenisa ikilasi elithi JsonResponse lisuka ku-Django.
  10. buyisela i-JsonResponse({"impendulo": impendulo}): Buyisa impendulo ye-JSON nempendulo ekhiqiziwe.

Ukubona

Nakhu okubonwayo kwepayipi le-RAG kusetshenziswa i-Chart.js:

{
  "type": "horizontalBar",
  "idatha": {
    "labels": ["Retrieval", "Generation", "Post-processing"],
    "idathasethi": [
      {
        "label": "RAG Pipeline",
        "idatha": [10, 20, 30],
        "Umbala wangemuva": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "Umbala Womngcele": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "BorderWidth": 1
      }
    ]
  },
  "izinketho": {
    "isihloko": {
      "Display": iqiniso,
      "text": "RAG Pipeline"
    },
    "izikali": {
      "yAxes": [
        {
          "imikhaza": {
            "beginAtZero": kuyiqiniso
          }
        }
      ]
    }
  }
}

Lokhu kubukwa kukhombisa ipayipi le-RAG elinezigaba ezintathu: ukubuyisa, ukukhiqiza, kanye nokucubungula ngemuva.

Isiphetho

Kulesi sihloko, sihlole ukuqaliswa kwamasu e-RAG sisebenzisa i-FastAPI ne-Django ukuthuthukisa amakhono e-LLM ezinhlelweni zokusebenza zewebhu, okuhlanganisa i-orchestration ne-LangChain yokuthola nokucutshungulwa kwedatha okungenamthungo. Siphinde sahlinzeka ngomhlahlandlela osebenzayo wokusebenzisa i-RAG nge-FastAPI ne-Django, okuhlanganisa izibonelo zekhodi kanye nokubonwa kwepayipi le-RAG. Sithemba ukuthi lesi sihloko sinikeze insiza ewusizo konjiniyela abafuna ukusebenzisa amasu e-RAG ezinhlelweni zabo zokusebenza zewebhu.


¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn