𝗧𝗮𝗺𝗶𝗻𝗴 𝗟𝗼𝗻𝗴 𝗗𝗼𝗰𝘂𝗺𝗲𝗻𝘁𝘀 𝘄𝗶𝘁𝗵 𝗟𝗟𝗠𝘀

ผมได้สร้างระบบสำหรับตอบคำถามจากไฟล์ PDF ทางเทคนิคที่มีความยาวถึง 100 หน้า

สคริปต์แบบธรรมดานั้นใช้ไม่ได้ผล ผมต้องต่อสู้กับข้อจำกัดของ token และค่าใช้จ่ายที่สูงลิ่วอยู่หลายสัปดาห์

ความพยายามครั้งแรกของผมคือการใช้ GPT-4 กับข้อความทั้งหมด ซึ่งใช้ได้ผลกับเอกสาร 10 หน้า แต่พอถึง 100 หน้า ผมก็เจอกับขีดจำกัดของ token ตัวโมเดลเริ่มลืมรายละเอียดตรงช่วงกลาง และค่าใช้จ่ายก็สูงเกินไป

ผมได้ลองใช้วิธีเหล่านี้:

  • Basic chunking: โมเดลเลือกส่วนที่ไม่ถูกต้องและขาดบริบทที่สำคัญ
  • Map-reduce: ผมสูญเสียรายละเอียดเฉพาะเจาะจงไป
  • Sliding windows: วิธีนี้ช้าและสิ้นเปลืองเกินไป

ผมเลียนแบบวิธีการอ่านของมนุษย์ เราจะกวาดสายตาดูสารบัญก่อน จากนั้นจึงค่อยอ่านเฉพาะส่วนที่ต้องการ

นี่คือเวิร์กโฟลว์ใหม่:

  • สร้างลำดับชั้น (Hierarchy): ใช้ LLM เพื่อสร้างสรุปสั้นๆ สำหรับแต่ละ chunk
  • เก็บสรุปและข้อความฉบับเต็มไว้ใน vector database
  • ใช้การค้นหาแบบ hybrid โดยผสมผสานระหว่าง keyword และ semantic search
  • ดึงสรุป 3 อันดับแรกออกมาเป็นอันดับแรก
  • ดึงข้อความฉบับเต็มของสรุปเหล่านั้นออกมา
  • ส่งบริบทเหล่านี้ให้กับ LLM

ผลลัพธ์ที่ได้:

  • ค่าใช้จ่ายลดลง 70%
  • คำศัพท์ทางเทคนิคมีความแม่นยำมากขึ้น
  • ความแม่นยำเพิ่มสูงขึ้น

เคล็ดลับสำหรับการตั้งค่าของคุณ:

  • ใช้ GPT-3.5 สำหรับการสรุปความ
  • ใช้ GPT-4 สำหรับการตอบคำถามสุดท้าย
  • สร้างชุดข้อมูลสำหรับทดสอบ (test dataset) ตั้งแต่เนิ่นๆ
  • สำหรับเอกสารที่น้อยกว่า 20 หน้า ให้ใส่เนื้อหาทั้งหมดลงใน prompt ได้เลย

ที่มา: https://dev.to/__c1b9e06dc90a7e0a676b/how-i-finally-tamed-long-document-analysis-with-llms-it-wasnt-simple-chunking-5ed3