🧩 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
📢 แชร์บทความนี้ให้เพื่อนอ่านสิ!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *