RAG (Retrieval-Augmented Generation) integrēšana ar moderniem tīmekļa ietvariem: praktiska rokasgrāmata | B4N1

RAG (Retrieval-Augmented Generation) integrēšana ar moderniem tīmekļa ietvariem: praktiska rokasgrāmata

9 months ago · b4n1 Read time: 4 min

** RAG (Retrieval-Augmented Generation) integrēšana ar moderniem tīmekļa ietvariem: praktiska rokasgrāmata**

Ievads

Pēdējos gados dabiskās valodas apstrādes (NLP) joma ir piedzīvojusi ievērojamu uzplaukumu lielo valodu modeļu (LLM) un to lietojumu attīstībā dažādās jomās. Tomēr viens no galvenajiem LLM ierobežojumiem ir viņu nespēja iegūt un iekļaut ārējās zināšanas savās atbildēs. Šeit tiek izmantotas izguves paplašinātās paaudzes (RAG) metodes. Šajā rakstā mēs izpētīsim RAG metožu ieviešanu, izmantojot FastAPI un Django, lai uzlabotu LLM iespējas tīmekļa lietojumprogrammās, tostarp orķestrēšanu ar LangChain netraucētai datu izguvei un apstrādei.

Kas ir RAG?

RAG ir metode, kas apvieno izguves un ģenerēšanas modeļu stiprās puses, lai sniegtu precīzākas un informatīvākas atbildes. RAG pamatideja ir vispirms izgūt attiecīgo informāciju no zināšanu bāzes vai datu bāzes un pēc tam izmantot šo informāciju atbildes ģenerēšanai. Šī pieeja ļauj LLM izmantot ārējās zināšanas un sniegt precīzākas un informatīvākas atbildes.

Kāpēc izmantot RAG ar FastAPI un Django?

FastAPI un Django ir divas no populārākajām tīmekļa ietvariem, ko izmanto tīmekļa lietojumprogrammu veidošanai. Tie nodrošina stabilu un mērogojamu infrastruktūru tīmekļa lietojumprogrammu izveidei, un tos var viegli integrēt ar RAG metodēm, lai uzlabotu LLM iespējas. FastAPI ir moderna tīmekļa ietvars, kas nodrošina ātru un efektīvu veidu, kā izveidot tīmekļa lietojumprogrammas, savukārt Django ir augsta līmeņa tīmekļa ietvars, kas nodrošina arhitektūru, veidnes un API stabilu tīmekļa lietojumprogrammu izveidei.

RAG ieviešana ar FastAPI

FastAPI nodrošina vienkāršu un efektīvu veidu, kā ieviest RAG metodes. Šeit ir koda bloka piemērs, kas parāda, kā izmantot FastAPI, lai ieviestu RAG:

no fastapi importa FastAPI
no langchain importa LLMChain
no langchain.chains.openai importa OpenAIApi

lietotne = FastAPI()

@app.get("/rag")
async def rag(query: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                name = "mans_indekss",
                document=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Ģenerējiet atbildi, izmantojot LLM ķēdi
    atbilde = llm_chain.run(query)

    return {"response": response}

Šajā piemērā mēs definējam LLM ķēdi, izmantojot LLMChain klasi no LangChain. Pēc tam mēs definējam izguves komponentu, izmantojot klasi "LangChainRetrieval", ko izmanto, lai izgūtu atbilstošu informāciju no zināšanu bāzes vai datu bāzes. Visbeidzot, mēs izmantojam metodi "palaist", lai ģenerētu atbildi, izmantojot LLM ķēdi.

** RAG ieviešana ar Django**

Django nodrošina augsta līmeņa tīmekļa ietvaru, ko var viegli integrēt ar RAG metodēm. Šeit ir koda bloka piemērs, kas parāda, kā izmantot Django, lai ieviestu RAG:

no django.http importa JsonResponse
no langchain importa LLMChain
no langchain.chains.openai importa OpenAIApi

def lupata (pieprasījums):
    # Definējiet LLM ķēdi
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                name = "mans_indekss",
                document=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Ģenerējiet atbildi, izmantojot LLM ķēdi
    atbilde = llm_chain.run(request.GET.get("vaicājums"))

    return JsonResponse({"atbilde": atbilde})

Šajā piemērā mēs definējam skata funkciju "rag", kas izmanto vaicājumu kā ievadi un ģenerē atbildi, izmantojot LLM ķēdi.

RAG orķestrēšana ar LangChain

LangChain nodrošina vienkāršu un efektīvu veidu, kā orķestrēt RAG metodes. Šeit ir koda bloka piemērs, kas parāda, kā izmantot LangChain, lai organizētu RAG:

no langchain importa LLMChain
no langchain.chains.openai importa OpenAIApi

# Definējiet LLM ķēdi
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChainIndex(
            name = "mans_indekss",
            document=["doc1", "doc2", "doc3"]
        )
    )
)

