Hoʻohui ʻana i ka RAG (Retrieval-Augmented Generation) me nā Pūnaewele Pūnaewele Hou: He alakaʻi hoʻomaʻamaʻa. | B4N1

Hoʻohui ʻana i ka RAG (Retrieval-Augmented Generation) me nā Pūnaewele Pūnaewele Hou: He alakaʻi hoʻomaʻamaʻa.

9 months ago · b4n1 Tiempo de lectura: 6 min

Hoʻohui ʻia ʻo RAG (Retrieval-Augmented Generation) me nā Pūnaewele Pūnaewele Hou: He alakaʻi hoʻomaʻamaʻa

Hoʻolauna

I nā makahiki i hala iho nei, ua ʻike ke kahua o ka Natural Language Processing (NLP) i ka piʻi nui ʻana o ka hoʻomohala ʻana i nā Large Language Models (LLMs) a me kā lākou mau noi ma nā wahi like ʻole. Eia naʻe, ʻo kekahi o nā palena nui o nā LLM ʻo ko lākou hiki ʻole ke kiʻi a hoʻokomo i ka ʻike o waho i kā lākou pane. ʻO kēia kahi e pāʻani ai nā ʻenehana Retrieval-Augmented Generation (RAG). Ma kēia ʻatikala, e ʻimi mākou i ka hoʻokō ʻana i nā ʻenehana RAG me ka hoʻohana ʻana iā FastAPI a me Django e hoʻomaikaʻi i nā mana LLM i nā noi pūnaewele, me ka orchestration me LangChain no ka hoʻihoʻi ʻana a me ka hana ʻana i ka ʻikepili.

He aha ka RAG?

ʻO RAG kahi hana e hoʻohui i nā ikaika o ka Retrieval and Generation models e hana i nā pane pololei a me ka ʻike. ʻO ka manaʻo kumu ma hope o RAG ʻo ia ke kiʻi mua i ka ʻike pili mai kahi waihona ʻike a i ʻole kahi waihona, a laila hoʻohana i kēia ʻike e hana i kahi pane. Hāʻawi kēia ala i nā LLM e hoʻohana i ka ʻike o waho a hāʻawi i nā pane pololei a me ka ʻike.

No ke aha e hoʻohana ai i ka RAG me FastAPI a me Django?

ʻO FastAPI a me Django ʻelua o nā ʻōnaehana pūnaewele kaulana loa i hoʻohana ʻia no ke kūkulu ʻana i nā noi pūnaewele. Hāʻawi lākou i kahi ʻenehana paʻa a hiki ke hoʻonui ʻia no ke kūkulu ʻana i nā noi pūnaewele, a hiki ke hoʻohui maʻalahi me nā ʻenehana RAG e hoʻomaikaʻi i nā mana LLM. ʻO FastAPI kahi ʻōnaehana pūnaewele hou e hāʻawi ana i kahi ala wikiwiki a maikaʻi hoʻi e kūkulu i nā noi pūnaewele, ʻoiai ʻo Django kahi pae kiʻekiʻe kiʻekiʻe e hāʻawi ana i kahi hoʻolālā, templates, a me nā API no ke kūkulu ʻana i nā noi pūnaewele paʻa.

Ke hoʻokō nei i ka RAG me FastAPI

Hāʻawi ʻo FastAPI i kahi ala maʻalahi a maikaʻi hoʻi e hoʻokō i nā ʻenehana RAG. Eia kekahi laʻana code block e hōʻike ana pehea e hoʻohana ai i FastAPI e hoʻokō i ka RAG:

mai fastapi hoʻokomo iā FastAPI
mai langchain lawe mai LLMChain
mai ka langchain.chains.openai hoʻokomo iā OpenAIApi

app = FastAPI()

@app.get("/rag")
async def rag (nā nīnau: str):
    
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                inoa = "my_index",
                palapala=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Hana i kahi pane me ka hoʻohana ʻana i ke kaulahao LLM
    pane = llm_chain.run(query)

    hoʻihoʻi {"pane": pane}

Ma kēia laʻana, wehewehe mākou i kahi kaulahao LLM me ka hoʻohana ʻana i ka papa LLMChain mai LangChain. A laila wehewehe mākou i kahi mea hoʻihoʻi me ka hoʻohana ʻana i ka papa LangChainRetrieval, i hoʻohana ʻia e kiʻi i ka ʻike pili mai kahi waihona ʻike a i ʻole kahi waihona. ʻO ka hope, hoʻohana mākou i ke ʻano run e hana i kahi pane me ka hoʻohana ʻana i ke kaulahao LLM.

Ke hoʻokō nei i ka RAG me Django

Hāʻawi ʻo Django i kahi hoʻolālā pūnaewele kiʻekiʻe e hiki ke hoʻohui maʻalahi me nā ʻenehana RAG. Eia kekahi laʻana code block e hōʻike ana pehea e hoʻohana ai iā Django e hoʻokō i ka RAG:

mai django.http hoʻokomo iā JsonResponse
mai langchain lawe mai LLMChain
mai ka langchain.chains.openai hoʻokomo iā OpenAIApi

