Zamonaviy veb-ramkalar bilan RAG (qidiruv-kengaytirilgan avlod) integratsiyasi: amaliy qo'llanma | B4N1

Zamonaviy veb-ramkalar bilan RAG (qidiruv-kengaytirilgan avlod) integratsiyasi: amaliy qo'llanma

9 months ago · b4n1 Read time: 4 min

RAG (qidiruv-kengaytirilgan avlod)ni zamonaviy veb-ramkalar bilan integratsiyalash: amaliy qo‘llanma

Kirish

So'nggi yillarda tabiiy tillarni qayta ishlash (NLP) sohasi katta til modellari (LLM) va ularning turli sohalarda qo'llanilishining sezilarli o'sishiga guvoh bo'ldi. Biroq, LLMlarning asosiy cheklovlaridan biri ularning javoblariga tashqi bilimlarni olish va qo'shish qobiliyatining yo'qligidir. Bu erda Retrieval-Augmented Generation (RAG) texnikasi o'ynaydi. Ushbu maqolada biz veb-ilovalarda LLM imkoniyatlarini yaxshilash uchun FastAPI va Django-dan foydalangan holda RAG texnikasini amalga oshirishni o'rganamiz, shu jumladan ma'lumotlarni uzluksiz olish va qayta ishlash uchun LangChain bilan orkestratsiya.

RAG nima?

RAG aniqroq va ma'lumot beruvchi javoblarni ishlab chiqarish uchun Qidiruv va Generation modellarining kuchli tomonlarini birlashtirgan texnikadir. RAGning asosiy g'oyasi birinchi navbatda ma'lumot bazasidan yoki ma'lumotlar bazasidan tegishli ma'lumotlarni olish va keyin bu ma'lumotlardan javob yaratish uchun foydalanishdir. Ushbu yondashuv LLMlarga tashqi bilimlardan foydalanish va aniqroq va ma'lumot beruvchi javoblarni taqdim etish imkonini beradi.

Nega FastAPI va Django bilan RAG dan foydalanish kerak?

FastAPI va Django veb-ilovalarni yaratish uchun ishlatiladigan eng mashhur veb-ramkalardan ikkitasidir. Ular veb-ilovalarni yaratish uchun mustahkam va kengaytiriladigan infratuzilmani ta'minlaydi va LLM imkoniyatlarini oshirish uchun RAG texnikasi bilan osongina birlashtirilishi mumkin. FastAPI - bu veb-ilovalarni yaratishning tez va samarali usulini ta'minlovchi zamonaviy veb-ramka, Django esa mustahkam veb-ilovalarni yaratish uchun arxitektura, andozalar va API-larni taqdim etuvchi yuqori darajadagi veb-ramkadir.

** FastAPI bilan RAGni amalga oshirish**

FastAPI RAG texnikasini amalga oshirishning oddiy va samarali usulini taqdim etadi. Mana, RAGni amalga oshirish uchun FastAPI dan qanday foydalanishni ko'rsatadigan misol kod bloki:

fastapi import FastAPI dan
langchain import LMChain dan
langchain.chains.openai import OpenAIApi dan

ilova = FastAPI()

