Prompt and context — พรอมต์และบริบท

From Systems analysis Wiki
Jump to navigation Jump to search

Prompt และ Context (บริบท) เป็นแนวคิดพื้นฐานในการทำ prompt engineering สำหรับโมเดลภาษาขนาดใหญ่ (LLM)

บริบทเป็นองค์ประกอบที่สำคัญยิ่งของ prompt ซึ่งกำหนดความสามารถของ LLM ในการสร้างคำตอบที่แม่นยำ ตรงประเด็น และเป็นประโยชน์ การทำ prompt engineering ที่มีประสิทธิภาพนั้น โดยส่วนใหญ่คือศิลปะของการรวบรวม กรอง จัดโครงสร้าง และนำเสนอบริบทที่ถูกต้องให้แก่โมเดลในช่วงเวลาที่เหมาะสม ขณะเดียวกันก็ต้องเอาชนะข้อจำกัดของ LLM ในปัจจุบัน

Prompt - คำนิยามของพรอมต์

Prompt — คือชุดข้อมูลอินพุตทั้งหมดที่ส่งให้ LLM เพื่อสร้างคำตอบ ไม่ใช่แค่คำถามหรือคำสั่ง แต่เป็นข้อความที่มีโครงสร้างซึ่งอาจประกอบด้วย:

  • คำสั่ง (Instructions): คำชี้แนะตรงๆ ที่บอกโมเดลว่าต้องทำอะไร ในรูปแบบ สไตล์ หรือน้ำเสียงใด
  • คำขอหลัก (Query): คำถามโดยตรงของผู้ใช้ หรือคำอธิบายงานหลัก
  • บริบท (Context): ข้อมูลเพิ่มเติมที่จำเป็นสำหรับการดำเนินการตามคำขออย่างถูกต้อง
  • ตัวอย่าง (Few-shot examples): การสาธิตรูปแบบหรือสไตล์คำตอบที่ต้องการในงานที่คล้ายคลึงกัน

คุณภาพและความสมบูรณ์ของ prompt ส่งผลโดยตรงต่อความตรงประเด็น ความแม่นยำ และประโยชน์ของคำตอบจาก LLM

Context - คำนิยามของบริบท

บริบท ในกรอบของ prompt engineering คือข้อมูลใดก็ตามภายใน prompt ที่ช่วยให้โมเดลเข้าใจงาน ลักษณะเฉพาะของสถานการณ์ หรือความคาดหวังของผู้ใช้ได้ดียิ่งขึ้น แต่ไม่ใช่ส่วนหนึ่งของข้อมูลการฝึกอบรมเดิมของโมเดล บริบทให้รายละเอียดเชิงสถานการณ์ที่จำเป็นสำหรับการสร้างคำตอบที่เหมาะสม

บริบทอาจรวมถึง:

  • ประวัติการสนทนาก่อนหน้า (ในแชทบอต)
  • ข้อมูลที่ดึงมาจากแหล่งภายนอก (เอกสาร ฐานข้อมูล หน้าเว็บ) — ซึ่งเป็นพื้นฐานของ RAG
  • ข้อมูลเกี่ยวกับผู้ใช้ (โปรไฟล์ ความชอบ)
  • รายละเอียดเฉพาะของงานหรือสถานการณ์ปัจจุบัน
  • ตัวอย่างการทำงานที่คล้ายกัน (ในฐานะส่วนหนึ่งของ few-shot prompting)

สิ่งสำคัญคือต้องแยกแยะบริบทที่ให้ไว้ใน prompt ออกจากความรู้ทั่วไปที่โมเดลได้รับในระหว่างการฝึกอบรมล่วงหน้า prompt engineering มุ่งเน้นที่การให้บริบทเชิงสถานการณ์อย่างมีประสิทธิภาพ

ความสัมพันธ์และอิทธิพล

Prompt และบริบท เป็นแนวคิดพื้นฐานในการทำงานของ transformer ซึ่งกำหนดว่าโมเดลรับรู้ข้อมูลอินพุตอย่างไร และอะไรเป็นพื้นฐานในการสร้างผลลัพธ์ ในเชิงสถาปัตยกรรม transformer ไม่ได้แยกแยะ "prompt" และ "บริบท" โดยเฉพาะ — ทั้งสองเป็นส่วนหนึ่งของลำดับ token อินพุตที่ถูกแปลงเป็น embedding เสริมด้วยข้อมูลตำแหน่ง และถูกประมวลผลร่วมกันโดยเลเยอร์ self-attention

Prompt และบริบทมีความเชื่อมโยงกันอย่างแยกไม่ออก: บริบทเป็นส่วนประกอบหนึ่งของ prompt

  • บริบทกำหนดรูปร่าง prompt: วิศวกรคัดสรรและจัดโครงสร้างบริบทที่เกี่ยวข้องเพื่อรวมไว้ใน prompt
  • บริบทชี้นำโมเดล: ข้อมูลที่ให้ไว้ช่วยให้ LLM จำกัดพื้นที่คำตอบที่เป็นไปได้ มุ่งเน้นด้านที่เกี่ยวข้อง และหลีกเลี่ยง hallucination
  • คุณภาพบริบทกำหนดคุณภาพคำตอบ: บริบทที่ไม่เพียงพอ ไม่เกี่ยวข้อง หรือขัดแย้งกัน นำไปสู่คำตอบที่ไม่แม่นยำ ทั่วไป หรือผิดพลาด บริบทที่แม่นยำและสมบูรณ์จะเพิ่มความจำเพาะและประโยชน์ของการสร้างข้อความ
  • อิทธิพลต่อการตีความคำสั่ง: บริบทสามารถชี้แจงหรือเปลี่ยนแปลงการตีความคำสั่งทั่วไปใน prompt ได้

ประสิทธิภาพของ prompt ส่วนใหญ่ขึ้นอยู่กับว่าวิศวกรสามารถรวบรวม กรอง และนำเสนอบริบทที่เกี่ยวข้องให้กับโมเดลได้ดีเพียงใด

ประเภทของบริบท

บริบทสามารถจำแนกได้ตามเกณฑ์ต่างๆ:

จำแนกตามแหล่งที่มา:

  • บริบทจากผู้ใช้: ข้อมูลที่ผู้ใช้ป้อนเข้ามาโดยตรง คำถาม หรือคำอธิบายงาน
  • จากประวัติการสนทนา: ข้อความก่อนหน้าของผู้ใช้และผู้ช่วย (หน่วยความจำระยะสั้น)
  • ที่ดึงมา (Retrieved): ข้อมูลจากแหล่งภายนอก (เอกสาร ฐานข้อมูล เว็บ) โดยใช้ RAG
  • จากโปรไฟล์/ฐานความรู้: ข้อมูลระยะยาวเกี่ยวกับผู้ใช้หรือโดเมน
  • แบบคงที่/เชิงคำสั่ง: ข้อมูลที่วิศวกรฝังไว้ในเทมเพลต prompt (คำสั่ง ตัวอย่าง การกำหนดบทบาท)

จำแนกตามความเปลี่ยนแปลง:

  • บริบทคงที่: ส่วนที่ไม่เปลี่ยนแปลงของ prompt (คำสั่ง นิยาม ตัวอย่าง) กำหนดงานโดยรวม
  • บริบทไดนามิก: ข้อมูลที่เปลี่ยนแปลงในแต่ละคำขอ (ข้อมูลผู้ใช้ ผลลัพธ์ RAG เวลาปัจจุบัน) ให้รายละเอียดเฉพาะ

จำแนกตามระยะเวลาการจัดเก็บ (หน่วยความจำ):

  • บริบทระยะสั้น: ประวัติเซสชันการสนทนาปัจจุบัน
  • บริบทระยะยาว: ข้อมูลที่บันทึกเกี่ยวกับผู้ใช้หรือการโต้ตอบก่อนหน้า ซึ่งต้องการกลไกการจัดเก็บและดึงข้อมูล

การจัดการบริบท

