Tag: AI Document Processing

  • 🧩 Text Splitters คืออะไร?

    🧩 Text Splitters คืออะไร?

    Text Splitter คือเทคนิคในการ “หั่น” ข้อความขนาดใหญ่จากเอกสาร เช่น .txt, .pdf, หรือเอกสารรายงานต่าง ๆ ให้กลายเป็น ชิ้นส่วนย่อย ๆ (Chunks) ที่มีขนาดเล็กลง

    📌 ทำไมต้องแบ่ง?

    1. AI ไม่สามารถอ่านเอกสารยาวๆ ได้ในครั้งเดียว
      เช่น ถ้าเรามีรายงาน 50 หน้า โมเดล LLM (เช่น GPT) ไม่สามารถอ่านได้ครบ จึงต้องหั่นเป็นส่วนๆ ก่อน
    2. เพื่อให้เข้าใจบริบทได้ดีขึ้น
      การมี Chunk ที่มีขนาดเหมาะสมช่วยให้ AI เข้าใจคำถามกับเนื้อหาที่เกี่ยวข้องในระดับดีขึ้น
    3. เตรียมสำหรับการแปลงเป็นเวกเตอร์ (Vectorization)
      ซึ่งจะใช้ในกระบวนการ RAG (Retrieval-Augmented Generation) ต่อไป

    🛠️ องค์ประกอบสำคัญของ Text Splitter

    เมื่อแบ่งข้อความ เราจะต้องกำหนด 2 ค่า:

    พารามิเตอร์ความหมายตัวอย่าง
    chunk_sizeขนาดของแต่ละชิ้น (จำนวนตัวอักษร)เช่น 100 ตัวอักษรต่อ 1 chunk
    chunk_overlapจำนวนตัวอักษรที่ซ้ำกันระหว่างชิ้นก่อนหน้าและชิ้นถัดไปเช่น 50 ตัวอักษร

    📍 การซ้อนทับ (Overlap) จะช่วย “รักษาบริบท” เช่น หากบรรทัดหนึ่งขาดไปบางคำ การมีบางคำซ้ำมาจาก chunk ก่อนหน้า จะช่วยให้โมเดลเข้าใจต่อเนื่องได้ดีขึ้น


    ⚙️ ขั้นตอนการใช้งาน Text Splitter ใน Python + LangChain

    1. Import Library ที่ใช้

    from langchain.text_splitter import RecursiveCharacterTextSplitter
    

    2. สร้าง Text Splitter

    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=100,       # ขนาดชิ้นละ 100 ตัวอักษร
        chunk_overlap=0       # ไม่มีการซ้อนทับ
    )
    

    ✅ ถ้าอยากให้ “มีการซ้อนทับ” ก็เปลี่ยน chunk_overlap=50 (หรือค่าที่ต้องการ)


    3. ใช้ Text Splitter กับข้อมูลเอกสารที่โหลดไว้แล้ว

    สมมุติว่าเรามีเอกสารชื่อ data.txt ซึ่งถูกโหลดไว้ในตัวแปร documents แล้ว:

    chunks = text_splitter.split_documents(documents)
    

    หลังจากรันคำสั่งนี้ เราจะได้ chunks เป็น list ของข้อความย่อยๆ ที่ถูกแบ่งจากเอกสารต้นฉบับ


    4. ดูผลลัพธ์ที่ได้

    for i, chunk in enumerate(chunks):
        print(f"Chunk {i+1}:")
        print(chunk.page_content)
        print("---------------------")
    

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

    Chunk 1:
    ชื่อบริษัท: ABC
    ประเภทธุรกิจ: ของเล่นและหนังสือการ์ตูน
    ผู้ก่อตั้ง: หมี
    ---------------------
    Chunk 2:
    ผู้ก่อตั้ง: หมี
    ปีที่ก่อตั้ง: 2566
    ---------------------
    Chunk 3:
    บริการ: จำหน่ายของเล่น, หนังสือการ์ตูน
    ---------------------
    ...
    

    🟡 ถ้าเราตั้ง chunk_overlap=50 จะเห็นว่าเนื้อหาบางส่วน “ซ้ำ” ใน chunk ถัดไป — เพื่อให้ AI เข้าใจบริบทได้ดีขึ้น


    🧠 เคล็ดลับสำหรับคนเริ่มต้น

    • ถ้าไฟล์คุณมีข้อมูลแค่ 1-2 หน้า อาจยังไม่จำเป็นต้องแบ่ง
    • ถ้าเอกสารยาวเกิน 500 ตัวอักษรขึ้นไป แนะนำให้ใช้ Text Splitter
    • chunk_size ที่ดีมักอยู่ระหว่าง 300-1000 ตัวอักษร ขึ้นกับความซับซ้อนของเนื้อหา
    • ควรทดลองปรับ chunk_overlap เอง (เช่น 0, 20, 50) แล้วดูผลลัพธ์

    🧭 สรุปขั้นตอน Workflow โดยย่อ

    ขั้นตอนคำอธิบาย
    1. โหลดไฟล์ใช้ TextLoader โหลดไฟล์ data.txt
    2. สร้าง Text Splitterตั้งค่า chunk_size และ chunk_overlap
    3. แบ่งเอกสารใช้ split_documents() กับเอกสารที่โหลดมา
    4. ตรวจสอบผลลัพธ์ปริ้นออกมาดูว่าแบ่งได้กี่ chunk แต่ละ chunk มีข้อมูลอะไรบ้าง
    5. เตรียมไปใช้ในขั้นตอนต่อไปเช่น แปลงเป็นเวกเตอร์ → เก็บในฐานข้อมูล → ใช้กับ AI
    📢 แชร์บทความนี้ให้เพื่อนอ่านสิ!