def rag(noi):
    # E wehewehe i ke kaulahao LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                inoa = "my_index",
                palapala=["doc1", "doc2", "doc3"]
            )
        )
    )

    # Hana i kahi pane me ka hoʻohana ʻana i ke kaulahao LLM
    pane = llm_chain.run(request.GET.get("query"))

    hoʻihoʻi iā JsonResponse ({"pane": pane})

Ma kēia laʻana, wehewehe mākou i kahi hana nānā 'rag' e lawe i kahi nīnau ma ke ʻano he hoʻokomo a hoʻopuka i kahi pane me ka hoʻohana ʻana i ke kaulahao LLM.

Orchestrating RAG me LangChain

Hāʻawi ʻo LangChain i kahi ala maʻalahi a maikaʻi e hoʻonohonoho i nā ʻenehana RAG. Eia kekahi laʻana code block e hōʻike ana i ka hoʻohana ʻana iā LangChain e hoʻokani i ka RAG:

mai langchain lawe mai LLMChain
mai ka langchain.chains.openai hoʻokomo iā OpenAIApi

# E wehewehe i ke kaulahao LLM
llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChainIndex(
            inoa = "my_index",
            palapala=["doc1", "doc2", "doc3"]
        )
    )
)

# Hana i kahi pane me ka hoʻohana ʻana i ke kaulahao LLM
pane = llm_chain.run("He aha ka RAG?")

paʻi (pane)

Ma kēia laʻana, wehewehe mākou i kahi kaulahao LLM me ka hoʻohana ʻana i ka papa LLMChain mai LangChain. A laila hoʻohana mākou i ke ʻano run e hana i kahi pane me ka hoʻohana ʻana i ke kaulahao LLM.

** 5-10 kiʻekiʻe loa i hoʻohana ʻia i nā kauoha/nā ʻāpana**

Eia ka 5-10 kiʻekiʻe loa i hoʻohana ʻia nā kauoha / snippets no ka hoʻokō ʻana iā RAG me FastAPI a me Django:

  1. 'mai ka langchain import LLMChain': E lawe mai i ka papa 'LLMChain' mai LangChain.
  2. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Wehewehe i kahi kaulahao LLM me ka papa LLMChain.
  3. 'pane = llm_chain.run(query)`: E hana i pane me ka hoʻohana ʻana i ke kaulahao LLM.
  4. 'mai fastapi import FastAPI': E lawe mai i ka papa 'FastAPI' mai FastAPI.
  5. app = FastAPI(): E wehewehe i kahi palapala noi FastAPI.
  6. @app.get("/rag"): Wehewehe i ke ala no ka wahi hope RAG.
  7. llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", documents=["doc1", "doc2", "doc3"]))): Wehewehe i ke kaulahao LLM me ka papa LLMChain.
  8. 'pane = llm_chain.run(query)`: E hana i pane me ka hoʻohana ʻana i ke kaulahao LLM.
  9. mai ka django.http import JsonResponse: E lawe mai i ka papa JsonResponse mai Django.
  10. return JsonResponse({"pane": pane}): Hoʻihoʻi i kahi pane JSON me ka pane i hana ʻia.

Hōʻikeʻike

Eia kahi hiʻohiʻona o ka pipeline RAG me ka hoʻohana ʻana iā Chart.js:

{
  "type": "HorizontalBar",
  "ʻikepili": {
    "labels": ["Retrieval", "Generation", "Post-processing"],
    "mau ʻikepili": [
      {
        "label": "RaG Pipeline",
        "ʻikepili": [10, 20, 30],
        "ʻulaʻula": [
          "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
      }
    ]
  },
  "koho": {
    "poʻo inoa": {
      "hōʻike": ʻoiaʻiʻo,
      "text": "Rag Pipeline"
    },
    "nā unahi": {
      "yAxes": [
        {
          "kuʻi": {
            "beginAtZero": ʻoiaʻiʻo
          }
        }
      ]
    }
  }
}

Hōʻike kēia hiʻohiʻona i ka pipeline RAG me ʻekolu mau ʻanuʻu: hoʻihoʻi, hana, a me ka hana hope.

Hoʻoholo

Ma kēia ʻatikala, ua ʻimi mākou i ka hoʻokō ʻana o nā ʻenehana RAG me ka hoʻohana ʻana iā FastAPI a me Django e hoʻonui i nā mana LLM i nā noi pūnaewele, me ka orchestration me LangChain no ka loaʻa ʻana a me ka hoʻoili ʻana i ka ʻikepili. Hāʻawi pū mākou i kahi alakaʻi kūpono no ka hoʻokō ʻana i ka RAG me FastAPI a me Django, me nā hiʻohiʻona code a me kahi hiʻohiʻona o ka pipeline RAG. Manaʻo mākou ua hāʻawi kēia ʻatikala i kumu waiwai no nā mea hoʻomohala e nānā ana e hoʻokō i nā ʻenehana RAG i kā lākou mau polokalamu pūnaewele.


¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn