ការរួមបញ្ចូល RAG ជាមួយ LLMs សម្រាប់ស្ថាបត្យកម្មកម្មវិធីថាមវន្ត៖ ការណែនាំជាក់ស្តែង | B4N1

ការរួមបញ្ចូល RAG ជាមួយ LLMs សម្រាប់ស្ថាបត្យកម្មកម្មវិធីថាមវន្ត៖ ការណែនាំជាក់ស្តែង

8 months ago · b4n1 Read time: 1 min

ការរួមបញ្ចូល RAG ជាមួយ LLMs សម្រាប់ស្ថាបត្យកម្មកម្មវិធីថាមវន្ត៖ ការណែនាំជាក់ស្តែង

សេចក្តីផ្តើម

ក្នុងប៉ុន្មានឆ្នាំថ្មីៗនេះ វិស័យស្ថាបត្យកម្មកម្មវិធីបានឆ្លងកាត់ការផ្លាស់ប្តូរយ៉ាងសំខាន់ជាមួយនឹងការមកដល់នៃ Large Language Models (LLMs) និងបច្ចេកទេស Retrieval-Augmented Generation (RAG)។ ភាពស៊ីសង្វាក់គ្នារវាងបច្ចេកវិទ្យាទាំងពីរនេះមានសក្តានុពលក្នុងការធ្វើបដិវត្តវិធីដែលយើងរចនា និងអភិវឌ្ឍប្រព័ន្ធកម្មវិធី។ នៅក្នុងអត្ថបទនេះ យើងនឹងស្វែងយល់ពីការរួមបញ្ចូលនៃ RAG ជាមួយ LLMs សម្រាប់ស្ថាបត្យកម្មកម្មវិធីថាមវន្ត រួមទាំងយុទ្ធសាស្ត្រអនុវត្តដោយប្រើឧបករណ៍ orchestration ដូចជា LangChain និង DSPy ។

តើ RAG ជាអ្វី?

RAG គឺជាបច្ចេកទេសមួយដែលរួមបញ្ចូលគ្នានូវភាពខ្លាំងនៃម៉ូដែលដែលមានមូលដ្ឋានលើ Retrieval និង Generation-based ដើម្បីបង្កើតលទ្ធផលអត្ថបទដែលមានគុណភាពខ្ពស់។ គំនិតជាមូលដ្ឋាននៅពីក្រោយ RAG គឺត្រូវប្រើគំរូទាញយកមកវិញ ដើម្បីជ្រើសរើសឯកសារពាក់ព័ន្ធ ឬអត្ថបទពីសាកសពធំ ហើយបន្ទាប់មកប្រើគំរូជំនាន់ដើម្បីបង្កើតអត្ថបទដោយផ្អែកលើអត្ថបទដែលបានទាញយកទាំងនេះ។ វិធីសាស្រ្តនេះបានបង្ហាញពីការកែលម្អយ៉ាងសំខាន់នៅក្នុងកិច្ចការដូចជា ការឆ្លើយសំណួរ ការសង្ខេបអត្ថបទ និងការសន្ទនា AI ។

** តើ LLM គឺជាអ្វី?**

LLMs គឺជាប្រភេទគំរូបញ្ញាសិប្បនិមិត្ត ដែលត្រូវបានបណ្តុះបណ្តាលលើទិន្នន័យអត្ថបទយ៉ាងច្រើន ដើម្បីបង្កើតលទ្ធផលភាសាដូចមនុស្ស។ គំរូទាំងនេះជាធម្មតាផ្អែកលើស្ថាបត្យកម្មប្លែង និងសម្រេចបាននូវលទ្ធផលដ៏ទំនើបនៅក្នុងជួរដ៏ធំទូលាយនៃកិច្ចការដំណើរការភាសាធម្មជាតិ។ LLMs មានភាពបត់បែនខ្ពស់ ហើយអាចប្រើសម្រាប់កិច្ចការដូចជា ការបកប្រែភាសា ការសង្ខេបអត្ថបទ និងការសន្ទនា AI ។

** ហេតុអ្វីបានជារួមបញ្ចូល RAG ជាមួយ LLMs?**

