Интегратсияи RAG (Насли бозёфтшуда) бо чаҳорчӯбаҳои муосири веб: дастури амалӣ | B4N1

Интегратсияи RAG (Насли бозёфтшуда) бо чаҳорчӯбаҳои муосири веб: дастури амалӣ

9 months ago · b4n1 Tiempo de lectura: 4 min

Интегратсияи RAG (Насли бозёфтшуда) бо чаҳорчӯбаҳои муосири веб: дастури амалӣ

Муқаддима

Дар солҳои охир, соҳаи коркарди забони табиӣ (NLP) шоҳиди афзоиши назаррас дар таҳияи Моделҳои Забони Калон (LLMs) ва татбиқи онҳо дар соҳаҳои гуногун гардид. Бо вуҷуди ин, яке аз маҳдудиятҳои асосии 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 воридоти LMChain аз langchain.chains.openai воридоти OpenAIApi

барнома = FastAPI ()

@app.get("/rag") async def rag (пурсиш: str):

llm_chain = LMCchain (
    llm=OpenAIApi(),
    ҷустуҷӯ = LangChainRetrieval(
        индекс = LangChainIndex (
            ном = "индекси ман",
            ҳуҷҷатҳо = ["doc1", "doc2", "doc3"]
        )
    )
)

# Бо истифода аз занҷири LLM посух эҷод кунед
посух = llm_chain.run (пурсиш)

баргардонидани {"ҷавоб": ҷавоб}

