Tu'ufa'atasia o le RAG (Retrieval-Augmented Generation) fa'atasi ai ma Ta'iala Fa'aonaponei: O se Ta'iala Fa'atino | B4N1

Tu'ufa'atasia o le RAG (Retrieval-Augmented Generation) fa'atasi ai ma Ta'iala Fa'aonaponei: O se Ta'iala Fa'atino

9 months ago · b4n1 Read time: 5 min

** Tu'ufa'atasia le RAG (Toe Fa'aopoopoina Fa'atupuina) fa'atasi ma Ta'iala Fa'aonaponei: O se Ta'iala Fa'atino**

Fa'atomuaga

I tausaga talu ai nei, o le fanua o le Natural Language Processing (NLP) ua molimauina se siʻitia tele i le atinaʻeina o Large Language Models (LLMs) ma a latou talosaga i vaega eseese. Ae ui i lea, o se tasi o tapulaʻa tele o LLM o lo latou le mafai ona toe aumai ma faʻaogaina le malamalama mai fafo i a latou tali. O i'inei e fa'atino ai faiga fa'atupu fa'atupu fa'aopoopo (RAG). I totonu o lenei tusiga, o le a matou suʻesuʻeina le faʻatinoina o auala RAG e faʻaaoga ai FastAPI ma Django e faʻaleleia ai le gafatia o le LLM i luga o upega tafaʻilagi, e aofia ai le tuʻufaʻatasia ma LangChain mo le toe maua ma le faʻaogaina o faʻamaumauga.

O le a le RAG?

O le RAG o se metotia e tuʻufaʻatasia ai le malosi o le Retrieval and Generation models e maua ai tali saʻo ma faʻamatalaga. O le manatu autu i tua o le RAG o le toe aumai muamua faʻamatalaga talafeagai mai se faʻamatalaga faʻamatalaga poʻo se faʻamaumauga, ona faʻaaoga lea o faʻamatalaga e faʻatupu ai se tali. O lenei faiga e mafai ai e LLM ona fa'aogaina le malamalama mai fafo ma tu'uina atu tali sa'o ma fa'amatalaga.

Aisea e Fa'aaoga ai le RAG ma FastAPI ma Django?

O le FastAPI ma le Django e lua o ta'iala sili ona ta'uta'ua i luga ole laiga e fa'aogaina mo le fausiaina o upegatafa'ilagi. Latou te tuʻuina atu se atinaʻe malosi ma faʻalauteleina mo le fausiaina o upega tafaʻilagi, ma e mafai ona faigofie ona tuʻufaʻatasia ma auala RAG e faʻaleleia atili ai le mafai LLM. O le FastAPI ose fa'alāpotopotoga i luga ole laiga fa'aonaponei e maua ai se auala vave ma lelei e fausia ai fa'aoga i luga ole laiga, a'o Django ose fa'asologa o upegatafa'ilagi maualuga e maua ai se fausaga, fa'ata'ita'iga, ma API mo le fauina o upegatafa'ilagi malolosi.

Faʻaaogaina RAG ma FastAPI

O le FastAPI o loʻo tuʻuina atu se auala faigofie ma lelei e faʻatino ai metotia RAG. O se faʻataʻitaʻiga poloka poloka e faʻaalia ai le faʻaogaina o le FastAPI e faʻatino ai le RAG:

mai fastapi faaulufale mai FastAPI
mai langchain faaulufale mai LLMChain
mai langchain.chains.openai faaulufale mai OpenAIApi

app = FastAPI()

