Інтэграцыя RAG (Retrieval-Augmented Generation) з сучаснымі вэб-фреймворкамі: практычны дапаможнік | B4N1

Інтэграцыя RAG (Retrieval-Augmented Generation) з сучаснымі вэб-фреймворкамі: практычны дапаможнік

9 months ago · b4n1 Read time: 4 min

Інтэграцыя RAG (Retrieval-Augmented Generation) з сучаснымі вэб-фреймворкамі: практычны дапаможнік

Уводзіны

У апошнія гады ў галіне апрацоўкі натуральнай мовы (NLP) назіраецца значны ўсплёск распрацоўкі вялікіх моўных мадэляў (LLM) і іх прымянення ў розных галінах. Аднак адным з асноўных абмежаванняў LLM з'яўляецца іх няздольнасць атрымаць і ўключыць знешнія веды ў свае адказы. Тут у гульню ўступаюць метады пошукава-дапоўненай генерацыі (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 імпартаваць LLMChain
з langchain.chains.openai імпартаваць OpenAIApi

дадатак = FastAPI()

@app.get("/анучка")
async def rag (запыт: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            індэкс=LangChainIndex(
                імя = "мой_індэкс",
                дакументы=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Стварыце адказ з дапамогай ланцужка LLM
    адказ = llm_chain.run (запыт)

    return {"адказ": адказ}

У гэтым прыкладзе мы вызначаем ланцужок LLM з дапамогай класа LLMChain з LangChain. Затым мы вызначаем кампанент пошуку з дапамогай класа LangChainRetrieval, які выкарыстоўваецца для атрымання адпаведнай інфармацыі з базы ведаў або базы дадзеных. Нарэшце, мы выкарыстоўваем метад run для стварэння адказу з выкарыстаннем ланцужка LLM.

Укараненне RAG з Django

Django забяспечвае вэб-фреймворк высокага ўзроўню, які можна лёгка інтэграваць з метадамі RAG. Вось прыклад блока кода, які дэманструе, як выкарыстоўваць Django для рэалізацыі RAG:

з django.http імпартаваць JsonResponse
з langchain імпартаваць LLMChain
з langchain.chains.openai імпартаваць OpenAIApi

def rag (запыт):
    # Вызначце ланцужок LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            індэкс=LangChainIndex(
                імя = "мой_індэкс",
                дакументы=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Стварыце адказ з дапамогай ланцужка LLM
    адказ = llm_chain.run(request.GET.get("запыт"))

    return JsonResponse({"адказ": адказ})

У гэтым прыкладзе мы вызначаем функцыю прагляду rag, якая прымае запыт у якасці ўваходных дадзеных і стварае адказ, выкарыстоўваючы ланцужок LLM.

Аркестроўка RAG з LangChain

LangChain забяспечвае просты і эфектыўны спосаб арганізаваць метады RAG. Вось прыклад блока кода, які дэманструе, як выкарыстоўваць LangChain для арганізацыі RAG:

з langchain імпартаваць LLMChain
з langchain.chains.openai імпартаваць OpenAIApi

# Вызначце ланцужок LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        індэкс=LangChainIndex(
            імя = "мой_індэкс",
            дакументы=["doc1", "doc2", "doc3"]
        )
    )
)

# Стварыце адказ з дапамогай ланцужка LLM
response = llm_chain.run("Што такое RAG?")

друк (адказ)

У гэтым прыкладзе мы вызначаем ланцужок LLM з дапамогай класа LLMChain з LangChain. Затым мы выкарыстоўваем метад run для стварэння адказу з выкарыстаннем ланцужка LLM.

Топ-5-10 найбольш часта выкарыстоўваюцца каманд/фрагментаў

Вось 5-10 найбольш часта выкарыстоўваюцца каманд/фрагментаў для рэалізацыі RAG з FastAPI і Django:

  1. from langchain імпартаваць LLMChain: імпартаваць клас LLMChain з LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): вызначце ланцужок LLM з дапамогай класа LLMChain.
  3. response = llm_chain.run(query): Стварыце адказ з дапамогай ланцужка LLM.
  4. from fastapi імпартаваць 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 з дапамогай класа LLMChain.
  8. response = llm_chain.run(query): Стварыце адказ з дапамогай ланцужка LLM.
  9. from django.http імпартаваць JsonResponse: імпартаваць клас JsonResponse з Django.
  10. return JsonResponse({"response": response}): вяртае адказ JSON са згенераваным адказам.

Візуалізацыя

Вось візуалізацыя канвеера RAG з выкарыстаннем Chart.js:

{
  "тып": "гарызантальная паласа",
  "дадзеныя": {
    "labels": ["Атрыманне", "Стварэнне", "Пастапрацоўка"],
    "наборы дадзеных": [
      {
        "label": "трубаправод RAG",
        "дадзеныя": [10, 20, 30],
        "фонавы колер": [
          "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
      }
    ]
  },
  "параметры": {
    "назва": {
      "дысплей": праўда,
      "text": "трубаправод RAG"
    },
    "шалі": {
      "yAxes": [
        {
          "цікі": {
            "beginAtZero": праўда
          }
        }
      ]
    }
  }
}

Гэтая візуалізацыя паказвае канвеер RAG з трыма этапамі: пошук, генерацыя і пост-апрацоўка.

Выснова

У гэтым артыкуле мы даследавалі рэалізацыю метадаў RAG з выкарыстаннем FastAPI і Django для пашырэння магчымасцей LLM у вэб-праграмах, уключаючы аркестроўку з LangChain для бесперабойнага пошуку і апрацоўкі даных. Мы таксама далі практычнае кіраўніцтва па ўкараненні RAG з FastAPI і Django, уключаючы прыклады кода і візуалізацыю канвеера RAG. Мы спадзяемся, што гэты артыкул стаў карысным рэсурсам для распрацоўшчыкаў, якія хочуць укараніць метады RAG у сваіх вэб-прыкладаннях.


Have Questions?

Let's Talk

Contact me on LinkedIn