Files
LangBot/plugins/KnowledgeEngine/LangRAG/readme/README_th_TH.md

11 KiB

#แลงแร็ก

ปลั๊กอินเครื่องยนต์ RAG (Retriever-Augmented Generation) สำหรับ LangBot

ปลั๊กอินนี้สาธิตวิธีสร้าง Knowledge Engine ที่จัดการการนำเข้าเอกสารและการดึงข้อมูลเวกเตอร์โดยใช้โครงสร้างพื้นฐานในตัวของ LangBot Host (โมเดลการฝังและฐานข้อมูลเวกเตอร์)

คุณสมบัติ

-External Parser Integration- ชอบเนื้อหาที่แยกวิเคราะห์ล่วงหน้าจากปลั๊กอิน Parser เช่น GeneralParsers รวมถึงส่วนที่มีโครงสร้างและข้อมูลเมตาของเอกสาร -การแยกวิเคราะห์ภายในสำรอง- รวมตัวแยกวิเคราะห์ในตัวเป็นทางเลือกเมื่อไม่มีการกำหนดค่าตัวแยกวิเคราะห์ภายนอก -กลยุทธ์ดัชนีหลายรายการ- การแบ่งส่วนแบบแบน การแบ่งส่วนหลักและรอง คู่คำถามและคำตอบที่สร้างโดย LLM -การเรียกข้อมูลแบบยืดหยุ่น- การค้นหาเวกเตอร์ ข้อความแบบเต็ม หรือแบบผสม -การเขียนแบบสอบถามใหม่- กลยุทธ์ HyDE, Multi-Query, Step-Back เพื่อการเรียกคืนที่ดีขึ้น -การแบ่งส่วนที่กำหนดค่าได้- การแยกอักขระแบบเรียกซ้ำด้วยขนาดก้อนที่กำหนดเองและการทับซ้อนกัน -การแบ่งส่วนตามส่วน- เมื่อส่วนที่มีโครงสร้างพร้อมใช้งาน การแบ่งส่วนจะรักษาส่วนหัว ข้อมูลหน้า และขอบเขตของตาราง -การขยายบริบท- เลือกที่จะต่อท้ายส่วนที่อยู่ติดกันรอบๆ Hit แต่ละครั้งเพื่อให้ได้รับบริบทที่สมบูรณ์ยิ่งขึ้น -การจัดการเอกสาร- ลบเวกเตอร์ที่จัดทำดัชนีตามเอกสาร

สถาปัตยกรรม

┌─────────────────────────────────┐
│         LangBot Core            │
│  (Embedding / VDB / Storage)    │
└──────────┬──────────────────────┘
           │ RPC (IPC)
┌──────────▼──────────────────────┐
│          LangRAG                │
│  ┌───────────────────────────┐  │
│  │    Knowledge Engine       │  │
│  │  Parse → Chunk → Embed   │  │
│  │      → Store / Search    │  │
│  └───────────────────────────┘  │
└─────────────────────────────────┘

กระแสการกลืนกิน

ตอนนี้ LangRAG ต้องการเอาต์พุตพาร์เซอร์ที่จัดทำโดย LangBot Host:

  1. LangBot อ่านไฟล์ที่อัพโหลด
  2. ปลั๊กอิน Parser เช่น GeneralParsers จะแยกtext,sectionsและmetadata
  3. LangRAG นำเข้าผลลัพธ์ที่มีโครงสร้างนั้นโดยตรง
  4. หากไม่มีเอาต์พุตของพาร์เซอร์ LangRAG จะถอยกลับไปยังพาร์เซอร์ภายใน
  5. กลยุทธ์ดัชนีที่เลือกจะสร้างคู่คำถาม/คำตอบ
  6. LangBot Host สร้างการฝังและจัดเก็บเวกเตอร์

ซึ่งหมายความว่า LangRAG จะทำงานได้ดีที่สุดเมื่อจับคู่กับปลั๊กอินพาร์เซอร์ภายนอก

การกำหนดค่า

การสร้างฐานความรู้

