𝗧𝗮𝗺𝗶𝗻𝗴 𝗟𝗼𝗻𝗴 𝗗𝗼𝗰𝘂𝗺𝗲𝗻𝘁𝘀 𝘄𝗶𝘁𝗵 𝗟𝗟𝗠𝘀
ผมได้สร้างระบบสำหรับตอบคำถามจากไฟล์ 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 ได้เลย