Дар ин мисол, мо як занҷири LLM-ро бо истифода аз синфи `LLMCain` аз LangChain муайян мекунем. Сипас, мо ҷузъи ҷустуҷӯро бо истифода аз синфи `LangChainRetrieval' муайян мекунем, ки он барои дарёфти иттилооти мувофиқ аз пойгоҳи дониш ё пойгоҳи додаҳо истифода мешавад. Ниҳоят, мо усули `run`-ро барои тавлиди посух бо истифода аз занҷири LLM истифода мебарем.

**Татбиқи RAG бо Django**


Django як чаҳорчӯбаи веб-сатҳи баландро пешкаш мекунад, ки онро бо усулҳои RAG ба осонӣ муттаҳид кардан мумкин аст. Ин аст мисоли блоки код, ки чӣ гуна истифода бурдани Django-ро барои татбиқи RAG нишон медиҳад:

`` питон
аз django.http воридоти JsonResponse
аз langchain воридоти LMChain
аз langchain.chains.openai воридоти OpenAIApi

def rag (дархост):
    # Занҷири LLM-ро муайян кунед
    llm_chain = LMCchain (
        llm=OpenAIApi(),
        ҷустуҷӯ = LangChainRetrieval(
            индекс = LangChainIndex (
                ном = "индекси ман",
                ҳуҷҷатҳо = ["doc1", "doc2", "doc3"]
            )
        )
    )

    # Бо истифода аз занҷири LLM посух эҷод кунед
    посух = llm_chain.run(request.GET.get("пурсиш"))

    баргардонидани JsonResponse({"response": посух})

Дар ин мисол, мо функсияи намоиши "rag" -ро муайян мекунем, ки дархостро ҳамчун вуруд қабул мекунад ва бо истифода аз занҷири LLM посух тавлид мекунад.

Ташкили RAG бо LangChain

LangChain роҳи содда ва муассири ташкили техникаи RAG-ро таъмин мекунад. Ин як мисоли блоки кодест, ки нишон медиҳад, ки чӣ тавр истифода бурдани LangChain барои ташкили RAG:

`` питон аз langchain воридоти LMChain аз langchain.chains.openai воридоти OpenAIApi

Занҷири LLM-ро муайян кунед

llm_chain = LMCchain ( llm=OpenAIApi(), ҷустуҷӯ = LangChainRetrieval( индекс = LangChainIndex ( ном = "индекси ман", ҳуҷҷатҳо = ["doc1", "doc2", "doc3"] ) ) )

Бо истифода аз занҷири LLM посух эҷод кунед

посух = llm_chain.run ("RAG чист?")

чоп (ҷавоб)


Дар ин мисол, мо як занҷири LLM-ро бо истифода аз синфи `LLMCain` аз LangChain муайян мекунем. Сипас, мо усули `run`-ро барои тавлиди посух бо истифода аз занҷири LLM истифода мебарем.

**Беҳтарин 5-10 фармонҳо/порчаҳои бештар истифодашаванда**


Инҳоянд 5-10 фармонҳои/порчаҳои аз ҳама бештар истифодашаванда барои татбиқи RAG бо FastAPI ва Django:

1. `аз langchain import LLMChain`: Синфи `LLMCain`-ро аз LangChain ворид кунед.
2. `llm_chain = LLMCain(llm=OpenAIApi(), ҷустуҷӯ=LangChainRetrieval(index=LangChainIndex(name="my_index", ҳуҷҷатҳо=["doc1", "doc2", "doc3"])))`: Бо истифода аз синфи `LLMCha` занҷири LLM-ро муайян кунед.
3. `response = llm_chain.run(query)`: Бо истифода аз занҷири LLM посух эҷод кунед.
4. `аз fastAPI import FastAPI`: Синфи `FastAPI`-ро аз FastAPI ворид кунед.
5. `app = FastAPI()`: Замимаи FastAPI-ро муайян кунед.
6. `@app.get("/rag")`: Барои нуқтаи ниҳоии RAG масир муайян кунед.
7. `llm_chain = LLMCain(llm=OpenAIApi(), ҷустуҷӯ=LangChainRetrieval(index=LangChainIndex(name="my_index", ҳуҷҷатҳо=["doc1", "doc2", "doc3"])))`: Бо истифода аз синфи `LLMCha` занҷири LLM-ро муайян кунед.
8. `response = llm_chain.run(query)`: Бо истифода аз занҷири LLM посух эҷод кунед.
9. `аз django.http import JsonResponse`: Синфи `JsonResponse`-ро аз Django ворид кунед.
10. `return JsonResponse({"response": respond})`: Ҷавоби JSON-ро бо посухи тавлидшуда баргардонед.

** Визуализатсия **


Ин аст визуализатсияи лӯлаи RAG бо истифода аз Chart.js:

``json
{
  "type": "horizontalBar",
  "маълумот": {
    "labels": ["Ҷустуҷӯ", "Насли", "Посткоркард"],
    "маҷмӯи додаҳо": [
      {
        "label": "RAG Pipeline",
        "data": [10, 20, 30],
        "backgroundColor": [
          "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)"
        ],
        "BroderWidth": 1
      }
    ]
  },
  "Options": {
    "унвон": {
      "дисплей": дуруст,
      "text": "RAG Pipeline"
    },
    "тарозу": {
      "yAxes": [
        {
          "тик": {
            "beginAtZero": дуруст
          }
        }
      ]
    }
  }
}

Ин визуализатсия лӯлаи RAG-ро бо се марҳила нишон медиҳад: ҷустуҷӯ, тавлид ва пас аз коркард.

Хулоса

Дар ин мақола, мо татбиқи усулҳои RAG-ро бо истифода аз FastAPI ва Django барои баланд бардоштани қобилиятҳои LLM дар барномаҳои веб, аз ҷумла оркестрсозӣ бо LangChain барои ҷустуҷӯ ва коркарди бефосилаи маълумот омӯхтем. Мо инчунин дастури амалӣ оид ба татбиқи RAG бо FastAPI ва Django, аз ҷумла мисолҳои рамзӣ ва визуализатсияи лӯлаи RAG пешниҳод кардем. Мо умедворем, ки ин мақола барои таҳиягароне, ки мехоҳанд усулҳои RAG-ро дар барномаҳои веби худ татбиқ кунанд, як манбаи муфид пешкаш кардааст.


¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn