ทำไม AI บางครั้ง “จำได้แต่ไม่เข้าใจความสัมพันธ์”: มุมมองสำหรับนักพัฒนา
เจาะลึกข้อจำกัดของ Large Language Models ในการทำ Relational Reasoning ทำไมโมเดลที่จำได้ทุกบรรทัดกลับเชื่อมโยงตรรกะไม่ได้ พร้อมแนวทางแก้ปัญหาด้วย GraphRAG และ Agentic Workflows
สารบัญ

เคยเผชิญสถานการณ์แบบนี้ไหม คุณให้ AI อ่านเอกสาร API ของระบบ A และระบบ B จนจบ มันสามารถระบุรายละเอียดของแต่ละ Endpoint ได้อย่างถูกต้องทุกประการ แต่เมื่อให้มันเขียนโค้ดเพื่อเชื่อมต่อระบบทั้งสองเข้าด้วยกัน ผลลัพธ์ที่ได้กลับส่งพารามิเตอร์ผิด หรือเข้าใจลำดับการเรียกฟังก์ชันแบบสลับกันอย่างไม่น่าเชื่อ
นี่คือปรากฏการณ์ที่นักพัฒนาจำนวนมากเริ่มพบเจอเมื่อทำงานกับ Large Language Models (LLMs) อย่าง GPT-4 หรือ Claude ในระดับลึก AI เหล่านี้มีความสามารถในการ “จำ” (Memorization) ที่ยอดเยี่ยม แต่กลับมีจุดอ่อนในการ “เข้าใจความสัมพันธ์” (Relational Reasoning) บทความนี้จะเจาะลึกถึงสาเหตุทางสถาปัตยกรรมของปัญหานี้ และแนะนำวิธีการออกแบบระบบเพื่อแก้ไขข้อจำกัดดังกล่าว
โครงสร้างพื้นฐานของ LLM: การทำนายคำ vs การทำความเข้าใจ
เพื่อเข้าใจว่าทำไม AI ถึงจำได้แต่ไม่เข้าใจความสัมพันธ์ เราต้องมองลงไปที่กลไกการทำงานหลักของ LLM นั่นคือการทำนายโทเคนถัดไป (Next-token prediction)
โมเดลภาษาไม่ได้ทำงานเหมือนฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ที่มีการกำหนด Foreign Key หรือเงื่อนไขการเชื่อมโยงตารางอย่างชัดเจน แต่มันทำงานบนพื้นฐานของความน่าจะเป็นทางสถิติ ว่าจากคำหรือประโยคที่ผ่านมา คำถัดไปที่มีโอกาสเกิดขึ้นสูงสุดคืออะไร
ความสามารถนี้ทำให้ AI ดูเหมือนเข้าใจภาษามนุษย์และสามารถระลึกถึงข้อเท็จจริง (Facts) ได้จากชุดข้อมูลฝึกอบรมที่มหาศาล อย่างไรก็ตาม การจดจำข้อเท็จจริงแบบกระจัดกระจาย ไม่ได้แปลว่าโมเดลสามารถสร้างกราฟความสัมพันธ์ (Knowledge Graph) ในหัวของมันเองได้โดยอัตโนมัติ
ปัญหา Relational Reasoning ในโลกการพัฒนาซอฟต์แวร์
Relational Reasoning คือความสามารถในการเชื่อมโยงเหตุและผล หรือการทำความเข้าใจว่าองค์ประกอบหนึ่งส่งผลกระทบต่อองค์ประกอบอื่นอย่างไร ในงานพัฒนาซอฟต์แวร์ ปัญหานี้ส่งผลกระทบโดยตรงในหลายสถานการณ์
1. การออกแบบ Database Schema
สมมติคุณกำลังออกแบบฐานข้อมูลระบบ E-commerce คุณมีตาราง Users, Orders, และ Products AI สามารถสร้างคำสั่ง SQL สำหรับสร้างตารางเหล่านี้พร้อม Primary Key และ Foreign Key ได้ถูกต้อง แต่เมื่อคุณเพิ่มกฎทางธุราจารย์ (Business Logic) ว่า “หาก Order ถูกคืนของ ยอด Loyalty Points ของ User ต้องหักออกตามสัดส่วน”
AI อาจจะจำได้ว่ามีตาราง Orders และ Users แต่มันอาจไม่เข้าใจความสัมพันธ์เชิงลึกว่าการเปลี่ยนแปลงสถานะใน Orders ต้องไปกระตุ้น Trigger หรือ Event ที่ไปอัปเดตตาราง Users หากคุณไม่ได้ระบุขั้นตอนนี้อย่างชัดเจนใน Prompt
2. สถาปัตยกรรม Microservices
ในระบบ Microservices การไหลของข้อมูล (Data Flow) คือหัวใจสำคัญ การที่ Service A ต้องส่ง Event ไปยัง Message Queue เพื่อให้ Service B และ Service C ทำงานต่อ เป็นเรื่องของความสัมพันธ์เชิงเหตุผลและการพึ่งพา (Dependencies)
เมื่อนำ AI มาวิเคราะห์ Codebase ที่ซับซ้อน มันมักจะมองเห็นแค่ Function หรือ Module แยกส่วน แต่ล้มเหลวในการวาดภาพรวมว่าหากแก้ไขบรรทัดใดบรรทัดหนึ่งใน Service A จะส่งผลกระทบลูกโซ่ไปถึง Service C อย่างไร นี่เป็นเพราะ Attention Mechanism ใน Transformer มักจะให้น้ำหนักกับคำที่อยู่ใกล้เคียง (Local Context) มากกว่าการวิเคราะห์ความสัมพันธ์ที่อยู่ห่างไกลกันในเอกสาร
ข้อจำกัดของ Context Window และ Context Dilution
ด้วยการแข่งขันด้านขนาด Context Window ที่เพิ่มขึ้นเป็น 128k หรือ 200k tokens ทำให้นักพัฒนาหลายคนเชื่อว่าการโยนเอกสารทั้งโครงการเข้าไปใน Prompt จะช่วยให้ AI เข้าใจระบบได้ทั้งหมด แต่ในความเป็นจริง ขนาดที่ใหญ่ขึ้นไม่ได้แปลว่าความเข้าใจเชิงความสัมพันธ์จะดีขึ้นตามไปด้วย
ปรากฏการณ์ที่เรียกว่า “Lost in the Middle” ทำให้โมเดลภาษามักจะให้ความสนใจกับข้อมูลที่อยู่ต้นและท้ายของ Context Window มากกว่าส่วนกลาง ยิ่ง Context ยาวเท่าไหร่ สัญญาณรบกวน (Noise) ก็ยิ่งมากขึ้น ทำให้ความสามารถในการเชื่อมโยงข้อมูลจุด A และจุด B ที่อยู่ห่างกันในเอกสารลดลงอย่างมีนัยสำคัญ
วิธีทำให้ AI “เข้าใจ” ความสัมพันธ์มากขึ้น
ในฐานะนักพัฒนา เราไม่สามารถรอให้สถาปัตยกรรม AI พัฒนาจนเกิดการ Reasoning ได้เองทั้งหมด แต่เราต้องออกแบบระบบ (System Design) เพื่อบังคับให้ AI ทำงานตามความสัมพันธ์ที่เราต้องการ ดังนี้
1. การใช้ Knowledge Graph ร่วมกับ LLM (GraphRAG)
วิธีการแบบดั้งเดิมอย่าง RAG (Retrieval-Augmented Generation) มักใช้ Vector Database ในการค้นหาข้อความที่มีความหมายใกล้เคียง (Semantic Search) แต่วิธีนี้ไม่ได้เก็บข้อมูลความสัมพันธ์ระหว่าง Entities
การใช้ GraphRAG คือการดึงข้อมูลจาก Knowledge Graph ซึ่งเก็บข้อมูลในรูปแบบ Nodes (โหนด) และ Edges (เส้นเชื่อม) ตัวอย่างเช่น แทนที่จะเก็บข้อความว่า “ผู้ใช้ A ซื้อสินค้า B” คุณอาจเก็บเป็นโครงสร้างกราฟที่ชัดเจน:
{
"node": "User_A",
"edge": "PURCHASED",
"target": "Product_B",
"metadata": { "status": "refunded" }
}
เมื่อนำข้อมูลที่มีโครงสร้างความสัมพันธ์นี้ไปใส่ใน Prompt จะช่วยให้ AI สามารถตอบคำถามที่ต้องอาศัยการเชื่อมโยงหลายขั้นตอน (Multi-hop reasoning) ได้แม่นยำขึ้นมาก
2. Chain of Thought (CoT) และ Tree of Thoughts (ToT)
การบังคับให้ AI คิดทีละขั้นตอนสามารถช่วยปรับปรุงความสามารถในการ Reasoning ได้ แทนที่จะให้ AI ตอบคำถามหรือเขียนโค้ดทันที ให้สั่งให้มันวิเคราะห์ความสัมพันธ์ก่อน
ตัวอย่าง Prompt:
“ก่อนที่จะเขียนโค้ด โปรดวิเคราะห์ Dependencies ระหว่าง Module A และ Module B จากนั้นระบุผลกระทบ (Impact Analysis) ที่จะเกิดขึ้นหากแก้ไขฟังก์ชัน X แล้วจึงเขียนโค้ดในส่วนสุดท้าย”
วิธีการนี้บังคับให้โมเดลต้องสร้างสถานะกลาง (Intermediate states) ที่แสดงถึงความเข้าใจความสัมพันธ์ก่อนที่จะไปถึงขั้นตอนการสร้างผลลัพธ์สุดท้าย
3. การแบ่งหน้าที่ของ AI (Agentic Workflows)
แทนที่จะใช้ LLM ตัวเดียวพยายามเข้าใจระบบทั้งหมด การออกแบบ Agentic Workflows โดยการแบ่งหน้าที่ให้ AI หลายตัวทำงานร่วมกันจะช่วยแก้ปัญหานี้ได้
- Agent 1 (Planner): ทำหน้าที่วิเคราะห์ความต้องการและสร้าง Dependency Graph ของงาน
- Agent 2 (Coder): รับผิดชอบเขียนโค้ดเฉพาะส่วนตามที่ Planner กำหนด
- Agent 3 (Reviewer): ตรวจสอบว่าโค้ดที่เขียนมานั้นสอดคล้องกับความสัมพันธ์และ Flow ของระบบหรือไม่
การแบ่งหน้าที่เช่นนี้ ช่วยลดภาระของ Context Window ในแต่ละขั้นตอน และบังคับให้ระบบทำงานตามกรอบความสัมพันธ์ที่ถูกกำหนดไว้
บทสรุป
ความล้มเหลวในการเข้าใจความสัมพันธ์ของ AI ไม่ใช่ข้อบกพร่องชั่วคราว แต่เป็นข้อจำกัดโดยธรรมชาติของสถาปัตยกรรม Next-token prediction ที่ไม่ได้ถูกออกแบบมาให้ทำงานเหมือน Relational Database หรือ State Machine
ในฐานะนักพัฒนา การเข้าใจข้อจำกัดนี้คือกุญแจสำคัญในการนำ AI ไปใช้งานในระบบ Production ได้อย่างมีประสิทธิภาพ แทนที่จะโยนข้อมูลทั้งหมดให้ AI แล้วหวังผลลัพธ์ที่ดีที่สุด การควบคุมด้วย GraphRAG, Chain of Thought และ Agentic Workflows จะช่วยเชื่อมช่องว่างระหว่างการ “จำ” และการ “เข้าใจ” ได้อย่างเป็นรูปธรรม
คุณเคยเจอปัญหา AI ไม่เข้าใจความสัมพันธ์ในโปรเจกต์ของคุณบ้างหรือไม่ ลองนำเทคนิค GraphRAG หรือการแบ่ง Agent ไปปรับใช้ในงานพัฒนาครั้งต่อไป แล้วแบ่งปันผลลัพธ์หรือแนวทางการแก้ปัญหาของคุณกับชุมชนนักพัฒนาได้ในส่วนคอมเมนต์
เนื้อหาที่จัดทำโดยมี AI ช่วยจะมีป้ายกำกับ "เรียบเรียงโดยมี AI ช่วย" เพื่อให้คุณทราบอย่างชัดเจน เราถือว่าความโปร่งใสเรื่องการใช้ AI เป็นสิ่งสำคัญต่อความไว้วางใจของผู้อ่าน
ความคิดเห็น (0)
ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!