การจัดการกับการวิเคราะห์เอกสารขนาดยาวด้วย LLMs
ผมต้องตอบคำถามจากไฟล์ PDF ที่มีความยาวถึง 100 หน้า สคริปต์แบบธรรมดาใช้งานไม่ได้ผล ผมต้องต่อสู้กับข้อจำกัดของ token และค่าใช้จ่ายที่สูงลิ่วอยู่หลายสัปดาห์
เริ่มแรก ผมลองใช้ข้อความทั้งหมด (full text) โมเดลลืมรายละเอียดตรงช่วงกลางๆ ค่าใช้จ่ายพุ่งสูงถึง 50 เซนต์ต่อการเรียกใช้งานหนึ่งครั้ง
จากนั้นผมจึงลองใช้วิธีเหล่านี้:
- Fixed chunks: โมเดลเลือกส่วนที่ไม่ถูกต้อง
- Map-reduce: บทสรุปขาดรายละเอียดที่สำคัญ
- Sliding window: ทำงานช้าเกินไป
ผมจึงตัดสินใจเลียนแบบวิธีการอ่านของมนุษย์ มนุษย์จะอ่านแบบกวาดสายตาก่อน แล้วจึงค่อยอ่านอย่างละเอียด
นี่คือกระบวนการของผม:
- สร้างลำดับชั้นของ chunks
- เขียนบทสรุปสั้นๆ สำหรับแต่ละ chunk
- เก็บทั้งบทสรุปและข้อความดิบ (raw text) ไว้ใน vector database
- ใช้ hybrid search เพื่อค้นหาบทสรุปที่ดีที่สุด
- ดึงข้อความดิบจากบทสรุปเหล่านั้นออกมา
- ใช้ prompt ที่เข้มงวดเพื่อป้องกันการเกิด hallucination
สิ่งนี้ทำให้ผลลัพธ์เปลี่ยนไป:
- ค่าใช้จ่ายลดลง 70 เปอร์เซ็นต์
- ความแม่นยำเพิ่มขึ้น
- คำศัพท์ทางเทคนิคยังคงความถูกต้องครบถ้วน
คำแนะนำสำหรับคุณ:
- ใช้โมเดลราคาถูกสำหรับการทำบทสรุป
- ใช้ GPT-4 สำหรับการตอบคำถามสุดท้าย
- สร้างชุดข้อมูลสำหรับทดสอบ (test dataset) ตั้งแต่สัปดาห์แรก
- ข้ามขั้นตอนนี้ไปได้เลยหากเอกสารมีความยาวน้อยกว่า 20 หน้า
แล้วคุณล่ะ มีวิธีการจัดการกับเอกสารขนาดยาวอย่างไร?
Source: https://dev.to/__c1b9e06dc90a7e0a676b/how-i-finally-tamed-long-document-analysis-with-llms-it-wasnt-simple-chunking-5ed3 Optional learning community: https://t.me/GyaanSetuAi