เมื่อพูดถึงประโยชน์เฉพาะตัวของการสร้างเอเจนต์ AI มีสองสิ่งที่ถูกพูดถึงหลักๆ คือความสามารถในการเรียกใช้เครื่องมือเพื่อทำงานให้เสร็จ และความสามารถในการพัฒนาตัวเองได้ตลอดเวลา ความทรงจำจึงเป็นรากฐานของการสร้างเอเจนต์ที่ปรับปรุงตัวเองได้ซึ่งสามารถสร้างประสบการณ์ที่ดีกว่าสำหรับผู้ใช้ของเรา
ในบทเรียนนี้ เราจะมาดูว่า ความทรงจำสำหรับเอเจนต์ AI คืออะไร และเราจะจัดการและใช้มันเพื่อประโยชน์ของแอปพลิเคชันของเราได้อย่างไร
บทเรียนนี้จะครอบคลุม:
• การเข้าใจความทรงจำของเอเจนต์ AI: ความทรงจำคืออะไรและทำไมจึงสำคัญสำหรับเอเจนต์
• การใช้งานและจัดเก็บความทรงจำ: วิธีปฏิบัติสำหรับการเพิ่มความสามารถในการจดจำให้กับเอเจนต์ AI ของคุณ โดยเน้นที่ความทรงจำระยะสั้นและระยะยาว
• ทำให้เอเจนต์ AI ปรับปรุงตัวเองได้: วิธีที่ความทรงจำช่วยให้เอเจนต์เรียนรู้จากการโต้ตอบที่ผ่านมาและพัฒนาขึ้นเมื่อเวลาผ่านไป
บทเรียนนี้รวมถึงโน้ตบุ๊กสองฉบับที่ครอบคลุม:
• 13-agent-memory.ipynb: ใช้งานความทรงจำโดยใช้ Mem0 และ Azure AI Search ร่วมกับ Microsoft Agent Framework
• 13-agent-memory-cognee.ipynb: ใช้งานความทรงจำเชิงโครงสร้างโดยใช้ Cognee สร้าง Knowledge Graph อัตโนมัติซึ่งรองรับโดย embeddings พร้อมทั้งแสดงภาพกราฟและการดึงข้อมูลอย่างชาญฉลาด
หลังจากจบบทเรียนนี้ คุณจะสามารถ:
• แยกแยะประเภทต่างๆ ของความทรงจำเอเจนต์ AI รวมทั้งความทรงจำทำงาน (working memory), ความทรงจำระยะสั้น และความทรงจำระยะยาว รวมถึงรูปแบบพิเศษเช่นความทรงจำแบบ persona และ episodic memory
• ใช้งานและจัดการความทรงจำระยะสั้นและระยะยาวสำหรับเอเจนต์ AI โดยใช้ Microsoft Agent Framework พร้อมใช้งานเครื่องมือต่างๆ เช่น Mem0, Cognee, Whiteboard memory และการผสานกับ Azure AI Search
• เข้าใจหลักการเบื้องหลังเอเจนต์ AI ที่ปรับปรุงตัวเองได้ และวิธีที่ระบบจัดการความทรงจำที่แข็งแกร่งช่วยสนับสนุนการเรียนรู้และการปรับตัวอย่างต่อเนื่อง
โดยพื้นฐานแล้ว ความทรงจำสำหรับเอเจนต์ AI หมายถึงกลไกที่ช่วยให้พวกเขาสามารถเก็บรักษาและเรียกคืนข้อมูล ข้อมูลนี้อาจเป็นรายละเอียดเฉพาะเกี่ยวกับการสนทนา ความชอบของผู้ใช้ การกระทำที่ผ่านมา หรือแม้แต่รูปแบบที่เรียนรู้มา
หากไม่มีความทรงจำ แอปพลิเคชัน AI มักจะไม่มีสถานะ (stateless) หมายความว่าการโต้ตอบแต่ละครั้งเริ่มต้นจากศูนย์ ซึ่งนำไปสู่ประสบการณ์ผู้ใช้ที่ซ้ำซากและน่าหงุดหงิดที่เอเจนต์ “ลืม” บริบทหรือความชอบก่อนหน้า
ความเฉลียวฉลาดของเอเจนต์เชื่อมโยงอย่างลึกซึ้งกับความสามารถในการเรียกคืนและใช้งานข้อมูลที่ผ่านมา ความทรงจำช่วยให้เอเจนต์เป็น:
• มีการสะท้อน: เรียนรู้จากการกระทำและผลลัพธ์ที่ผ่านมา
• มีปฏิสัมพันธ์: รักษาบริบทของการสนทนาที่กำลังดำเนินอยู่
• ล่วงหน้าและตอบสนอง: คาดการณ์ความต้องการหรือตอบสนองอย่างเหมาะสมโดยอิงข้อมูลในอดีต
• อิสระ: ทำงานได้อย่างเป็นอิสระมากขึ้นโดยอาศัยความรู้ที่เก็บไว้
เป้าหมายของการใช้งานความทรงจำคือการทำให้เอเจนต์มีความ น่าเชื่อถือและมีความสามารถมากขึ้น
ให้คิดว่าเป็นกระดาษร่างที่เอเจนต์ใช้ในระหว่างงานหรือกระบวนการคิดที่กำลังดำเนินอยู่เพียงงานเดียว มันเก็บข้อมูลทันทีที่จำเป็นสำหรับการคำนวณขั้นต่อไป
สำหรับเอเจนต์ AI, working memory มักจะจับข้อมูลที่เกี่ยวข้องที่สุดจากการสนทนา แม้ว่าประวัติแชททั้งหมดจะยาวหรือถูกตัดทอน มันเน้นการดึงข้อมูลสำคัญเช่นความต้องการ ข้อเสนอ การตัดสินใจ และการกระทำ
ตัวอย่าง Working Memory
ในเอเจนต์จองการเดินทาง, working memory อาจจับคำขอปัจจุบันของผู้ใช้ เช่น “ฉันต้องการจองทริปไปปารีส” ข้อกำหนดเฉพาะนี้จะถูกเก็บไว้ในบริบททันทีของเอเจนต์เพื่อชี้นำการโต้ตอบในปัจจุบัน
ความทรงจำชนิดนี้เก็บข้อมูลไว้ในช่วงระยะเวลาของการสนทนาหรือเซสชันเดียว มันคือบริบทของแชทปัจจุบัน ช่วยให้เอเจนต์สามารถอ้างอิงถึงรอบก่อนหน้าในบทสนทนาได้
ในตัวอย่าง SDK Python ของ Microsoft Agent Framework จะสอดคล้องกับ AgentSession ซึ่งสร้างโดย agent.create_session() เซสชันนี้คือความทรงจำระยะสั้นแบบ built-in ของเฟรมเวิร์ก: มันเก็บบริบทการสนทนาไว้ในขณะที่เซสชันนั้นถูกใช้ซ้ำ แต่บริบทนี้จะไม่ถูกเก็บไว้เมื่อเซสชันสิ้นสุดหรือแอปพลิเคชันรีสตาร์ท ใช้ความทรงจำระยะยาวสำหรับข้อเท็จจริงและความชอบที่ต้องคงอยู่ข้ามเซสชัน โดยปกติผ่านฐานข้อมูล ดรรชนีเวกเตอร์ หรือที่จัดเก็บถาวรอื่นๆ
ตัวอย่าง Short Term Memory
ถ้าผู้ใช้ถามว่า “เที่ยวบินไปปารีสราคาเท่าไหร่?” และตามด้วย “ที่พักที่นั่นล่ะ?” ความทรงจำระยะสั้นจะช่วยให้เอเจนต์รู้ว่า “ที่นั่น” หมายถึง “ปารีส” ภายในบทสนทนาเดียวกัน
คือข้อมูลที่คงอยู่ในหลายบทสนทนาหรือหลายเซสชัน มันช่วยให้เอเจนต์จำความชอบของผู้ใช้ การโต้ตอบในอดีต หรือความรู้ทั่วไปในช่วงเวลานาน ซึ่งสำคัญสำหรับการทำให้มีความเป็นส่วนตัว
ตัวอย่าง Long Term Memory
ความทรงจำระยะยาวอาจเก็บข้อมูลว่า “เบ็นชอบเล่นสกีและกิจกรรมกลางแจ้ง, ชอบดื่มกาแฟพร้อมวิวภูเขา และต้องการหลีกเลี่ยงทางสกีขั้นสูงเนื่องจากเคยได้รับบาดเจ็บ” ข้อมูลนี้ซึ่งเรียนรู้จากการโต้ตอบที่ผ่านมา จะมีผลต่อคำแนะนำในเซสชันวางแผนการเดินทางในอนาคต ทำให้ได้คำแนะนำที่เป็นส่วนตัวมาก
ความทรงจำเฉพาะนี้ช่วยให้เอเจนต์พัฒนาบุคลิกภาพหรือ “persona” ที่สม่ำเสมอ มันช่วยให้เอเจนต์จำรายละเอียดเกี่ยวกับตัวเองหรือบทบาทที่ตั้งใจไว้ ทำให้การโต้ตอบลื่นไหลและมีโฟกัสมากขึ้น
ตัวอย่าง Persona Memory
ถ้าเอเจนต์ท่องเที่ยวถูกออกแบบให้เป็น “ผู้เชี่ยวชาญวางแผนสกี” persona memory อาจเสริมบทบาทนี้ ส่งผลต่อคำตอบที่สอดคล้องกับน้ำเสียงและความรู้ของผู้เชี่ยวชาญ
ความทรงจำนี้เก็บลำดับขั้นตอนที่เอเจนต์ทำในระหว่างงานที่ซับซ้อน รวมถึงความสำเร็จและความล้มเหลว มันเหมือนกับการจำ “ตอน” หรือประสบการณ์ที่ผ่านมาเพื่อนำมาเรียนรู้
ตัวอย่าง Episodic Memory
ถ้าเอเจนต์พยายามจองเที่ยวบินเฉพาะแต่ล้มเหลวเนื่องจากไม่มีที่นั่งว่าง episodic memory อาจบันทึกความล้มเหลวนี้ ช่วยให้เอเจนต์ลองเที่ยวบินทางเลือก หรือแจ้งปัญหาให้ผู้ใช้ทราบอย่างมีข้อมูลในความพยายามครั้งถัดไป
เกี่ยวข้องกับการดึงและจดจำเอนทิตีเฉพาะ (เช่น บุคคล สถานที่ หรือสิ่งของ) และเหตุการณ์จากการสนทนา ช่วยให้เอเจนต์สร้างความเข้าใจเชิงโครงสร้างเกี่ยวกับองค์ประกอบสำคัญที่พูดถึงได้
ตัวอย่าง Entity Memory
จากการสนทนาเกี่ยวกับทริปที่ผ่านมา เอเจนต์อาจดึง “ปารีส” “หอไอเฟล” และ “อาหารเย็นที่ร้าน Le Chat Noir” เป็นเอนทิตีได้ ในการโต้ตอบครั้งหน้า เอเจนต์สามารถนึกถึง “Le Chat Noir” และเสนอจองโต๊ะใหม่ได้
แม้ว่า RAG เป็นเทคนิคที่กว้างกว่า “Structured RAG” จะถูกเน้นว่าเป็นเทคโนโลยีความทรงจำที่ทรงพลัง มันดึงข้อมูลเชิงโครงสร้างที่หนาแน่นจากแหล่งต่างๆ (การสนทนา อีเมล รูปภาพ) และใช้เพื่อเพิ่มความแม่นยำ การดึง และความเร็วในการตอบ ต่างจาก RAG แบบดั้งเดิมที่อาศัยเพียงความคล้ายคลึงทางความหมาย Structured RAG ทำงานร่วมกับโครงสร้างที่มีอยู่ในข้อมูล
ตัวอย่าง Structured RAG
แทนที่จะจับคู่เฉพาะคำสำคัญ Structured RAG สามารถแยกรายละเอียดเที่ยวบิน (จุดหมาย ปลายทาง วันที่ เวลา สายการบิน) จากอีเมลและเก็บไว้ในรูปแบบโครงสร้าง ช่วยให้ตอบคำถามชัดเจนแบบ “ฉันจองเที่ยวบินไปปารีสวันอังคารวันไหน?”
การใช้งานความทรงจำสำหรับเอเจนต์ AI เกี่ยวข้องกับกระบวนการอย่างมีระบบของ การจัดการความทรงจำ ซึ่งประกอบด้วยการสร้าง, จัดเก็บ, ดึงข้อมูล, ผสาน, ปรับปรุง และแม้แต่ “ลืม” (หรือการลบ) ข้อมูล การดึงข้อมูลเป็นส่วนที่สำคัญอย่างยิ่ง
วิธีหนึ่งในการจัดเก็บและจัดการความทรงจำของเอเจนต์คือการใช้เครื่องมือเฉพาะทางอย่าง Mem0 Mem0 ทำงานเป็นชั้นความทรงจำที่เก็บได้ถาวร ช่วยให้เอเจนต์เรียกคืนการโต้ตอบที่เกี่ยวข้อง เก็บความชอบของผู้ใช้และบริบทข้อเท็จจริง และเรียนรู้จากความสำเร็จและความล้มเหลวเมื่อเวลาผ่านไป แนวคิดคือเอเจนต์ที่ไม่มีสถานะจะกลายเป็นเอเจนต์ที่มีสถานะ
มันทำงานผ่าน กระบวนการความทรงจำสองเฟส ได้แก่ การสกัดและการอัปเดต ขั้นแรก ข้อความที่ถูกเพิ่มเข้าไปในเธรดของเอเจนต์จะถูกส่งไปยังบริการ Mem0 ซึ่งใช้โมเดลภาษาขนาดใหญ่ (LLM) เพื่อสรุปประวัติการสนทนาและดึงความทรงจำใหม่ หลังจากนั้น ขั้นตอนอัปเดตที่ขับเคลื่อนด้วย LLM จะตัดสินใจว่าจะเพิ่ม แก้ไข หรือ ลบความทรงจำเหล่านี้ และจัดเก็บไว้ในที่เก็บข้อมูลแบบผสมผสานซึ่งอาจรวมถึงฐานข้อมูลเวกเตอร์ กราฟ และฐานข้อมูลแบบ key-value ระบบนี้ยังรองรับประเภทความทรงจำต่างๆ และสามารถรวมความทรงจำแบบกราฟสำหรับจัดการความสัมพันธ์ระหว่างเอนทิตีได้ด้วย
อีกทางเลือกหนึ่งที่ทรงพลังคือการใช้ Cognee ซึ่งเป็นความทรงจำเชิงความหมายแบบเปิดสำหรับเอเจนต์ AI ที่แปลงข้อมูลเชิงโครงสร้างและไม่เชิงโครงสร้างเป็นกราฟความรู้ที่สืบค้นได้โดยใช้ embeddings Cognee มีสถาปัตยกรรมแบบ dual-store ที่ผสานการค้นหาเวกเตอร์ตามความคล้ายคลึงกับความสัมพันธ์ในกราฟ ช่วยให้เอเจนต์เข้าใจไม่เพียงแต่ข้อมูลที่คล้ายกันแต่ยังความสัมพันธ์ระหว่างแนวคิดต่างๆ
Cognee เด่นด้าน การดึงข้อมูลแบบไฮบริด ที่ผสมผสานความคล้ายคลึงของเวกเตอร์ โครงสร้างกราฟ และเหตุผลที่ขับเคลื่อนด้วย LLM — ตั้งแต่การค้นหาชิ้นข้อมูลดิบจนถึงการตอบคำถามที่มีความเข้าใจโครงสร้างกราฟ ระบบรักษา ความทรงจำที่มีชีวิต ที่พัฒนาและเติบโตโดยยังคงสืบค้นได้ในฐานะกราฟเชื่อมต่อเดียว รองรับทั้งบริบทเซสชันระยะสั้นและความทรงจำถาวรระยะยาว
โน้ตบุ๊กของ Cognee (13-agent-memory-cognee.ipynb) แสดงการสร้างเลเยอร์ความทรงจำแบบรวมนี้ ด้วยตัวอย่างปฏิบัติของการรับข้อมูลจากแหล่งข้อมูลต่างๆ การแสดงภาพกราฟความรู้ และการสืบค้นด้วยกลยุทธ์การค้นหาที่แตกต่างกันซึ่งออกแบบเพื่อความต้องการเฉพาะของเอเจนต์
นอกเหนือจากเครื่องมือความทรงจำเฉพาะทางอย่าง mem0 คุณยังสามารถใช้บริการค้นหาที่ยืดหยุ่นเช่น Azure AI Search เป็นแบ็กเอนด์สำหรับการจัดเก็บและดึงความทรงจำ โดยเฉพาะสำหรับ Structured RAG
สิ่งนี้ช่วยให้คุณเสริมคำตอบของเอเจนต์ด้วยข้อมูลของคุณเอง เพื่อให้ได้คำตอบที่เกี่ยวข้องและแม่นยำยิ่งขึ้น Azure AI Search สามารถใช้เก็บความทรงจำการเดินทางของผู้ใช้ แค็ตตาล็อกสินค้า หรือความรู้โดเมนเฉพาะอื่นๆ ได้
Azure AI Search รองรับความสามารถเช่น Structured RAG ซึ่งเด่นในการสกัดและดึงข้อมูลเชิงโครงสร้างที่หนาแน่นจากชุดข้อมูลขนาดใหญ่ เช่น ประวัติการสนทนา อีเมล หรือแม้แต่ภาพ สิ่งนี้มอบ “ความแม่นยำและการดึงข้อมูลระดับเหนือมนุษย์” เมื่อเทียบกับวิธีการแบ่งชิ้นข้อความและการฝังตัวแบบเดิม
รูปแบบที่พบบ่อยสำหรับเอเจนต์ที่ปรับปรุงตัวเองได้คือการแนะนำ “เอเจนต์ความรู้” เอเจนต์แยกนี้สังเกตการสนทนาหลักระหว่างผู้ใช้กับเอเจนต์หลัก หน้าที่ของมันคือ:
ระบุข้อมูลที่มีค่า: กำหนดว่าส่วนใดของการสนทนาควรถูกเก็บเป็นความรู้ทั่วไปหรือความชอบเฉพาะของผู้ใช้
สกัดและสรุป: สกัดความรู้หรือความชอบที่สำคัญจากการสนทนา
เก็บในฐานความรู้: จัดเก็บข้อมูลที่สกัดออกมา ซึ่งมักอยู่ในฐานข้อมูลเวกเตอร์ เพื่อให้เรียกคืนได้ในภายหลัง
เสริมคำสืบค้นในอนาคต: เมื่อผู้ใช้เริ่มการสืบค้นใหม่ เอเจนต์ความรู้จะดึงข้อมูลที่เกี่ยวข้องมาและนำไปเสนอต่อข้อความของผู้ใช้ ให้บริบทสำคัญแกเอเจนต์หลัก (คล้ายกับ RAG)
• การจัดการความหน่วงเวลา: เพื่อหลีกเลี่ยงการชะลอการโต้ตอบกับผู้ใช้ สามารถใช้โมเดลที่ถูกกว่าและรวดเร็วกว่าตรวจสอบอย่างรวดเร็วว่าข้อมูลใดควรเก็บหรือเรียกคืน โดยเรียกใช้งานกระบวนการสกัดหรือดึงข้อมูลที่ซับซ้อนกว่าเฉพาะเมื่อจำเป็น
• การบำรุงรักษาฐานความรู้: สำหรับฐานความรู้ที่เติบโตขึ้น ข้อมูลที่ใช้ไม่บ่อยสามารถย้ายไปยัง “cold storage” เพื่อจัดการต้นทุน
เข้าร่วม Microsoft Foundry Discord เพื่อพบปะผู้เรียนคนอื่นๆ เข้าร่วมชั่วโมงทำงาน และถามคำถามเกี่ยวกับเอเจนต์ AI ของคุณได้เลย
ปฏิเสธความรับผิดชอบ: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator ขณะที่เราพยายามให้ความถูกต้อง โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถูกพิจารณาเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้การแปลโดยมนุษย์มืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดที่เกิดขึ้นจากการใช้การแปลนี้