RAG-ის (Retrieval-Augmented Generation) ინტეგრირება თანამედროვე ვებ ჩარჩოებთან: პრაქტიკული გზამკვლევი | B4N1

RAG-ის (Retrieval-Augmented Generation) ინტეგრირება თანამედროვე ვებ ჩარჩოებთან: პრაქტიკული გზამკვლევი

9 months ago · b4n1 Read time: 3 min

** RAG-ის ინტეგრირება თანამედროვე ვებ ჩარჩოებთან: პრაქტიკული გზამკვლევი**

შესავალი

ბოლო წლების განმავლობაში, ბუნებრივი ენის დამუშავების სფერო (NLP) მოწმენი გახდა მნიშვნელოვანი ზრდა დიდი ენების მოდელების (LLMs) განვითარებისა და მათი გამოყენების სხვადასხვა დომენებში. თუმცა, LLM-ების ერთ-ერთი მთავარი შეზღუდვა არის მათი უუნარობა მიიღონ და ჩართონ გარე ცოდნა მათ პასუხებში. ეს არის სადაც Retrieval-Augmented Generation (RAG) ტექნიკა მოქმედებს. ამ სტატიაში ჩვენ შევისწავლით RAG ტექნიკის განხორციელებას FastAPI-ისა და Django-ს გამოყენებით, რათა გავაუმჯობესოთ LLM შესაძლებლობები ვებ აპლიკაციებში, მათ შორის LangChain-ის ორკესტრირება მონაცემთა უწყვეტი მოძიებისა და დამუშავებისთვის.

რა არის RAG?

RAG არის ტექნიკა, რომელიც აერთიანებს მოძიებისა და გენერაციის მოდელების ძლიერ მხარეებს უფრო ზუსტი და ინფორმაციული პასუხების მისაღებად. RAG-ის ძირითადი იდეა არის ჯერ შესაბამისი ინფორმაციის მოძიება ცოდნის ბაზიდან ან მონაცემთა ბაზიდან და შემდეგ გამოიყენოს ეს ინფორმაცია პასუხის შესაქმნელად. ეს მიდგომა საშუალებას აძლევს LLM-ებს გამოიყენონ გარე ცოდნა და უზრუნველყონ უფრო ზუსტი და ინფორმატიული პასუხები.

** რატომ გამოვიყენოთ RAG FastAPI-სა და Django-სთან ერთად?**

FastAPI და Django არის ორი ყველაზე პოპულარული ვებ ჩარჩო, რომელიც გამოიყენება ვებ აპლიკაციების შესაქმნელად. ისინი უზრუნველყოფენ მყარ და მასშტაბირებულ ინფრასტრუქტურას ვებ აპლიკაციების შესაქმნელად და ადვილად შეიძლება იყოს ინტეგრირებული RAG ტექნიკასთან LLM შესაძლებლობების გასაუმჯობესებლად. FastAPI არის თანამედროვე ვებ ჩარჩო, რომელიც უზრუნველყოფს სწრაფ და ეფექტურ გზას ვებ აპლიკაციების შესაქმნელად, ხოლო Django არის მაღალი დონის ვებ ჩარჩო, რომელიც უზრუნველყოფს არქიტექტურას, შაბლონებს და API-ებს ძლიერი ვებ აპლიკაციების შესაქმნელად.

** RAG-ის დანერგვა FastAPI-ით**

FastAPI გთავაზობთ მარტივ და ეფექტურ გზას RAG ტექნიკის განსახორციელებლად. აქ მოცემულია კოდის ბლოკის მაგალითი, რომელიც აჩვენებს, თუ როგორ გამოიყენოთ FastAPI RAG-ის განსახორციელებლად:

``პითონი fastapi იმპორტიდან FastAPI langchain იმპორტიდან LLMCchain langchain.chains.openai-დან იმპორტი OpenAIApi-დან

აპლიკაცია = FastAPI()

@app.get ("/rag") async def rag (შეკითხვა: str):

llm_chain = LLMCchain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        ინდექსი=LangChainIndex(
            სახელი = "ჩემი_ინდექსი",
            დოკუმენტები=["doc1", "doc2", "doc3"]
        )
    )
)

# შექმენით პასუხი LLM ჯაჭვის გამოყენებით
პასუხი = llm_chain.run(შეკითხვა)

დაბრუნება {"პასუხი": პასუხი}

ამ მაგალითში ჩვენ განვსაზღვრავთ LLM ჯაჭვს `LLMChain` კლასის გამოყენებით LangChain-დან. შემდეგ ჩვენ განვსაზღვრავთ მოძიების კომპონენტს `LangChainRetrieval` კლასის გამოყენებით, რომელიც გამოიყენება შესაბამისი ინფორმაციის მისაღებად ცოდნის ბაზიდან ან მონაცემთა ბაზიდან. დაბოლოს, ჩვენ ვიყენებთ `Run` მეთოდს, რათა გენერიროთ პასუხი LLM ჯაჭვის გამოყენებით.

** RAG-ის დანერგვა ჯანგოსთან ერთად**


Django უზრუნველყოფს მაღალი დონის ვებ ჩარჩოს, რომელიც შეიძლება ადვილად იყოს ინტეგრირებული RAG ტექნიკასთან. აქ მოცემულია კოდის ბლოკის მაგალითი, რომელიც გვიჩვენებს, თუ როგორ გამოიყენოთ Django RAG-ის განსახორციელებლად:

``პითონი
django.http-დან იმპორტი JsonResponse
langchain იმპორტიდან LLMCchain
langchain.chains.openai-დან იმპორტი OpenAIApi-დან