@app.get("/rag")
async def rag (so'rov: str):
    
    llm_chain = LMCchain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            indeks=LangChainIndex(
                nomi = "mening_indeks",
                hujjatlar = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # LLM zanjiri yordamida javob yarating
    javob = llm_chain.run (so'rov)

    qaytish {"javob": javob}

Ushbu misolda biz LangChain-dan LLMCain klassi yordamida LLM zanjirini aniqlaymiz. Keyin biz ma'lumotlar bazasi yoki ma'lumotlar bazasidan tegishli ma'lumotlarni olish uchun ishlatiladigan "LangChainRetrieval" klassi yordamida qidirish komponentini aniqlaymiz. Nihoyat, biz LLM zanjiri yordamida javob yaratish uchun “run” usulidan foydalanamiz.

** Django bilan RAGni amalga oshirish**

Django RAG texnikasi bilan osongina birlashtirilishi mumkin bo'lgan yuqori darajadagi veb-ramkani taqdim etadi. Mana, RAGni amalga oshirish uchun Django-dan qanday foydalanishni ko'rsatadigan misol kod bloki:

django.http dan JsonResponse import
langchain import LMChain dan
langchain.chains.openai import OpenAIApi dan

def rag (so'rov):
    # LLM zanjirini aniqlang
    llm_chain = LMCchain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            indeks=LangChainIndex(
                nomi = "mening_indeks",
                hujjatlar = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # LLM zanjiri yordamida javob yarating
    javob = llm_chain.run(request.GET.get("so'rov"))

    Qaytish JsonResponse({"response": javob})

Ushbu misolda biz so'rovni kirish sifatida qabul qiluvchi va LLM zanjiri yordamida javob hosil qiluvchi "rag" ko'rish funktsiyasini aniqlaymiz.

LangChain bilan RAGni tashkil qilish

LangChain RAG texnikasini boshqarishning oddiy va samarali usulini taqdim etadi. Mana, RAGni boshqarish uchun LangChain-dan qanday foydalanishni ko'rsatadigan misol kod bloki:

langchain import LMChain dan
langchain.chains.openai import OpenAIApi dan

# LLM zanjirini aniqlang
llm_chain = LMCchain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        indeks=LangChainIndex(
            nomi = "mening_indeks",
            hujjatlar = ["doc1", "doc2", "doc3"]
        )
    )
)

# LLM zanjiri yordamida javob yarating
javob = llm_chain.run ("RAG nima?")

chop etish (javob)

Ushbu misolda biz LangChain-dan LLMCain klassi yordamida LLM zanjirini aniqlaymiz. Keyin LLM zanjiri yordamida javob yaratish uchun “run” usulidan foydalanamiz.

Eng koʻp ishlatiladigan 5-10 ta buyruq/parchalar

FastAPI va Django bilan RAGni amalga oshirish uchun eng ko'p ishlatiladigan 5-10 ta eng yaxshi buyruqlar/parchalar:

  1. langchain import LLMChain: LangChain-dan LLMChain sinfini import qiling.
  2. llm_chain = LLMCain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", hujjatlar=["doc1", "doc2", "doc3"]))): LLMCha sinfidan foydalanib LLM zanjirini aniqlang.
  3. response = llm_chain.run(query): LLM zanjiri yordamida javob yarating.
  4. From fastapi import FastAPI: FastAPI-dan FastAPI sinfini import qiling.
  5. app = FastAPI(): FastAPI ilovasini aniqlang.
  6. @app.get("/rag"): RAG oxirgi nuqtasi uchun marshrutni belgilang.
  7. llm_chain = LLMCain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", hujjatlar=["doc1", "doc2", "doc3"]))): LLMCha sinfidan foydalanib LLM zanjirini aniqlang.
  8. response = llm_chain.run(query): LLM zanjiri yordamida javob yarating.
  9. django.http import JsonResponse: Django'dan JsonResponse sinfini import qiling.
  10. return JsonResponse({"response": respond}): Yaratilgan javob bilan JSON javobini qaytaring.

Vizualizatsiya

Mana Chart.js yordamida RAG quvur liniyasining vizualizatsiyasi:

{
  "turi": "gorizontalBar",
  "ma'lumotlar": {
    "yorliqlar": ["Qayta olish", "Asl qilish", "Post qayta ishlash"],
    "ma'lumotlar to'plami": [
      {
        "label": "RAG quvur liniyasi",
        "ma'lumotlar": [10, 20, 30],
        "fon rangi": [
          "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
      }
    ]
  },
  "variantlar": {
    "sarlavha": {
      "displey": rost,
      "matn": "RAG quvur liniyasi"
    },
    "tarozi": {
      "yAxes": [
        {
          "tiklash": {
            "beginAtZero": rost
          }
        }
      ]
    }
  }
}

Ushbu vizualizatsiya uch bosqichli RAG quvur liniyasini ko'rsatadi: olish, ishlab chiqarish va qayta ishlash.

Xulosa

Ushbu maqolada biz veb-ilovalarda LLM imkoniyatlarini yaxshilash uchun FastAPI va Django-dan foydalangan holda RAG texnikasini amalga oshirishni o'rganib chiqdik, shu jumladan ma'lumotlarni uzluksiz olish va qayta ishlash uchun LangChain bilan orkestratsiya. Shuningdek, biz RAG-ni FastAPI va Django bilan amalga oshirish bo'yicha amaliy qo'llanmani taqdim etdik, shu jumladan kod misollari va RAG quvurining vizualizatsiyasi. Umid qilamizki, ushbu maqola o'z veb-ilovalarida RAG texnikasini joriy qilmoqchi bo'lgan ishlab chiquvchilar uchun foydali manba bo'ldi.


Have Questions?

Let's Talk

Contact me on LinkedIn