ການລວມເອົາ RAG (Retrieval-Augmented Generation) ກັບກອບເວັບທີ່ທັນສະໄຫມ: ຄູ່ມືພາກປະຕິບັດ | B4N1

ການລວມເອົາ RAG (Retrieval-Augmented Generation) ກັບກອບເວັບທີ່ທັນສະໄຫມ: ຄູ່ມືພາກປະຕິບັດ

9 months ago · b4n1 Read time: 2 min

**ການ​ປະ​ສົມ​ປະ​ສານ RAG (ການ​ຄົ້ນ​ຫາ​ເພີ່ມ​ເຕີມ​ຜະ​ລິດ​) ກັບ​ກອບ​ເວັບ​ທີ່​ທັນ​ສະ​ໄຫມ​: ຄູ່​ມື​ພາກ​ປະ​ຕິ​ບັດ **

ການ​ນໍາ​ສະ​ເຫນີ

ໃນຊຸມປີມໍ່ໆມານີ້, ພາກສະຫນາມຂອງການປຸງແຕ່ງພາສາທໍາມະຊາດ (NLP) ໄດ້ເຫັນການຂະຫຍາຍຕົວຢ່າງຫຼວງຫຼາຍໃນການພັດທະນາຕົວແບບພາສາຂະຫນາດໃຫຍ່ (LLMs) ແລະຄໍາຮ້ອງສະຫມັກຂອງພວກເຂົາໃນໂດເມນຕ່າງໆ. ຢ່າງໃດກໍ່ຕາມ, ຫນຶ່ງໃນຂໍ້ຈໍາກັດທີ່ສໍາຄັນຂອງ LLMs ແມ່ນຄວາມບໍ່ສາມາດທີ່ຈະດຶງເອົາແລະລວມເອົາຄວາມຮູ້ພາຍນອກເຂົ້າໄປໃນຄໍາຕອບຂອງພວກເຂົາ. ນີ້ແມ່ນບ່ອນທີ່ເຕັກນິກ Retrieval-Augmented Generation (RAG) ເຂົ້າມາຫຼິ້ນ. ໃນບົດຄວາມນີ້, ພວກເຮົາຈະຄົ້ນຫາການປະຕິບັດເຕັກນິກ RAG ໂດຍໃຊ້ FastAPI ແລະ Django ເພື່ອເພີ່ມຄວາມສາມາດຂອງ LLM ໃນຄໍາຮ້ອງສະຫມັກເວັບ, ລວມທັງການ orchestration ກັບ LangChain ສໍາລັບການດຶງຂໍ້ມູນແລະການປຸງແຕ່ງ seamless.

** RAG ແມ່ນຫຍັງ?**

RAG ແມ່ນເຕັກນິກທີ່ປະສົມປະສານຄວາມເຂັ້ມແຂງຂອງແບບຈໍາລອງ Retrieval ແລະ Generation ເພື່ອຜະລິດຄໍາຕອບທີ່ຖືກຕ້ອງແລະຂໍ້ມູນຫຼາຍຂຶ້ນ. ແນວຄວາມຄິດພື້ນຖານທີ່ຢູ່ເບື້ອງຫລັງ RAG ແມ່ນເພື່ອທໍາອິດເອົາຂໍ້ມູນທີ່ກ່ຽວຂ້ອງຈາກພື້ນຖານຄວາມຮູ້ຫຼືຖານຂໍ້ມູນ, ແລະຫຼັງຈາກນັ້ນນໍາໃຊ້ຂໍ້ມູນນີ້ເພື່ອສ້າງຄໍາຕອບ. ວິທີການນີ້ອະນຸຍາດໃຫ້ LLMs ສາມາດນໍາເອົາຄວາມຮູ້ພາຍນອກແລະສະຫນອງການຕອບສະຫນອງທີ່ຖືກຕ້ອງແລະມີຂໍ້ມູນຫຼາຍຂຶ້ນ.

ເປັນຫຍັງຕ້ອງໃຊ້ RAG ກັບ FastAPI ແລະ Django?

FastAPI ແລະ Django ແມ່ນສອງກອບເວັບທີ່ນິຍົມທີ່ສຸດທີ່ໃຊ້ໃນການກໍ່ສ້າງຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌. ພວກເຂົາເຈົ້າສະຫນອງໂຄງສ້າງພື້ນຖານທີ່ເຂັ້ມແຂງແລະສາມາດຂະຫຍາຍໄດ້ສໍາລັບການກໍ່ສ້າງຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌, ແລະສາມາດປະສົມປະສານໄດ້ຢ່າງງ່າຍດາຍກັບເຕັກນິກ RAG ເພື່ອເພີ່ມຄວາມສາມາດຂອງ LLM. FastAPI ແມ່ນກອບເວັບທີ່ທັນສະໄຫມທີ່ສະຫນອງວິທີທີ່ໄວແລະມີປະສິດທິພາບໃນການສ້າງຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌, ໃນຂະນະທີ່ Django ແມ່ນກອບເວັບລະດັບສູງທີ່ສະຫນອງສະຖາປັດຕະຍະກໍາ, ແມ່ແບບ, ແລະ APIs ສໍາລັບການກໍ່ສ້າງຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌ທີ່ເຂັ້ມແຂງ.