def rag (მოთხოვნა):
    # განსაზღვრეთ LLM ჯაჭვი
    llm_chain = LLMCchain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            ინდექსი=LangChainIndex(
                სახელი = "ჩემი_ინდექსი",
                დოკუმენტები=["doc1", "doc2", "doc3"]
            )
        )
    )

    # შექმენით პასუხი LLM ჯაჭვის გამოყენებით
    answer = llm_chain.run(request.GET.get("query"))

    დააბრუნეთ JsonResponse ({"პასუხი": პასუხი})

ამ მაგალითში, ჩვენ განვსაზღვრავთ ხედვის ფუნქციას rag, რომელიც იღებს შეკითხვას შეყვანის სახით და ქმნის პასუხს LLM ჯაჭვის გამოყენებით.

RAG-ის ორკესტრირება LangChain-თან ერთად

LangChain გთავაზობთ მარტივ და ეფექტურ გზას RAG ტექნიკის ორკესტრირებისთვის. აქ მოცემულია კოდის ბლოკის მაგალითი, რომელიც აჩვენებს, თუ როგორ გამოიყენოთ LangChain RAG-ის ორკესტრირებისთვის:

``პითონი langchain იმპორტიდან LLMCchain langchain.chains.openai-დან იმპორტი OpenAIApi-დან

განსაზღვრეთ LLM ჯაჭვი

llm_chain = LLMCchain( llm=OpenAIApi(), retrieval=LangChainRetrieval( ინდექსი=LangChainIndex( სახელი = "ჩემი_ინდექსი", დოკუმენტები=["doc1", "doc2", "doc3"] ) ) )

შექმენით პასუხი LLM ჯაჭვის გამოყენებით

answer = llm_chain.run ("რა არის RAG?")

ბეჭდვა (პასუხი)


ამ მაგალითში ჩვენ განვსაზღვრავთ LLM ჯაჭვს `LLMChain` კლასის გამოყენებით LangChain-დან. შემდეგ ჩვენ ვიყენებთ `Run` მეთოდს, რათა გამოვმუშაოთ პასუხი LLM ჯაჭვის გამოყენებით.

** ტოპ 5-10 ყველაზე ხშირად გამოყენებული ბრძანება/ნაწყვეტი**


აქ არის ტოპ 5-10 ყველაზე ხშირად გამოყენებული ბრძანება/ნაწყვეტი RAG-ის დანერგვისთვის FastAPI-ით და Django-ით:

1. `from langchain import LLMChain`: იმპორტი `LLMChain` კლასი LangChain-დან.
2. `llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])))`: განსაზღვრეთ LLM ჯაჭვი` კლასის გამოყენებით `LLMCha
3. `response = llm_chain.run(query)`: პასუხის გენერირება LLM ჯაჭვის გამოყენებით.
4. `from fastapi import FastAPI`: შემოიტანეთ `FastAPI` კლასი FastAPI-დან.
5. `app = FastAPI()`: განსაზღვრეთ FastAPI აპლიკაცია.
6. `@app.get("/rag")`: განსაზღვრეთ მარშრუტი RAG ბოლო წერტილისთვის.
7. `llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"])))": განსაზღვრეთ LLM ჯაჭვი `კლასის გამოყენებით `LLMCha
8. `response = llm_chain.run(query)`: პასუხის გენერირება LLM ჯაჭვის გამოყენებით.
9. `from django.http import JsonResponse`: იმპორტი `JsonResponse` კლასი Django-დან.
10. `return JsonResponse({"response": answer})`: დააბრუნეთ JSON პასუხი გენერირებული პასუხით.

** ვიზუალიზაცია **


აქ მოცემულია RAG მილსადენის ვიზუალიზაცია Chart.js-ის გამოყენებით:

``ჯსონ
{
  "ტიპი": "ჰორიზონტალური ბარი",
  "მონაცემები": {
    "ეტიკეტები": ["მოძიება", "თაობა", "შემდგომი დამუშავება"],
    "მონაცემთა ნაკრები": [
      {
        "label": "RAG Pipeline",
        "მონაცემები": [10, 20, 30],
        "ფონის ფერი": [
          "rgba(255, 99, 132, 0.2)",
          "rgba(54, 162, 235, 0.2)",
          "rgba(255, 206, 86, 0.2)"
        ],
        "საზღვრის ფერი": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)",
          "rgba(255, 206, 86, 1)"
        ],
        "საზღვრის სიგანე": 1
      }
    ]
  },
  "ოფციები": {
    "სათაური": {
      "ჩვენება": მართალია,
      "text": "RAG Pipeline"
    },
    "სასწორები": {
      "yAxes": [
        {
          "ტკიპები": {
            "beginAtZero": მართალია
          }
        }
      ]
    }
  }
}

ეს ვიზუალიზაცია აჩვენებს RAG მილსადენს სამი ეტაპით: მოძიება, გენერაცია და შემდგომი დამუშავება.

დასკვნა

ამ სტატიაში ჩვენ გამოვიკვლიეთ RAG ტექნიკის დანერგვა FastAPI-ისა და Django-ს გამოყენებით, რათა გაზარდოთ LLM შესაძლებლობები ვებ აპლიკაციებში, მათ შორის LangChain-ის ორკესტრირება მონაცემთა უწყვეტი მოძიებისა და დამუშავებისთვის. ჩვენ ასევე მივაწოდეთ პრაქტიკული გზამკვლევი RAG-ის დანერგვისთვის FastAPI-ით და Django-ით, მათ შორის კოდის მაგალითები და RAG მილსადენის ვიზუალიზაცია. ვიმედოვნებთ, რომ ამ სტატიამ სასარგებლო რესურსი მოგვცა დეველოპერებისთვის, რომლებიც ცდილობენ RAG ტექნიკის დანერგვას თავიანთ ვებ აპლიკაციებში.


Have Questions?

Let's Talk

Contact me on LinkedIn