ការរួមបញ្ចូល RAG ជាមួយ LLMs ផ្តល់នូវអត្ថប្រយោជន៍ជាច្រើនសម្រាប់ស្ថាបត្យកម្មកម្មវិធីថាមវន្ត៖

  1. ភាពត្រឹមត្រូវដែលបានធ្វើឱ្យប្រសើរឡើង: RAG អាចជួយ LLMs ក្នុងការជ្រើសរើសឯកសារដែលពាក់ព័ន្ធ ឬអត្ថបទពីស្ថាប័នធំ ដែលនាំឱ្យលទ្ធផលអត្ថបទកាន់តែត្រឹមត្រូវ និងផ្តល់ព័ត៌មាន។
  2. បង្កើនប្រសិទ្ធភាព៖ RAG អាចកាត់បន្ថយការចំណាយលើការគណនារបស់ LLMs ដោយជ្រើសរើសតែឯកសារ ឬអត្ថបទដែលពាក់ព័ន្ធបំផុត ដែលនាំឱ្យពេលវេលាឆ្លើយតបកាន់តែលឿន។
  3. ភាពបត់បែនបានប្រសើរឡើង៖ RAG អាចត្រូវបានប្រើដើម្បីសម្របទៅនឹងការផ្លាស់ប្តូរចំណូលចិត្តរបស់អ្នកប្រើប្រាស់ និងតម្រូវការ ដែលអនុញ្ញាតឱ្យ LLMs បង្កើតលទ្ធផលអត្ថបទដែលពាក់ព័ន្ធ និងទាក់ទាញជាង។

យុទ្ធសាស្ត្រអនុវត្ត

មានយុទ្ធសាស្ត្រអនុវត្តជាច្រើនសម្រាប់ការរួមបញ្ចូល RAG ជាមួយ LLMs រួមមាន:

  1. LangChain៖ LangChain គឺជាបណ្ណាល័យប្រភពបើកចំហដែលផ្តល់នូវ API ដ៏សាមញ្ញ និងវិចារណញាណសម្រាប់បង្កើតគំរូដែលមានមូលដ្ឋានលើ RAG ។ វាគាំទ្រជួរដ៏ធំទូលាយនៃ LLMs និងអាចត្រូវបានប្រើដើម្បីអនុវត្តស្ថាបត្យកម្ម RAG ស្មុគស្មាញ។
  2. DSPy: DSPy គឺជាបណ្ណាល័យ Python ដែលផ្តល់នូវវិធីសាមញ្ញ និងមានប្រសិទ្ធភាពក្នុងការអនុវត្តគំរូដែលមានមូលដ្ឋានលើ RAG ។ វាគាំទ្រជួរដ៏ធំទូលាយនៃ LLMs និងអាចត្រូវបានប្រើដើម្បីអនុវត្តស្ថាបត្យកម្ម RAG ស្មុគស្មាញ។

កូដឧទាហរណ៍

នេះគឺជាឧទាហរណ៍កូដសាមញ្ញដែលបង្ហាញពីរបៀបប្រើ LangChain ដើម្បីរួមបញ្ចូល RAG ជាមួយ LLMs៖ ``ពស់ថ្លាន់ នាំចូល langchain ពី langchain.chains នាំចូល RAGChain ពី langchain.llms នាំចូល LLaMA

ឡាម៉ា = LLaMA()

បង្កើតគំរូ RAGChain

rag_chain = RAGChain(llama, retrieval_model="t5-small")

កំណត់ការជម្រុញ

prompt = "តើរាជធានីនៃប្រទេសបារាំងជាអ្វី?"

បង្កើតលទ្ធផលអត្ថបទ

លទ្ធផល = rag_chain.run(prompt)

បោះពុម្ព (លទ្ធផល)

ឧទាហរណ៍កូដនេះបង្ហាញពីរបៀបប្រើ LangChain ដើម្បីបង្កើតគំរូ RAGChain ដែលរួមបញ្ចូលគំរូ LLaMA ជាមួយគំរូទាញយក។ បន្ទាប់មក គំរូ RAGChain ត្រូវបានប្រើដើម្បីបង្កើតលទ្ធផលអត្ថបទដោយផ្អែកលើប្រអប់បញ្ចូល។

** កំពូល 5-10 ពាក្យបញ្ជា / អត្ថបទដែលប្រើច្រើនបំផុត **

នេះគឺជា 5-10 ពាក្យបញ្ជាដែលប្រើច្រើនជាងគេបំផុតសម្រាប់ការរួមបញ្ចូល RAG ជាមួយ LLMs៖