ການ​ປະ​ຕິ​ບັດ RAG ກັບ FastAPI

FastAPI ສະຫນອງວິທີທີ່ງ່າຍດາຍແລະມີປະສິດທິພາບໃນການປະຕິບັດເຕັກນິກ RAG. ນີ້ແມ່ນຕົວບລັອກລະຫັດຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນວິທີການນໍາໃຊ້ FastAPI ເພື່ອປະຕິບັດ RAG:

`` python ຈາກ fastapi ນໍາເຂົ້າ FastAPI ຈາກການນໍາເຂົ້າ langchain LLMChain ຈາກ langchain.chains.openai ນໍາເຂົ້າ OpenAIApi

app = FastAPI()

@app.get("/rag") async def rag(query: str):

llm_chain = LLMChain(
    llm=OpenAIApi(),
    retrieval=LangChainRetrieval(
        index=LangChainIndex(
            name="my_index",
            ເອກະສານ =["doc1", "doc2", "doc3"]
        )
    )
)

# ສ້າງຄໍາຕອບໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM
ຕອບ = llm_chain.run(ສອບຖາມ)

ກັບຄືນ {"ຕອບສະໜອງ": ຕອບສະໜອງ}

ໃນຕົວຢ່າງນີ້, ພວກເຮົາກໍານົດລະບົບຕ່ອງໂສ້ LLM ໂດຍໃຊ້ຊັ້ນ `LLMChain` ຈາກ LangChain. ຫຼັງຈາກນັ້ນ, ພວກເຮົາກໍານົດອົງປະກອບການດຶງຂໍ້ມູນໂດຍໃຊ້ຫ້ອງຮຽນ `LangChainRetrieval`, ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອດຶງຂໍ້ມູນທີ່ກ່ຽວຂ້ອງຈາກພື້ນຖານຄວາມຮູ້ຫຼືຖານຂໍ້ມູນ. ສຸດທ້າຍ, ພວກເຮົາໃຊ້ວິທີການ 'ແລ່ນ' ເພື່ອສ້າງການຕອບໂຕ້ໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM.

** ການ​ປະ​ຕິ​ບັດ RAG ກັບ Django **


Django ສະຫນອງກອບເວັບລະດັບສູງທີ່ສາມາດປະສົມປະສານໄດ້ຢ່າງງ່າຍດາຍກັບເຕັກນິກ RAG. ນີ້ແມ່ນຕົວບລັອກລະຫັດຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນວິທີການໃຊ້ Django ເພື່ອປະຕິບັດ RAG:

`` python
ຈາກ django.http ນໍາເຂົ້າ JsonResponse
ຈາກການນໍາເຂົ້າ langchain LLMChain
ຈາກ langchain.chains.openai ນໍາເຂົ້າ OpenAIApi

def rag (ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​)​:
    # ກໍານົດລະບົບຕ່ອງໂສ້ LLM
    llm_chain = LLMChain(
        llm=OpenAIApi(),
        retrieval=LangChainRetrieval(
            index=LangChainIndex(
                name="my_index",
                ເອກະສານ =["doc1", "doc2", "doc3"]
            )
        )
    )

    # ສ້າງຄໍາຕອບໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM
    ຕອບ = llm_chain.run(request.GET.get("ສອບຖາມ"))

    ກັບຄືນ JsonResponse({"ຕອບສະໜອງ": ຕອບສະໜອງ})

ໃນຕົວຢ່າງນີ້, ພວກເຮົາກໍານົດຟັງຊັນການເບິ່ງ rag ທີ່ໃຊ້ການສອບຖາມເປັນການປ້ອນຂໍ້ມູນແລະສ້າງການຕອບສະຫນອງໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM.

Orchestrating RAG ກັບ LangChain

LangChain ສະຫນອງວິທີການງ່າຍດາຍແລະປະສິດທິພາບໃນການຈັດລຽງເຕັກນິກ RAG. ນີ້ແມ່ນຕົວບລັອກລະຫັດຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນວິທີການໃຊ້ LangChain ເພື່ອຈັດ RAG:

`` python ຈາກການນໍາເຂົ້າ langchain LLMChain ຈາກ langchain.chains.openai ນໍາເຂົ້າ OpenAIApi

ກໍານົດລະບົບຕ່ອງໂສ້ LLM

