Ngahijikeun RAG (Retrieval-Augmented Generation) sareng Kerangka Wéb Modern: Pituduh Praktis | B4N1

Ngahijikeun RAG (Retrieval-Augmented Generation) sareng Kerangka Wéb Modern: Pituduh Praktis

9 months ago · b4n1 Read time: 4 min

** Ngaintegrasikeun RAG (Retrieval-Augmented Generation) sareng Kerangka Wéb Modern: Pituduh Praktis**

Pendahuluan

Dina taun-taun ayeuna, widang Natural Language Processing (NLP) parantos nyaksian lonjakan anu signifikan dina pamekaran Modél Basa Besar (LLM) sareng aplikasina dina sababaraha domain. Tapi, salah sahiji watesan utama LLM nyaéta henteu mampuh pikeun nyandak sareng ngalebetkeun pangaweruh éksternal kana résponna. Ieu tempat téhnik Retrieval-Augmented Generation (RAG) dimaénkeun. Dina tulisan ieu, urang bakal ngajalajah palaksanaan téknik RAG nganggo FastAPI sareng Django pikeun ningkatkeun kamampuan LLM dina aplikasi wéb, kalebet orkestrasi sareng LangChain pikeun dimeunangkeun sareng ngolah data anu mulus.

Naon ari RAG?

RAG mangrupikeun téknik anu ngagabungkeun kaunggulan modél Retrieval sareng Generation pikeun ngahasilkeun réspon anu langkung akurat sareng informatif. Gagasan dasar di tukangeun RAG nyaéta nyandak heula inpormasi anu relevan tina pangkalan pangaweruh atanapi pangkalan data, teras nganggo inpormasi ieu pikeun ngahasilkeun tanggapan. Pendekatan ieu ngamungkinkeun LLM pikeun ngungkit pangaweruh éksternal sareng masihan réspon anu langkung akurat sareng informatif.

Naha Anggo RAG sareng FastAPI sareng Django?

FastAPI sareng Django mangrupikeun dua kerangka wéb anu pang populerna anu dianggo pikeun ngawangun aplikasi wéb. Aranjeunna nyayogikeun infrastruktur anu kuat sareng skalabel pikeun ngawangun aplikasi wéb, sareng tiasa gampang diintegrasikeun sareng téknik RAG pikeun ningkatkeun kamampuan LLM. FastAPI mangrupikeun kerangka wéb modéren anu nyayogikeun cara anu gancang sareng éfisién pikeun ngawangun aplikasi wéb, sedengkeun Django mangrupikeun kerangka wéb tingkat luhur anu nyayogikeun arsitéktur, témplat, sareng API pikeun ngawangun aplikasi wéb anu kuat.

Nerapkeun RAG sareng FastAPI

FastAPI nyayogikeun cara anu sederhana sareng épisién pikeun nerapkeun téknik RAG. Ieu conto blok kode anu nunjukkeun kumaha ngagunakeun FastAPI pikeun nerapkeun RAG:

ti fastapi impor FastAPI
ti langchain impor LLMChain
ti langchain.chains.openai impor OpenAIApi

aplikasi = FastAPI()

@app.get("/rag")
async def rag (query: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            indéks=LangChainIndex(
                ngaran = "my_index",
                dokumén = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # Ngahasilkeun réspon nganggo ranté LLM
    réspon = llm_chain.run(query)

    balik {"respon": respon}

Dina conto ieu, urang nangtukeun hiji ranté LLM ngagunakeun LLMChain kelas ti LangChain. Urang lajeng nangtukeun komponén dimeunangkeun maké kelas LangChainRetrieval, nu dipaké pikeun meunangkeun informasi relevan ti basis pangaweruh atawa database. Tungtungna, kami nganggo metode run pikeun ngahasilkeun réspon nganggo ranté LLM.

Nerapkeun RAG sareng Django

Django nyayogikeun kerangka wéb tingkat luhur anu gampang diintegrasikeun sareng téknik RAG. Ieu conto blok kode anu nunjukkeun kumaha ngagunakeun Django pikeun nerapkeun RAG:

ti django.http impor JsonResponse
ti langchain impor LLMChain
ti langchain.chains.openai impor OpenAIApi

def rag (permintaan):
    # Nangtukeun ranté LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            indéks=LangChainIndex(
                ngaran = "my_index",
                dokumén = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # Ngahasilkeun réspon nganggo ranté LLM
    respon = llm_chain.run(request.GET.get("query"))

    balikkeun JsonResponse ({"respon": respon})

Dina conto ieu, urang nangtukeun fungsi view rag nu nyokot query salaku input sarta ngahasilkeun respon maké ranté LLM.

Orchestrating RAG sareng LangChain

LangChain nyayogikeun cara anu saderhana sareng épisién pikeun ngatur téknik RAG. Ieu conto blok kode anu nunjukkeun kumaha ngagunakeun LangChain pikeun ngatur RAG:

ti langchain impor LLMChain
ti langchain.chains.openai impor OpenAIApi

# Nangtukeun ranté LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        indéks=LangChainIndex(
            ngaran = "my_index",
            dokumén = ["doc1", "doc2", "doc3"]
        )
    )
)