1. `langchain.RAGChain(llama, retrieval_model="t5-small")`៖ បង្កើតគំរូ RAGChain ដែលរួមបញ្ចូលគំរូ LLaMA ជាមួយនឹងគំរូទាញយក។
2. `llama.run(prompt)`៖ បង្កើត​លទ្ធផល​អត្ថបទ​ដោយ​ផ្អែក​លើ​ប្រអប់បញ្ចូល​ដោយ​ប្រើ​គំរូ LLaMA។
3. `rag_chain.run(prompt)`៖ បង្កើតលទ្ធផលអត្ថបទដោយផ្អែកលើប្រអប់បញ្ចូលដោយប្រើគំរូ RAGChain ។
4. `langchain.chains.RAGChain(llama, retrieval_model="t5-small", max_length=1024)`៖ បង្កើតគំរូ RAGChain ដែលរួមបញ្ចូលគំរូ LLaMA ជាមួយនឹងគំរូទាញយក ហើយកំណត់ប្រវែងអតិបរមានៃអត្ថបទលទ្ធផល។
5. `llama.get_input(prompt)`៖ ត្រឡប់​អត្ថបទ​បញ្ចូល​សម្រាប់​គំរូ LLaMA។
6. `rag_chain.get_output(prompt)`៖ ត្រឡប់អត្ថបទលទ្ធផលសម្រាប់គំរូ RAGChain ។
7. `langchain.chains.RAGChain(llama, retrieval_model="t5-small", batch_size=32)`៖ បង្កើតគំរូ RAGChain ដែលរួមបញ្ចូលគំរូ LLaMA ជាមួយនឹងគំរូទាញយក និងកំណត់ទំហំបាច់។
8. `llama.get_output(prompt)`៖ ត្រឡប់​អត្ថបទ​លទ្ធផល​សម្រាប់​គំរូ LLaMA។
9. `rag_chain.get_input(prompt)`៖ ត្រឡប់​អត្ថបទ​បញ្ចូល​សម្រាប់​គំរូ RAGChain។
10. `langchain.chains.RAGChain(llama, retrieval_model="t5-small", device="cuda")`៖ បង្កើតគំរូ RAGChain ដែលរួមបញ្ចូលគំរូ LLaMA ជាមួយនឹងគំរូទាញយក ហើយកំណត់ឧបករណ៍ទៅជា CUDA។

** ការមើលឃើញ **

នេះគឺជាការមើលឃើញដ៏សាមញ្ញនៃគំរូ RAGChain ដោយប្រើ Chart.js៖
```json
{
  "type": "របារ",
  "ទិន្នន័យ"៖ {
    "labels": ["LLaMA", "RAGChain"],
    "សំណុំទិន្នន័យ": [
      {
        "label": "ភាពត្រឹមត្រូវ",
        "ទិន្នន័យ"៖ [0.8, 0.9],
        "backgroundColor": ["#FF6384", "#36A2EB"]
      }
    ]
  },
  "ជម្រើស"៖ {
    "ចំណងជើង"៖ {
      "បង្ហាញ": ពិត,
      "text": "ភាពត្រឹមត្រូវនៃគំរូ RAGChain"
    },
    "មាត្រដ្ឋាន"៖ {
      "yAxes": [
        {
          "ធីក"៖ {
            "beginAtZero"៖ ពិត
          }
        }
      ]
    }
  }
}

ការមើលឃើញនេះបង្ហាញពីភាពត្រឹមត្រូវនៃគំរូ LLaMA និងគំរូ RAGChain ។

សេចក្តីសន្និដ្ឋាន

ការរួមបញ្ចូលនៃ RAG ជាមួយ LLMs ផ្តល់នូវអត្ថប្រយោជន៍ជាច្រើនសម្រាប់ស្ថាបត្យកម្មកម្មវិធីថាមវន្ត រួមទាំងភាពត្រឹមត្រូវដែលប្រសើរឡើង ប្រសិទ្ធភាព និងភាពបត់បែនកាន់តែប្រសើរឡើង។ LangChain និង DSPy គឺជាឧបករណ៍ orchestration ដ៏ពេញនិយមពីរដែលអាចត្រូវបានប្រើដើម្បីអនុវត្តគំរូដែលមានមូលដ្ឋានលើ RAG ។ ដោយធ្វើតាមយុទ្ធសាស្ត្រអនុវត្ត និងឧទាហរណ៍កូដដែលបានផ្តល់ក្នុងអត្ថបទនេះ អ្នកអភិវឌ្ឍន៍អាចបង្កើតស្ថាបត្យកម្ម RAG ស្មុគស្មាញដែលរួមបញ្ចូល LLMs ជាមួយគំរូទាញយកមកវិញ។ កំពូល 5-10 ពាក្យបញ្ជាដែលប្រើច្រើនជាងគេបំផុតសម្រាប់ការរួមបញ្ចូល RAG ជាមួយ LLMs ក៏ត្រូវបានផ្តល់ជូនសម្រាប់ជាឯកសារយោងផងដែរ។


Have Questions?

Let's Talk

Contact me on LinkedIn