พารามิเตอร์ คำอธิบาย ค่าเริ่มต้น
embedding_model_uuid โมเดลการฝัง จำเป็น
index_type กลยุทธ์การจัดทำดัชนี:chunk,parent_childหรือqa ชิ้น
chunk_size ตัวอักษรต่อก้อน 512
`ทับซ้อนกัน' ทับซ้อนกันระหว่างชิ้น 50
ขนาดผู้ปกครอง_chunk_size ขนาดก้อนพาเรนต์ (parent_child เท่านั้น) 2048
ขนาดเด็กชิ้น ขนาดชิ้นย่อย (parent_child เท่านั้น) 256
qa_llm_model_uuid LLM สำหรับการสร้างคำถาม & คำตอบ (qa เท่านั้น) -
คำถามต่อชิ้น คำถามที่จะสร้างต่อชิ้น (qa เท่านั้น) 1

การเรียกคืน

พารามิเตอร์ คำอธิบาย ค่าเริ่มต้น
top_k จำนวนผลลัพธ์ที่จะส่งคืน 5
ประเภทการค้นหา โหมดการค้นหา:vector,full_textหรือhybrid เวกเตอร์
query_rewrite เขียนกลยุทธ์ใหม่:off,hyde,multi_queryหรือstep_back ปิด
rewrite_llm_model_uuid LLM สำหรับการเขียนคิวรีใหม่ (เมื่อเปิดใช้งานการเขียนใหม่) -
context_window จำนวนชิ้นที่อยู่ติดกันที่จะต่อท้ายแต่ละ Hit 0

กลยุทธ์ดัชนี

-ก้อน- ก้อนแบนเริ่มต้น แยกเอกสารออกเป็นชิ้นขนาดคงที่และฝังแต่ละชิ้นโดยตรง เมื่อส่วน parser พร้อมใช้งาน ส่วนต่างๆ จะถูกสร้างขึ้นทีละส่วน แทนที่จะทำให้เอกสารทั้งหมดเรียบลง -parent_child- การแบ่งส่วนสองระดับ แบ่งเป็นชิ้นใหญ่ แล้วจึงแยกชิ้นเล็ก ฝังส่วนย่อยแต่ส่งคืนข้อความพาเรนต์เพื่อบริบทที่สมบูรณ์ยิ่งขึ้น เมื่อส่วนของ parser พร้อมใช้งาน ส่วนต่างๆ จะถูกใช้เป็นขอบเขตพาเรนต์ตามธรรมชาติ -qa- คู่ถามตอบที่สร้างโดย LLM ข้อความเป็นชิ้น ใช้ LLM เพื่อสร้างคู่คำถาม-คำตอบต่อชิ้น และฝังคำถาม เมื่อส่วน parser พร้อมใช้งาน การสร้าง Q&A ก็จะรับรู้ถึงส่วนด้วย

การเขียนแบบสอบถามใหม่

-ไฮด์- การฝังเอกสารสมมุติ สร้างคำตอบสมมุติให้กับคำถาม จากนั้นฝังคำตอบนั้นเพื่อการเรียกค้น -multi_query- สร้างรูปแบบข้อความค้นหา 3 แบบ ค้นหาแต่ละรายการ และรวมผลลัพธ์ตามคะแนน -step_back- สร้างคำถามที่เป็นนามธรรมมากขึ้นและค้นหาด้วยข้อความค้นหาดั้งเดิมและเชิงนามธรรม

จับคู่กับ GeneralParsers

GeneralParsers ปัจจุบันเป็นตัวแยกวิเคราะห์ที่แนะนำสำหรับ LangRAG เนื่องจากสามารถให้:

  • การแยกไฟล์ PDF ที่สะอาดยิ่งขึ้น
  • ส่วนที่มีโครงสร้าง
  • ข้อความรักษาตาราง
  • ข้อมูลเมตาระดับเอกสาร
  • ตัวเลือก OCR และคำอธิบายรูปภาพผ่านโมเดลการมองเห็น

LangRAG ใช้เอาต์พุตของพาร์เซอร์เหล่านั้นโดยตรงในระหว่างการนำเข้า ซึ่งโดยทั่วไปจะสร้างชิ้นส่วนที่ดีกว่าและคุณภาพการดึงข้อมูลที่ดีกว่าพาร์เซอร์ทางเลือก

การพัฒนา

pip install -r requirements.txt
cp .env.example .env

กำหนดค่าDEBUG_RUNTIME_WS_URLและPLUGIN_DEBUG_KEYใน.envจากนั้นเปิดใช้งานด้วยดีบักเกอร์ IDE ของคุณ

ลิงค์