L-integrazzjoni tar-RAG (Ġenerazzjoni Żieda bl-Irkupru) ma' Oqfsa Moderna tal-Web: Gwida Prattika | B4N1

L-integrazzjoni tar-RAG (Ġenerazzjoni Żieda bl-Irkupru) ma' Oqfsa Moderna tal-Web: Gwida Prattika

9 months ago · b4n1 Read time: 4 min

Integrazzjoni ta' RAG (Ġenerazzjoni ta' Rekwiżit-Augmented) ma' Oqfsa Moderna tal-Web: Gwida Prattika

Introduzzjoni

F'dawn l-aħħar snin, il-qasam tal-Ipproċessar tal-Lingwa Naturali (NLP) rat żieda sinifikanti fl-iżvilupp tal-Mudelli tal-Lingwa Kbar (LLMs) u l-applikazzjonijiet tagħhom f'diversi oqsma. Madankollu, waħda mil-limitazzjonijiet ewlenin tal-LLMs hija l-inabbiltà tagħhom li jirkupraw u jinkorporaw għarfien estern fit-tweġibiet tagħhom. Dan huwa fejn jidħlu fis-seħħ it-tekniki tal-Ġenerazzjoni ta' Retrieval-Augmented (RAG). F'dan l-artikolu, se nesploraw l-implimentazzjoni ta 'tekniki RAG bl-użu ta' FastAPI u Django biex intejbu l-kapaċitajiet tal-LLM f'applikazzjonijiet tal-web, inkluża l-orkestrazzjoni ma 'LangChain għall-irkupru u l-ipproċessar tad-dejta bla xkiel.

X'inhu RAG?

RAG hija teknika li tgħaqqad il-qawwiet tal-mudelli tal-Irkupru u tal-Ġenerazzjoni biex tipproduċi tweġibiet aktar preċiżi u informattivi. L-idea bażika wara RAG hija li l-ewwel tiġi rkuprata informazzjoni rilevanti minn bażi ta 'għarfien jew database, u mbagħad tuża din l-informazzjoni biex tiġġenera rispons. Dan l-approċċ jippermetti lill-LLMs jisfruttaw l-għarfien estern u jipprovdu tweġibiet aktar preċiżi u informattivi.

Għaliex Uża RAG ma' FastAPI u Django?

FastAPI u Django huma tnejn mill-oqfsa tal-web l-aktar popolari użati għall-bini ta 'applikazzjonijiet tal-web. Huma jipprovdu infrastruttura robusta u skalabbli għall-bini ta 'applikazzjonijiet tal-web, u jistgħu jiġu integrati faċilment ma' tekniki RAG biex itejbu l-kapaċitajiet LLM. FastAPI huwa qafas tal-web modern li jipprovdi mod veloċi u effiċjenti biex jinbnew applikazzjonijiet tal-web, filwaqt li Django huwa qafas tal-web ta 'livell għoli li jipprovdi arkitettura, mudelli u APIs għall-bini ta' applikazzjonijiet tal-web robusti.

L-implimentazzjoni tar-RAG b'FastAPI

FastAPI jipprovdi mod sempliċi u effiċjenti biex jiġu implimentati tekniki RAG. Hawn blokk ta 'kodiċi eżempju li juri kif tuża FastAPI biex timplimenta RAG:

minn fastapi importazzjoni FastAPI
minn langchain importazzjoni LLMChain
minn langchain.chains.openai importazzjoni OpenAIApi

app = FastAPI()

@app.get ("/rag")
async def rag (mistoqsija: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        irkupru=LangChainRetrieval (
            indiċi=LangChainIndex(
                isem = "my_index",
                dokumenti="doc1", "doc2", "doc3"]
            )
        )
    )

    # Iġġenera rispons billi tuża l-katina LLM
    risposta = llm_chain.run (mistoqsija)

    ritorn {"rispons": risposta}

F'dan l-eżempju, aħna niddefinixxu katina LLM billi tuża l-klassi "LLMCain" minn LangChain. Aħna mbagħad niddefinixxu komponent ta 'rkupru billi tuża l-klassi "LangChainRetrieval", li tintuża biex tkun irkuprata informazzjoni rilevanti minn bażi ta' għarfien jew database. Fl-aħħarnett, nużaw il-metodu "run" biex niġġeneraw rispons billi tuża l-katina LLM.

L-implimentazzjoni ta' RAG ma' Django

Django jipprovdi qafas tal-web ta 'livell għoli li jista' jiġi integrat faċilment ma 'tekniki RAG. Hawn blokk ta 'kodiċi eżempju li juri kif tuża Django biex timplimenta RAG:

