Integrimi i RAG (Gjenerimi i Shtuar i Rikthimit) me Kornizat Moderne të Uebit: Një Udhëzues Praktik | B4N1

Integrimi i RAG (Gjenerimi i Shtuar i Rikthimit) me Kornizat Moderne të Uebit: Një Udhëzues Praktik

9 months ago · b4n1 Read time: 5 min

Integrimi i RAG (Gjenerimi i Shtuar i Rikthimit) me Kornizat Moderne të Uebit: Një Udhëzues Praktik

Hyrje

Vitet e fundit, fusha e Përpunimit të Gjuhëve Natyrore (NLP) ka dëshmuar një rritje të konsiderueshme në zhvillimin e Modeleve të Mëdha të Gjuhës (LLM) dhe aplikimeve të tyre në fusha të ndryshme. Megjithatë, një nga kufizimet kryesore të LLM-ve është paaftësia e tyre për të tërhequr dhe përfshirë njohuritë e jashtme në përgjigjet e tyre. Këtu hyjnë në lojë teknikat Retrieval-Augmented Generation (RAG). Në këtë artikull, ne do të eksplorojmë zbatimin e teknikave RAG duke përdorur FastAPI dhe Django për të përmirësuar aftësitë LLM në aplikacionet në ueb, duke përfshirë orkestrimin me LangChain për marrjen dhe përpunimin pa probleme të të dhënave.

Çfarë është RAG?

RAG është një teknikë që kombinon pikat e forta të modeleve të rikthimit dhe gjenerimit për të prodhuar përgjigje më të sakta dhe informuese. Ideja bazë e RAG-ut është që fillimisht të merret informacioni përkatës nga një bazë njohurish ose një bazë të dhënash, dhe më pas të përdoret ky informacion për të gjeneruar një përgjigje. Kjo qasje u lejon LLM-ve të shfrytëzojnë njohuritë e jashtme dhe të ofrojnë përgjigje më të sakta dhe informative.

Pse të përdorni RAG me FastAPI dhe Django?

FastAPI dhe Django janë dy nga kornizat më të njohura të uebit që përdoren për ndërtimin e aplikacioneve në ueb. Ato ofrojnë një infrastrukturë të fuqishme dhe të shkallëzueshme për ndërtimin e aplikacioneve në internet dhe mund të integrohen lehtësisht me teknikat RAG për të përmirësuar aftësitë LLM. FastAPI është një kornizë moderne ueb që ofron një mënyrë të shpejtë dhe efikase për të ndërtuar aplikacione ueb, ndërsa Django është një kornizë ueb e nivelit të lartë që ofron një arkitekturë, shabllone dhe API për ndërtimin e aplikacioneve të fuqishme në internet.

Zbatimi i RAG me FastAPI

FastAPI ofron një mënyrë të thjeshtë dhe efikase për të zbatuar teknikat RAG. Këtu është një shembull bllok kodi që tregon se si të përdorni FastAPI për të zbatuar RAG:

nga importi fastapi FastAPI
nga importi langchain LLMChain
nga langchain.chains.openai import OpenAIApi

aplikacioni = FastAPI()