# Ģenerējiet atbildi, izmantojot LLM ķēdi
response = llm_chain.run("Kas ir RAG?")

izdrukāt (atbilde)

Šajā piemērā mēs definējam LLM ķēdi, izmantojot LLMChain klasi no LangChain. Pēc tam mēs izmantojam metodi "palaist", lai ģenerētu atbildi, izmantojot LLM ķēdi.

5–10 populārākās komandas/fragmenti

Šeit ir 5–10 visbiežāk izmantotās komandas/fragmenti RAG ieviešanai ar FastAPI un Django:

  1. No langchain importa LLMChain: importējiet LLMChain klasi no LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"]))): definējiet LLM ķēdi, izmantojot LLMChain klasi.
  3. response = llm_chain.run(query): ģenerējiet atbildi, izmantojot LLM ķēdi.
  4. No FastAPI importēšanas FastAPI: importējiet FastAPI klasi no FastAPI.
  5. app = FastAPI(): definējiet FastAPI lietojumprogrammu.
  6. @app.get("/rag"): definējiet RAG galapunkta maršrutu.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"]))): definējiet LLM ķēdi, izmantojot LLMChain klasi.
  8. response = llm_chain.run(query): ģenerējiet atbildi, izmantojot LLM ķēdi.
  9. No django.http importēt JsonResponse: importējiet klasi JsonResponse no Django.
  10. return JsonResponse({"atbilde": atbilde}): atgriezt JSON atbildi ar ģenerēto atbildi.

Vizualizācija

Šeit ir RAG konveijera vizualizācija, izmantojot Chart.js:

{
  "type": "horizontalBar",
  "dati": {
    "iezīmes": ["Izgūšana", "Paaudze", "Pēcapstrāde"],
    "datu kopas": [
      {
        "label": "RAG Pipeline",
        "dati": [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
      }
    ]
  },
  "opcijas": {
    "title": {
      "displejs": patiess,
      "teksts": "RAG cauruļvads"
    },
    "svari": {
      "yAxes": [
        {
          "ērces": {
            "beginAtZero": taisnība
          }
        }
      ]
    }
  }
}

Šī vizualizācija parāda RAG konveijeru ar trim posmiem: izguve, ģenerēšana un pēcapstrāde.

Secinājums

Šajā rakstā mēs izpētījām RAG metožu ieviešanu, izmantojot FastAPI un Django, lai uzlabotu LLM iespējas tīmekļa lietojumprogrammās, tostarp orķestrēšanu ar LangChain netraucētai datu izguvei un apstrādei. Mēs nodrošinājām arī praktisku rokasgrāmatu par RAG ieviešanu ar FastAPI un Django, tostarp koda piemērus un RAG konveijera vizualizāciju. Mēs ceram, ka šis raksts ir nodrošinājis noderīgu resursu izstrādātājiem, kuri vēlas ieviest RAG metodes savās tīmekļa lietojumprogrammās.


Have Questions?

Let's Talk

Contact me on LinkedIn