การจัดการบริบทอย่างมีประสิทธิภาพเป็นงานสำคัญของ prompt engineering โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงข้อจำกัดของ context window ใน LLM วิธีการหลักได้แก่:

  • RAG: วิธีที่แพร่หลายที่สุดสำหรับการทำงานกับข้อมูลจำนวนมาก ช่วยให้ค้นหาและรวมเฉพาะส่วนที่เกี่ยวข้องมากที่สุดจากฐานความรู้ขนาดใหญ่เข้าสู่ prompt ได้แบบไดนามิก ต้องมีฐานข้อมูลเวกเตอร์และกลไกการค้นหาที่มีประสิทธิภาพ (แบบ lexical หรือ semantic)
  • Chunking (การแบ่งส่วน): การแบ่งเอกสารขนาดใหญ่ออกเป็นส่วนที่เชื่อมโยงกันเชิงความหมายหรือขนาดคงที่ เพื่อทำดัชนีและดึงข้อมูลผ่าน RAG ในภายหลัง
  • การสรุป (Summarization): การบีบอัดประวัติการสนทนาที่ยาวหรือเอกสารขนาดใหญ่เพื่อถ่ายทอดความหมายหลักภายใน context window ที่จำกัด
  • การจัดการหน่วยความจำ (Memory Management): การใช้กลยุทธ์ต่างๆ เพื่อจัดเก็บและดึงประวัติการสนทนาในแชทบอตและ agent (เช่น ConversationBufferMemory, ConversationSummaryBufferMemory ใน LangChain)
  • Sliding Window (หน้าต่างเลื่อน): การเก็บเฉพาะข้อความ N รายการล่าสุดของการสนทนาไว้ในบริบท
  • การกรองและจัดลำดับความสำคัญ: การคัดสรรส่วนบริบทที่เกี่ยวข้องมากที่สุดตามความสำคัญ (เช่น โดยใช้คะแนนความเกี่ยวข้องที่ได้จากการค้นหา) ก่อนการประกอบ prompt ขั้นสุดท้าย

บทบาทของบริบทใน Prompt Engineering

  • การเพิ่มความตรงประเด็น: บริบทช่วยให้โมเดลสร้างคำตอบที่ตรงกับคำขอและสถานการณ์ของผู้ใช้อย่างแม่นยำ
  • การลด Hallucination: การให้ข้อมูลเชิงข้อเท็จจริง (ผ่าน RAG) บังคับให้โมเดลอ้างอิงข้อมูลนั้น แทนที่จะสร้างข้อเท็จจริงขึ้นมาเอง
  • การปรับแต่งเฉพาะบุคคล: บริบทเกี่ยวกับผู้ใช้ (ความชอบ ประวัติ) ช่วยให้ปรับแต่งคำตอบได้
  • การจัดการสถานะ: ในการสนทนาและกระบวนการหลายขั้นตอน บริบท (ประวัติ) ช่วยให้มีความต่อเนื่องและให้โมเดลรับรู้ขั้นตอนก่อนหน้า
  • การเอาชนะข้อจำกัดของความรู้โมเดล: RAG ช่วยให้โมเดลตอบคำถามเกี่ยวกับเหตุการณ์ที่เกิดขึ้นหลังจากการฝึกอบรม หรือเกี่ยวกับข้อมูลเฉพาะ/ข้อมูลส่วนตัวได้

ข้อจำกัด

  • ขีดจำกัดของ Context Window: แม้ว่าโมเดลปัจจุบันจะขยายขึ้นถึง 1-2 ล้าน token แต่การประมวลผลในปริมาณดังกล่าวอาจมีค่าใช้จ่ายสูงและช้า ต้องการกลยุทธ์การบีบอัดและคัดสรรที่มีประสิทธิภาพ (RAG, การสรุป)
  • การค้นหาบริบทที่เกี่ยวข้อง: ประสิทธิภาพของ RAG ขึ้นอยู่กับคุณภาพของการค้นหา บริบทที่ดึงมาไม่ถูกต้องอาจทำให้โมเดลสับสน ("ขยะเข้า ขยะออก")
  • "ช่องว่างแห่งความเฉยเมย" (Valley of Meh): ข้อมูลที่อยู่กลาง prompt ที่ยาวมากอาจถูกโมเดลเพิกเฉย ต้องการการจัดโครงสร้าง prompt (เช่น เทคนิค "แซนด์วิช")
  • ความเสี่ยงของ Context Injection: หากบริบทถูกดึงมาจากแหล่งที่ไม่น่าเชื่อถือ (เช่น หน้าเว็บ) อาจมีคำสั่งที่เป็นอันตราย (prompt injection)

เอกสารอ้างอิง

  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
  • Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
  • Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
  • Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.

ดูเพิ่มเติม

  • โมเดลภาษาขนาดใหญ่
  • Context Window
  • ฐานข้อมูลเวกเตอร์
  • LangChain