@app.get ("/rag")
async def rag (pyetje: str):
    
    zinxhir_llm = zinxhir LLMC(
        llm=OpenAIApi(),
        rikthim=Retrieval LangChain(
            index=Indeksi i zinxhirit të gjuhës (
                emri = "indeksi im",
                dokumente=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Gjeneroni një përgjigje duke përdorur zinxhirin LLM
    përgjigje = llm_chain.run (pyetje)

    kthej {"përgjigje": përgjigje}

Në këtë shembull, ne përcaktojmë një zinxhir LLM duke përdorur klasën LLMChain nga LangChain. Më pas përcaktojmë një komponent rikthimi duke përdorur klasën LangChainRetrieval, e cila përdoret për të tërhequr informacionin përkatës nga një bazë njohurish ose një bazë të dhënash. Së fundi, ne përdorim metodën "run" për të gjeneruar një përgjigje duke përdorur zinxhirin LLM.

Zbatimi i RAG me Django

Django ofron një kornizë ueb të nivelit të lartë që mund të integrohet lehtësisht me teknikat RAG. Këtu është një shembull bllok kodi që tregon se si të përdoret Django për të zbatuar RAG:

nga django.http import JsonResponse
nga importi langchain LLMChain
nga langchain.chains.openai import OpenAIApi

def rag (kërkesë):
    # Përcaktoni zinxhirin LLM
    zinxhir_llm = zinxhir LLMC(
        llm=OpenAIApi(),
        rikthim=Retrieval LangChain(
            index=Indeksi i zinxhirit të gjuhës (
                emri = "indeksi im",
                dokumente=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Gjeneroni një përgjigje duke përdorur zinxhirin LLM
    përgjigje = llm_chain.run(request.GET.get("query"))

    kthe JsonResponse ({"përgjigje": përgjigje})

Në këtë shembull, ne përcaktojmë një funksion shikimi rag që merr një pyetje si hyrje dhe gjeneron një përgjigje duke përdorur zinxhirin LLM.

Orkestrimi i RAG me LangChain

LangChain ofron një mënyrë të thjeshtë dhe efikase për të orkestruar teknikat RAG. Këtu është një shembull bllok kodi që tregon se si të përdorni LangChain për të orkestruar RAG:

nga importi langchain LLMChain
nga langchain.chains.openai import OpenAIApi

# Përcaktoni zinxhirin LLM
zinxhir_llm = zinxhir LLMC(
    llm=OpenAIApi(),
    rikthim=Retrieval LangChain(
        index=Indeksi i zinxhirit të gjuhës (
            emri = "indeksi im",
            dokumente=["doc1", "doc2", "doc3"]
        )
    )
)

# Gjeneroni një përgjigje duke përdorur zinxhirin LLM
përgjigje = llm_chain.run ("Çfarë është RAG?")

shtyp (përgjigje)

Në këtë shembull, ne përcaktojmë një zinxhir LLM duke përdorur klasën LLMChain nga LangChain. Më pas përdorim metodën "run" për të gjeneruar një përgjigje duke përdorur zinxhirin LLM.

Top 5-10 komandat/copëzat më të përdorura

Këtu janë 5-10 komandat/copëzat më të përdorura për zbatimin e RAG me FastAPI dhe Django:

  1. nga importi langchain LLMChain: Importoni klasën LLMChain nga LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"]))): Përcaktoni një zinxhir LLMduke përdorur klasënLLMCha
  3. response = llm_chain.run(query): Gjeneroni një përgjigje duke përdorur zinxhirin LLM.
  4. nga fastapi import FastAPI: Importo klasën FastAPI nga FastAPI.
  5. app = FastAPI(): Përcaktoni një aplikacion FastAPI.
  6. @app.get("/rag"): Përcaktoni një rrugë për pikën përfundimtare të RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"]))): Përcaktoni një zinxhir LLMduke përdorur klasënLLMCha
  8. response = llm_chain.run(query): Gjeneroni një përgjigje duke përdorur zinxhirin LLM.
  9. nga django.http import JsonResponse: Importoni klasën JsonResponse nga Django.
  10. return JsonResponse({"response": answer}): Ktheni një përgjigje JSON me përgjigjen e krijuar.

Vizualizim

Këtu është një vizualizimi i tubacionit RAG duke përdorur Chart.js:

{
  "lloj": "horizontalBar",
  "të dhënat": {
    "etiketat": ["Rikthim", "Gjenerimi", "Past-përpunimi"],
    "grupet e të dhënave": [
      {
        "etiketa": "RAG Pipeline",
        "të dhënat": [10, 20, 30],
        "Ngjyra e sfondit": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "Ngjyra e kufirit": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "Gjerësia e kufirit": 1
      }
    ]
  },
  "opsione": {
    "titulli": {
      "ekrani": i vërtetë,
      "tekst": "RAG Pipeline"
    },
    "peshore": {
      "yAxes": [
        {
          "ticks": {
            "beginAtZero": e vërtetë
          }
        }
      ]
    }
  }
}

Ky vizualizim tregon tubacionin RAG me tre faza: rikthimi, gjenerimi dhe pas-përpunimi.

përfundim

Në këtë artikull, ne eksploruam zbatimin e teknikave RAG duke përdorur FastAPI dhe Django për të përmirësuar aftësitë LLM në aplikacionet në ueb, duke përfshirë orkestrimin me LangChain për rikthimin dhe përpunimin pa probleme të të dhënave. Ne siguruam gjithashtu një udhëzues praktik për zbatimin e RAG me FastAPI dhe Django, duke përfshirë shembuj kodesh dhe një vizualizim të tubacionit RAG. Shpresojmë që ky artikull të ketë ofruar një burim të dobishëm për zhvilluesit që kërkojnë të zbatojnë teknikat RAG në aplikacionet e tyre të internetit.


Have Questions?

Let's Talk

Contact me on LinkedIn