llm_chain = LLMChain( llm=OpenAIApi(), retrieval=LangChainRetrieval( index=LangChainIndex( name="my_index", ເອກະສານ =["doc1", "doc2", "doc3"] ) ) )

ສ້າງຄໍາຕອບໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM

ຕອບ = llm_chain.run("RAG ແມ່ນຫຍັງ?")

ພິມ(ຕອບ)


ໃນຕົວຢ່າງນີ້, ພວກເຮົາກໍານົດລະບົບຕ່ອງໂສ້ LLM ໂດຍໃຊ້ຊັ້ນ `LLMChain` ຈາກ LangChain. ຫຼັງຈາກນັ້ນ, ພວກເຮົາໃຊ້ວິທີການ 'ແລ່ນ' ເພື່ອສ້າງການຕອບສະຫນອງໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM.

** 5-10 ຄໍາສັ່ງທີ່ໃຊ້ຫຼາຍທີ່ສຸດ / ສະນິບເພັດ **


ນີ້ແມ່ນ 5-10 ຄໍາສັ່ງທີ່ໃຊ້ຫຼາຍທີ່ສຸດ / snippets ສໍາລັບການປະຕິບັດ RAG ກັບ FastAPI ແລະ Django:

1. `from langchain import LLMChain`: ນຳເຂົ້າຊັ້ນ `LLMChain` ຈາກ LLMChain.
2. `llm_chain = LLMChain(llm=OpenAIApi(), retrieval=LangChainRetrieval(index=LangChainIndex(name="my_index", document=["doc1", "doc2", "doc3"])))`: ກຳນົດລະບົບຕ່ອງໂສ້ LLM ໂດຍໃຊ້ຊັ້ນ `LLMChain`.
3. `response = llm_chain.run(query)`: ສ້າງການຕອບສະໜອງໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM.
4. `ຈາກ 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", document=["doc1", "doc2", "doc3"])))`: ກຳນົດລະບົບຕ່ອງໂສ້ LLM ໂດຍໃຊ້ຊັ້ນ `LLMChain`.
8. `response = llm_chain.run(query)`: ສ້າງການຕອບສະໜອງໂດຍໃຊ້ລະບົບຕ່ອງໂສ້ LLM.
9. `ຈາກ django.http ນໍາເຂົ້າ JsonResponse`: ນໍາເຂົ້າຫ້ອງຮຽນ `JsonResponse` ຈາກ Django.
10. `return JsonResponse({"response": response})`: ຕອບ JSON ດ້ວຍການຕອບສະໜອງທີ່ສ້າງຂຶ້ນ.

** ການສະແດງພາບ **


ນີ້ແມ່ນການສະແດງພາບຂອງທໍ່ RAG ໂດຍໃຊ້ Chart.js:

```json
{
  "type": "ແຖບລວງນອນ",
  "ຂໍ້ມູນ": {
    "labels": ["Retrieval", "Generation", "Post-processing"],
    "ຊຸດຂໍ້ມູນ": [
      {
        "label": "ທໍ່ RAG",
        "ຂໍ້ມູນ": [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"
    },
    "ເກັດ": {
      "yAxes": [
        {
          "ຫມາຍຕິກ": {
            "beginAtZero": ແທ້
          }
        }
      ]
    }
  }
}

ການເບິ່ງເຫັນນີ້ສະແດງໃຫ້ເຫັນເຖິງທໍ່ RAG ທີ່ມີສາມຂັ້ນຕອນ: ການດຶງ, ການຜະລິດ, ແລະການປຸງແຕ່ງຫລັງ.

** ສະ​ຫຼຸບ **

ໃນບົດຄວາມນີ້, ພວກເຮົາໄດ້ຄົ້ນຫາການປະຕິບັດເຕັກນິກ RAG ໂດຍໃຊ້ FastAPI ແລະ Django ເພື່ອເພີ່ມຄວາມສາມາດຂອງ LLM ໃນຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌, ລວມທັງການ orchestration ກັບ LangChain ສໍາລັບການດຶງຂໍ້ມູນແລະການປຸງແຕ່ງ seamless. ພວກເຮົາຍັງໄດ້ໃຫ້ຄໍາແນະນໍາພາກປະຕິບັດເພື່ອປະຕິບັດ RAG ກັບ FastAPI ແລະ Django, ລວມທັງຕົວຢ່າງລະຫັດແລະການເບິ່ງເຫັນຂອງທໍ່ RAG. ພວກເຮົາຫວັງວ່າບົດຄວາມນີ້ໄດ້ສະຫນອງຊັບພະຍາກອນທີ່ເປັນປະໂຫຍດສໍາລັບນັກພັດທະນາທີ່ຊອກຫາການປະຕິບັດເຕັກນິກ RAG ໃນຄໍາຮ້ອງສະຫມັກເວັບຂອງພວກເຂົາ.


Have Questions?

Let's Talk

Contact me on LinkedIn