Chunking, Embeddings & Vector Stores
ส่วนที่ตัดสินคุณภาพของ RAG — แบ่งเอกสารอย่างไร, เลือก embedding และ vector DB ตัวไหน
| Chunking strategy | ทำงานอย่างไร | เหมาะกับ |
|---|---|---|
Default | ตัดประมาณ ~300 tokens โดยเคารพขอบประโยค | เริ่มต้นทั่วไป |
Fixed-size | กำหนดจำนวน token + % overlap เอง | เอกสารรูปแบบสม่ำเสมอ |
Hierarchical | chunk ลูกเล็กสำหรับค้นหา + chunk แม่ใหญ่ส่งให้ FM | เอกสารยาวที่ต้องการทั้งความแม่นและบริบท (คู่มือ, กฎหมาย) |
Semantic | แบ่งตามความหมายด้วย embedding similarity | เนื้อหาที่หัวข้อเปลี่ยนไม่สม่ำเสมอ |
No chunking | 1 ไฟล์ = 1 chunk | ไฟล์สั้นหรือ pre-chunk มาแล้ว |
Custom (Lambda) | เขียน logic เองผ่าน Lambda transformation | รูปแบบเฉพาะ เช่น ตัดตาม heading/ตาราง |
Embeddings
Embedding แปลงข้อความเป็น vector ตัวเลขที่ "ความหมายใกล้กัน = vector ใกล้กัน"
- Amazon Titan Text Embeddings V2 — เลือกมิติได้ 256 / 512 / 1024 (มิติน้อย = เก็บถูก ค้นเร็ว, มิติมาก = แม่นกว่า) รองรับหลายภาษา
- Cohere Embed — multilingual แข็งแรง
- Multimodal embeddings (เช่น Titan Multimodal / Nova) — ค้นหารูปด้วยข้อความ
⚠️ ถ้าเปลี่ยน embedding model ต้อง re-embed เอกสารทั้งหมด เพราะ vector จากคนละโมเดลเทียบกันไม่ได้
| Vector store | จุดเด่น | เลือกเมื่อโจทย์บอกว่า |
|---|---|---|
OpenSearch Serverless | ค่า default ของ KB, hybrid search (keyword + vector) | ต้องการ managed, hybrid search, scale อัตโนมัติ |
OpenSearch Service (managed cluster) | ปรับ shard/replica/index ได้ละเอียด | ต้อง tune performance ระดับลึก, multi-index |
Aurora PostgreSQL + pgvector | รวม vector กับข้อมูล relational เดิม, SQL | มี PostgreSQL อยู่แล้ว / ต้อง join กับตารางธุรกิจ |
Neptune Analytics | GraphRAG — ความสัมพันธ์ระหว่าง entity | คำถามที่ต้องเชื่อมโยงหลาย hop |
Amazon S3 Vectors | เก็บ vector จำนวนมหาศาลต้นทุนต่ำ | ข้อมูลใหญ่มาก query ไม่ถี่ เน้นประหยัด |
MemoryDB / ElastiCache (vector search) | latency ระดับ ms ใน memory | semantic cache / real-time มาก |
Pinecone / MongoDB Atlas / Redis | third-party ที่ KB รองรับ | องค์กรใช้อยู่แล้ว |
Hybrid ช่วยเมื่อมีรหัสสินค้า/ชื่อเฉพาะที่ vector search จับไม่ได้ ส่วน reranker ช่วยเรียงผลให้ตรงขึ้น
ระบบ RAG ค้นหา 'error code E-4471' แล้วได้เอกสารที่พูดถึง error ทั่วไปแทนเอกสารที่มีรหัสนี้ตรงๆ ควรแก้อย่างไร?
การดึงความรู้ออกมาใช้ทันทีหลังอ่าน (retrieval practice) ช่วยให้จำได้นานขึ้นมาก