minn django.http importazzjoni JsonResponse
minn langchain importazzjoni LLMChain
minn langchain.chains.openai importazzjoni OpenAIApi

def rag (talba):
    # Iddefinixxi l-katina tal-LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        irkupru=LangChainRetrieval (
            indiċi=LangChainIndex(
                isem = "my_index",
                dokumenti="doc1", "doc2", "doc3"]
            )
        )
    )

    # Iġġenera rispons billi tuża l-katina LLM
    risposta = llm_chain.run(talba.GET.get("mistoqsija"))

    ritorn JsonResponse({"rispons": risposta})

F'dan l-eżempju, aħna niddefinixxu funzjoni tal-vista "rag" li tieħu mistoqsija bħala input u tiġġenera rispons billi tuża l-katina LLM.

L-orkestrazzjoni tar-RAG b'LangChain

LangChain jipprovdi mod sempliċi u effiċjenti biex jiġu orkestrati tekniki RAG. Hawnhekk hawn blokka ta' kodiċi ta' eżempju li turi kif tuża LangChain biex orkestra RAG:

minn langchain importazzjoni LLMChain
minn langchain.chains.openai importazzjoni OpenAIApi

# Iddefinixxi l-katina tal-LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    irkupru=LangChainRetrieval (
        indiċi=LangChainIndex(
            isem = "my_index",
            dokumenti="doc1", "doc2", "doc3"]
        )
    )
)

# Iġġenera rispons billi tuża l-katina LLM
rispons = llm_chain.run ("X'inhu RAG?")

ipprintja (rispons)

F'dan l-eżempju, aħna niddefinixxu katina LLM billi tuża l-klassi "LLMCain" minn LangChain. Imbagħad nużaw il-metodu "run" biex niġġeneraw rispons billi tuża l-katina LLM.

L-aqwa 5-10 Kmandi/Snippets l-aktar Użati

Hawn huma l-aqwa 5-10 kmandi/snippets l-aktar użati għall-implimentazzjoni tar-RAG b'FastAPI u Django:

  1. "minn langchain import LLMChain": Importa l-klassi "LLMCain" minn LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])))': Iddefinixxi katina LLM billi tuża l-klassi LLMCain`.
  3. rispons = llm_chain.run(query): Iġġenera rispons billi tuża l-katina LLM.
  4. minn fastapi import FastAPI: Importa l-klassi FastAPI minn FastAPI.
  5. app = FastAPI(): Iddefinixxi applikazzjoni FastAPI.
  6. @app.get("/rag"): Iddefinixxi rotta għall-endpoint RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Iddefinixxi katina LLM billi tuża l-klassi LLMCain.
  8. rispons = llm_chain.run(query): Iġġenera rispons billi tuża l-katina LLM.
  9. minn django.http importa JsonResponse: Importa l-klassi JsonResponse minn Django.
  10. return JsonResponse({"response": response}): Irritorna tweġiba JSON bir-rispons iġġenerat.

Viżwalizzazzjoni

Hawnhekk hawn viżwalizzazzjoni tal-pipeline RAG billi tuża Chart.js:

{
  "tip": "Barra orizzontali",
  "data": {
    "tikketti": ["Irkupru", "Ġenerazzjoni", "Proċessar ta' wara"],
    "settijiet ta' dejta": [
      {
        "label": "RAG Pipeline",
        "data": [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
      }
    ]
  },
  "għażliet": {
    "titolu": {
      "display": veru,
      "text": "RAG Pipeline"
    },
    "skali": {
      "yAxes": [
        {
          "qurdien": {
            "beginAtZero": veru
          }
        }
      ]
    }
  }
}

Din il-viżwalizzazzjoni turi l-pipeline RAG bi tliet stadji: irkupru, ġenerazzjoni u post-ipproċessar.

Konklużjoni

F'dan l-artikolu, esplorajna l-implimentazzjoni ta 'tekniki RAG bl-użu ta' FastAPI u Django biex itejbu l-kapaċitajiet tal-LLM f'applikazzjonijiet tal-web, inkluża l-orkestrazzjoni ma 'LangChain għall-irkupru u l-ipproċessar tad-dejta bla xkiel. Aħna pprovdejna wkoll gwida prattika għall-implimentazzjoni ta 'RAG ma' FastAPI u Django, inklużi eżempji ta 'kodiċi u viżwalizzazzjoni tal-pipeline RAG. Nittamaw li dan l-artikolu pprovda riżors utli għall-iżviluppaturi li qed ifittxu li jimplimentaw tekniki RAG fl-applikazzjonijiet tal-web tagħhom.


Have Questions?

Let's Talk

Contact me on LinkedIn