@app.get("/rag")
async def rag(fesili: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        toe maua=LangChainRetrieval(
            index=LangChainIndex(
                igoa="my_index",
                pepa = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # Fausia se tali e faʻaaoga ai le filifili LLM
    tali = llm_chain.run(fesili)

    toe faafoi {"response": tali}

I lenei faʻataʻitaʻiga, matou te faʻamatalaina se filifili LLM e faʻaaoga ai le vasega 'LLMChain' mai LangChain. Ona matou faʻamalamalamaina lea o se vaega e maua mai ai e faʻaaoga ai le vasega LangChainRetrieval, lea e faʻaaogaina e toe maua mai ai faʻamatalaga talafeagai mai se faʻamatalaga malamalama poʻo se faʻamaumauga. Ma le mea mulimuli, matou te faʻaogaina le 'tafe' auala e faʻatupu ai se tali e faʻaaoga ai le filifili LLM.

Faʻaaogaina RAG ma Django

Django o loʻo tuʻuina atu se 'upega tafaʻilagi maualuga maualuga e mafai ona faigofie ona tuʻufaʻatasia ma metotia RAG. O se faʻataʻitaʻiga poloka poloka e faʻaalia ai le faʻaogaina o Django e faʻatino ai le RAG:

mai le django.http fa'aulufale mai JsonResponse
mai langchain faaulufale mai LLMChain
mai langchain.chains.openai faaulufale mai OpenAIApi

def ieie(tatalo):
    # Fa'amatala le filifili LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        toe maua=LangChainRetrieval(
            index=LangChainIndex(
                igoa="my_index",
                pepa = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # Fausia se tali e faʻaaoga ai le filifili LLM
    tali = llm_chain.run(request.GET.get("query"))

    toe faafoi JsonResponse({"tali": tali})

I lenei faʻataʻitaʻiga, matou te faʻamatalaina se galuega faʻaaliga 'rag' e ave ai se fesili e fai ma faʻaoga ma faʻatupuina se tali e faʻaaoga ai le filifili LLM.

Orchestrating RAG ma LangChain

LangChain e tuʻuina atu se auala faigofie ma lelei e faʻapipiʻi ai metotia RAG. O se faʻataʻitaʻiga poloka poloka e faʻaalia ai le faʻaogaina o le LangChain e faʻapipiʻi ai le RAG:

mai langchain faaulufale mai LLMChain
mai langchain.chains.openai faaulufale mai OpenAIApi

# Fa'amatala le filifili LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    toe maua=LangChainRetrieval(
        index=LangChainIndex(
            igoa="my_index",
            pepa = ["doc1", "doc2", "doc3"]
        )
    )
)

# Fausia se tali e faʻaaoga ai le filifili LLM
tali = llm_chain.run("O le a le RAG?")

lolomi(tali)

I lenei faʻataʻitaʻiga, matou te faʻamatalaina se filifili LLM e faʻaaoga ai le vasega 'LLMChain' mai LangChain. Ona matou fa'aogaina lea o le 'run' auala e fa'atupu ai se tali e fa'aaoga ai le filifili LLM.

Poloaiga/Snippets pito i luga 5-10 Fa'aaogaina

O le pito i luga 5-10 sili ona faʻaaogaina tulafono / snippets mo le faʻatinoina o le RAG ma FastAPI ma Django:

  1. mai langchain import LLMChain: Auina mai le vasega LLMChain mai LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Fa'amatala se filifili LLM e fa'aaoga ai le vasega LLMChain.
  3. tali = llm_chain.run(query): Fausia se tali e fa'aaoga ai le filifili LLM.
  4. mai fastapi import FastAPI: Auina mai le vasega 'FastAPI` mai FastAPI.
  5. app = FastAPI(): Fa'amatala se talosaga FastAPI.
  6. @app.get("/rag"): Fa'amatala se auala mo le fa'ai'uga o le RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Fa'amatala se filifili LLM e fa'aaoga ai le vasega LLMChain.
  8. tali = llm_chain.run(query): Fausia se tali e fa'aaoga ai le filifili LLM.
  9. mai django.http import JsonResponse: Auina mai le vasega JsonResponse mai Django.
  10. return JsonResponse({"response": response}): Faafoi se tali JSON ma le tali na faia.

Va'aiga

Ole fa'aaliga lea ole paipa RAG ile fa'aogaina ole Chart.js:

{
  "type": "Papa fa'asaga'i",
  "fa'amatalaga": {
    "labels": ["Toe toe maua mai", "Augatupulaga", "Po'o le faagaioiina"],
    "fa'amaumauga": [
      {
        "label": "RAG Paipa",
        "faamatalaga": [10, 20, 30],
        "Lulu lanu": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "Lulu tuaoi": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "BorderWidth": 1
      }
    ]
  },
  "filifiliga": {
    "igoa": {
      "fa'aaliga": moni,
      "text": "RAG Pipeline"
    },
    "fua": {
      "yAxes": [
        {
          "tiki": {
            "beginAtZero": moni
          }
        }
      ]
    }
  }
}

O lenei faʻaaliga o loʻo faʻaalia ai le RAG pipeline ma vaega e tolu: toe faʻaleleia, faʻatupuina, ma le faʻasologa o mea.

Fa'ai'uga

I totonu o lenei tusiga, na matou suʻesuʻeina le faʻatinoga o metotia RAG e faʻaaoga ai FastAPI ma Django e faʻaleleia ai le gafatia o le LLM i luga o upega tafaʻilagi, e aofia ai le tuʻufaʻatasia ma LangChain mo le toe maua mai ma le faʻaogaina o faʻamaumauga. Na matou tuʻuina atu foʻi se taʻiala faʻatino i le faʻatinoina o le RAG ma FastAPI ma Django, e aofia ai faʻataʻitaʻiga faʻataʻitaʻiga ma se faʻaaliga o le paipa RAG. Matou te faʻamoemoe o lenei tusiga ua tuʻuina atu se punaoa aoga mo le au atinaʻe o loʻo vaʻavaʻai e faʻatino auala RAG i a latou upega tafaʻilagi.


Have Questions?

Let's Talk

Contact me on LinkedIn