เฟส 1: การนำเข้าเอกสาร (Document Ingestion)

ระบบ RAG ส่วนใหญ่มักจะล้มเหลวก่อนที่จะได้เริ่มทำงานเสียอีก

คุณอาจคิดว่าการสร้างระบบ RAG นั้นง่ายๆ แค่ผู้ใช้คนหนึ่งอัปโหลด PDF คุณก็สร้าง embeddings แล้วก็ได้คำตอบออกมา

นั่นคือความเข้าใจที่ผิด

ระหว่างปุ่มอัปโหลดไปจนถึงฐานข้อมูลเวกเตอร์ (vector database) มีขั้นตอนสำคัญถึง 15 ขั้นตอน หากคุณข้ามขั้นตอนใดขั้นตอนหนึ่งไป ระบบของคุณอาจให้คำตอบที่ผิดพลาดหรือทำให้คุณเสียเงินโดยเปล่าประโยชน์

นี่คือโรดแมปสำหรับการนำเข้าเอกสารในระดับโปรดักชัน (production-grade):

• File Hashing: อย่าทำ hashing ที่ชื่อไฟล์ ให้ทำที่เนื้อหาไฟล์จริงๆ เท่านั้น วิธีนี้จะช่วยป้องกันไม่ให้ระบบของคุณประมวลผลไฟล์เดิมซ้ำสองหากมีการเปลี่ยนชื่อไฟล์

• Smart Parsing: เลือกใช้เครื่องมือให้เหมาะสมกับงาน

  • ข้อความทั่วไป: pdf-parse (ฟรี)
  • เนื้อหาแบบผสม: Unstructured (สมดุล)
  • ตารางหรือเลย์เอาต์ที่ซับซ้อน: LlamaParse (คุณภาพสูง)
  • แบบฟอร์มระดับองค์กร: Azure Document Intelligence (ดีที่สุดสำหรับไฟล์สแกน)

• Text Cleaning: กำจัดขยะทิ้งไป หัวกระดาษ (headers), ท้ายกระดาษ (footers), ลายน้ำ (watermarks) และเลขหน้า สิ่งเหล่านี้คือสัญญาณรบกวน (noise) หากคุณทำ embedding คำว่า "Confidential" ในทุกหน้า AI ของคุณจะเข้าใจว่าทุกคำตอบคือความลับ

• Metadata Extraction: เพิ่มบริบท เช่น แผนก, ส่วนงาน หรือเวอร์ชัน สิ่งนี้จะช่วยให้ระบบของคุณค้นหาเอกสารที่ถูกต้องได้โดยไม่ต้องค้นหาจากทุกอย่าง

• Smart Chunking: นี่คือส่วนที่สำคัญที่สุด

  • ขนาด: ตั้งเป้าไว้ที่ 1,000 ถึง 1,500 tokens
  • การซ้อนทับ (Overlap): ใช้การซ้อนทับกัน 200 tokens เพื่อรักษาบริบทไว้
  • ขอบเขต: อย่าตัดประโยคกลางคัน

• Chunk Hashing and Deduplication: ทำ hashing ทุก chunk เมื่อไฟล์มีการเปลี่ยนแปลง ให้เปรียบเทียบ hash ใหม่กับ hash เดิม

• Incremental Ingestion: อย่าทำ re-embed ใหม่ทั้งหมด หากเอกสาร 1,000 หน้ามีการเปลี่ยนแปลงเพียงหน้าเดียว ให้ทำ embedding เฉพาะ chunk ใหม่หน้านั้นเท่านั้น วิธีนี้จะช่วยประหยัดค่าใช้จ่าย API ได้มหาศาล

ความแตกต่างระหว่างโปรเจกต์งานอดิเรกกับระบบที่ใช้งานจริง (production system) คือสิ่งที่คุณทำก่อนจะถึงขั้นตอนการทำ embedding

ระบบที่ไม่ได้มาตรฐานจะทำ re-embed ใหม่ทั้งหมดทุกครั้ง ส่วนระบบที่ชาญฉลาดจะประมวลผลเฉพาะสิ่งที่เปลี่ยนแปลงเท่านั้น

เลิกสร้างงานแบบลวกๆ แล้วหันมาสร้างรากฐานที่แข็งแกร่งแทน

Source: https://dev.to/surajrkhonde/phase-1-document-ingestion-the-hidden-complexity-before-embeddings-4d32

Optional learning community: https://t.me/GyaanSetuAi