# Ngahasilkeun réspon nganggo ranté LLM
respon = llm_chain.run ("Naon RAG?")

print (réspon)

Dina conto ieu, urang nangtukeun hiji ranté LLM ngagunakeun LLMChain kelas ti LangChain. Urang teras nganggo metodeu run pikeun ngahasilkeun réspon nganggo ranté LLM.

Top 5-10 Paréntah / Potongan Panggunaan

Ieu mangrupikeun 5-10 paréntah / snippét anu paling sering dianggo pikeun ngalaksanakeun RAG sareng FastAPI sareng Django:

  1. ti langchain impor LLMChain: Impor LLMChain kelas ti LangChain.
  2. llm_chain = LLMChain (llm = OpenAIApi (), dimeunangkeun = LangChainRetrieval (indéks = LangChainIndex (ngaran = "my_index", dokumén = ["doc1", "doc2", "doc3"]))): Nangtukeun ranté LLM maké kelas LLMChain.
  3. respon = llm_chain.run (query): Ngahasilkeun respon maké ranté LLM.
  4. ti fastapi impor FastAPI: Impor kelas FastAPI ti FastAPI.
  5. app = FastAPI(): Nangtukeun aplikasi FastAPI.
  6. @app.get("/rag"): Nangtukeun jalur pikeun titik tungtung RAG.
  7. llm_chain = LLMChain (llm = OpenAIApi (), dimeunangkeun = LangChainRetrieval (indéks = LangChainIndex (ngaran = "my_index", dokumén = ["doc1", "doc2", "doc3"]))): Nangtukeun ranté LLM maké kelas LLMChain.
  8. respon = llm_chain.run (query): Ngahasilkeun respon maké ranté LLM.
  9. ti django.http impor JsonResponse: Impor kelas JsonResponse ti Django.
  10. balik JsonResponse ({"respon": respon}): Balik respon JSON kalawan respon dihasilkeun.

Visualisasi

Ieu mangrupikeun visualisasi saluran pipa RAG nganggo Chart.js:

{
  "type": "HorizontalBar",
  "data": {
    "labels": ["Pamulihan", "Generasi", "Pos-processing"],
    "setél data": [
      {
        "label": "Pipa RAG",
        "data": [10, 20, 30],
        "Warna latar": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "Warna wates": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "BorderWidth": 1
      }
    ]
  },
  "pilihan": {
    "judul": {
      "tampilan": leres,
      "text": "Rag Pipeline"
    },
    "skala": {
      "yAxes": [
        {
          "Cik": {
            "beginAtZero": leres
          }
        }
      ]
    }
  }
}

Visualisasi ieu nunjukkeun saluran pipa RAG kalayan tilu tahapan: dimeunangkeun, generasi, sareng pamrosésan.

Kacindekan

Dina artikel ieu, urang ngajajah palaksanaan téhnik RAG maké FastAPI na Django pikeun ningkatkeun pidangan kamampuhan LLM dina aplikasi wéb, kaasup orchestration kalawan LangChain pikeun dimeunangkeun data mulus tur ngolah. Kami ogé nyayogikeun pituduh praktis pikeun ngalaksanakeun RAG sareng FastAPI sareng Django, kalebet conto kode sareng visualisasi pipa RAG. Kami ngarepkeun tulisan ieu nyayogikeun sumber anu mangpaat pikeun pamekar anu hoyong nerapkeun téknik RAG dina aplikasi wébna.


Have Questions?

Let's Talk

Contact me on LinkedIn