เมื่อพูดถึงประโยชน์เฉพาะตัวของการสร้าง AI Agents สองสิ่งที่มักถูกพูดถึงคือ: ความสามารถในการเรียกใช้เครื่องมือเพื่อทำงานให้เสร็จและความสามารถในการพัฒนาให้ดีขึ้นตามเวลา Memory คือรากฐานของการสร้างเอเย่นต์ที่พัฒนาตนเองได้ซึ่งสามารถสร้างประสบการณ์ที่ดียิ่งขึ้นให้ผู้ใช้ของเรา
ในบทเรียนนี้ เราจะมาดูว่า Memory คืออะไรสำหรับ AI Agents และเราจะจัดการและใช้งานมันเพื่อประโยชน์ของแอปพลิเคชันของเราได้อย่างไร
บทเรียนนี้ครอบคลุม:
• การเข้าใจ AI Agent Memory: Memory คืออะไรและทำไมมันถึงมีความสำคัญสำหรับเอเย่นต์
• การใช้งานและการเก็บรักษา Memory: วิธีปฏิบัติในการเพิ่มความสามารถของ Memory ให้กับ AI agents โดยเน้นหน่วยความจำระยะสั้นและระยะยาว
• การทำให้ AI Agents พัฒนาตนเองได้: วิธีที่ Memory ทำให้เอเย่นต์เรียนรู้จากปฏิสัมพันธ์ที่ผ่านมาและพัฒนาได้ตามเวลา
บทเรียนนี้มีสองบทแนะนำโน้ตบุ๊กที่ครอบคลุม:
• 13-agent-memory.ipynb: ใช้งาน Memory โดยใช้ Mem0 และ Azure AI Search กับ Microsoft Agent Framework
• 13-agent-memory-cognee.ipynb: ใช้งาน Memory ที่มีโครงสร้างโดยใช้ Cognee สร้าง knowledge graph อัตโนมัติที่รองรับด้วย embeddings แสดงผลกราฟ และดึงข้อมูลอัจฉริยะ
หลังจากจบบทเรียนนี้แล้ว คุณจะรู้วิธี:
• แยกแยะความแตกต่างระหว่างประเภทต่าง ๆ ของ AI agent memory รวมทั้ง working, short-term และ long-term memory รวมถึงรูปแบบเฉพาะอย่าง persona และ episodic memory
• ใช้งานและจัดการ short-term และ long-term memory สำหรับ AI agents โดยใช้ Microsoft Agent Framework โดยประยุกต์ใช้เครื่องมือต่าง ๆ เช่น Mem0, Cognee, Whiteboard memory และผสานรวมกับ Azure AI Search
• เข้าใจหลักการเบื้องหลัง AI agents ที่พัฒนาตนเองได้ และวิธีที่ระบบจัดการ Memory ที่แข็งแกร่งช่วยให้เกิดการเรียนรู้และปรับตัวอย่างต่อเนื่อง
โดยพื้นฐานแล้ว Memory สำหรับ AI agents หมายถึงกลไกที่ทำให้พวกเขาสามารถเก็บรักษาและเรียกข้อมูลได้ ข้อมูลนี้อาจเป็นรายละเอียดเฉพาะเกี่ยวกับบทสนทนา ความชอบของผู้ใช้ การกระทำที่ผ่านมา หรือแม้แต่รูปแบบที่เรียนรู้มา
หากไม่มี Memory แอปพลิเคชัน AI มักจะไม่มีสถานะ หมายความว่าทุกการโต้ตอบเริ่มใหม่จากศูนย์ ซึ่งนำไปสู่ประสบการณ์ที่น่าเบื่อและน่าหงุดหงิดที่เอเย่นต์ “ลืม” บริบทหรือความชอบก่อนหน้า
ความเฉลียวฉลาดของเอเย่นต์ถูกผูกติดอย่างลึกซึ้งกับความสามารถในการเรียกคืนและใช้ข้อมูลที่ผ่านมา Memory ช่วยให้เอเย่นต์:
• สะท้อนกลับ: เรียนรู้จากการกระทำและผลลัพธ์ในอดีต
• โต้ตอบอย่างมีปฏิสัมพันธ์: รักษาบริบทไว้ในบทสนทนาที่กำลังดำเนิน
• เชิงรุกและตอบสนอง: คาดการณ์ความต้องการหรือตอบสนองตามข้อมูลในอดีต
• อิสระ: ปฏิบัติงานอย่างเป็นอิสระมากขึ้นโดยใช้ความรู้ที่เก็บรักษาไว้
เป้าหมายของการใช้งาน Memory คือทำให้เอเย่นต์มีความน่าเชื่อถือและมีความสามารถมากขึ้น
คิดว่ามันเป็นเหมือนกระดาษร่างที่เอเย่นต์ใช้ในระหว่างงานหรือกระบวนการคิดที่ดำเนินอยู่ มันเก็บข้อมูลทันทีที่จำเป็นต้องใช้ในการคำนวณขั้นตอนถัดไป
สำหรับ AI agents working memory มักจะจับข้อมูลที่เกี่ยวข้องที่สุดจากบทสนทนา แม้ว่าประวัติการสนทนาจะยาวหรือถูกตัดทอนไป มันเน้นการดึงองค์ประกอบสำคัญ เช่น ความต้องการ ข้อเสนอ การตัดสินใจ และการกระทำ
ตัวอย่าง Working Memory
ในเอเย่นต์การจองทริป working memory อาจจับคำร้องขอปัจจุบันของผู้ใช้ เช่น “ฉันต้องการจองทริปไปปารีส” ความต้องการเฉพาะนี้ถูกเก็บไว้ในบริบททันทีของเอเย่นต์เพื่อชี้นำการโต้ตอบปัจจุบัน
Memory ประเภทนี้เก็บข้อมูลตลอดระยะเวลาของบทสนทนาหรือเซสชันเดียว มันคือบริบทของการแชทปัจจุบัน ทำให้เอเย่นต์สามารถอ้างอิงกลับไปยังรอบก่อนหน้าของบทสนทนาได้
ตัวอย่าง Short Term Memory
ถ้าผู้ใช้ถามว่า “ตั๋วเครื่องบินไปปารีสราคาเท่าไหร่?” จากนั้นตามด้วย “แล้วที่พักล่ะ?” short-term memory จะทำให้เอเย่นต์รู้ว่า “ที่นั่น” หมายถึง “ปารีส” ในบทสนทนาเดียวกัน
นี่คือข้อมูลที่อยู่คงที่ผ่านบทสนทนาหลายครั้งหรือหลายเซสชัน มันทำให้เอเย่นต์จำความชอบของผู้ใช้ ปฏิสัมพันธ์ในอดีต หรือความรู้ทั่วไปในช่วงเวลานานได้ สิ่งนี้สำคัญสำหรับการปรับแต่งตามผู้ใช้
ตัวอย่าง Long Term Memory
Long-term memory อาจเก็บว่าคุณเบนชอบเล่นสกีและกิจกรรมกลางแจ้ง ชอบกาแฟที่มองเห็นภูเขา และต้องการหลีกเลี่ยงลานสกีขั้นสูงเนื่องจากบาดเจ็บในอดีต ข้อมูลนี้ที่เรียนรู้จากปฏิสัมพันธ์ก่อนหน้าจะมีผลต่อคำแนะนำในตอนวางแผนทริปในอนาคต ทำให้มีความเป็นส่วนตัวสูง
Memory ประเภทพิเศษนี้ช่วยให้เอเย่นต์พัฒนาบุคลิกภาพหรือบทบาทที่สอดคล้องกัน มันทำให้เอเย่นต์จำรายละเอียดเกี่ยวกับตัวเองหรือบทบาทที่ตั้งใจไว้ ทำให้การโต้ตอบไหลลื่นและมีจุดโฟกัสมากขึ้น
ตัวอย่าง Persona Memory
ถ้าเอเย่นต์การท่องเที่ยวถูกออกแบบให้เป็น “ผู้เชี่ยวชาญด้านวางแผนสกี” persona memory อาจเสริมบทบาทนี้ ส่งผลต่อคำตอบเพื่อให้สอดคล้องกับน้ำเสียงและความรู้ของผู้เชี่ยวชาญ
Memory นี้เก็บลำดับขั้นตอนที่เอเย่นต์ปฏิบัติในงานที่ซับซ้อน รวมถึงความสำเร็จและความล้มเหลว มันเหมือนการจดจำ “ตอน” เฉพาะหรือประสบการณ์ที่ผ่านมาเพื่อเรียนรู้จากมัน
ตัวอย่าง Episodic Memory
ถ้าเอเย่นต์พยายามจองเที่ยวบินเฉพาะแต่ล้มเหลวเนื่องจากหมดที่นั่ง episodic memory อาจบันทึกความล้มเหลวนี้ ทำให้เอเย่นต์ลองเที่ยวบินอื่นหรือแจ้งผู้ใช้เกี่ยวกับปัญหาอย่างมีข้อมูลมากขึ้นในครั้งถัดไป
นี่คือการดึงและจำเอนทิตี้เฉพาะ (เช่น บุคคล สถานที่ หรือสิ่งของ) และเหตุการณ์จากบทสนทนา ทำให้เอเย่นต์สร้างความเข้าใจอย่างมีโครงสร้างในองค์ประกอบสำคัญที่พูดถึง
ตัวอย่าง Entity Memory
จากบทสนทนาเกี่ยวกับทริปที่ผ่านมา เอเย่นต์อาจดึงคำว่า “ปารีส,” “หอไอเฟล,” และ “ดินเนอร์ที่ร้าน Le Chat Noir” ออกมาเป็นเอนทิตี้ ในช่วงโต้ตอบครั้งต่อไป เอเย่นต์อาจจำ “Le Chat Noir” และเสนอทำการจองใหม่ที่นั่น
แม้ว่า RAG จะเป็นเทคนิคทั่วไป “Structured RAG” ถูกเน้นว่าเป็นเทคโนโลยี Memory ที่ทรงพลัง มันดึงข้อมูลที่หนาแน่นและมีโครงสร้างจากแหล่งต่าง ๆ (บทสนทนา อีเมล ภาพ) และใช้เพื่อเพิ่มความแม่นยำ การเรียกคืน และความรวดเร็วในการตอบ ต่างจาก RAG คลาสสิกที่พึ่งพาความคล้ายคลึงเชิงความหมาย Structured RAG ใช้กับโครงสร้างข้อมูลที่แท้จริง
ตัวอย่าง Structured RAG
แทนที่จะจับคู่เฉพาะคำสำคัญ Structured RAG อาจแยกรายละเอียดเที่ยวบิน (จุดหมาย วันที่ เวลา สายการบิน) จากอีเมลและเก็บในรูปแบบมีโครงสร้าง ทำให้สามารถค้นหาข้อมูลเช่น “ฉันจองเที่ยวบินไปปารีสวันอังคารไหน?”
การใช้งาน Memory สำหรับ AI agents เกี่ยวข้องกับกระบวนการจัดการ Memory อย่างเป็นระบบ ซึ่งรวมถึงการสร้าง เก็บรักษา ดึงข้อมูล บูรณาการ ปรับปรุง และแม้กระทั่ง “ลืม” (หรือการลบ) ข้อมูล การดึงข้อมูลถือเป็นส่วนสำคัญเป็นพิเศษ
วิธีหนึ่งในการเก็บและจัดการ Memory ของเอเย่นต์คือการใช้เครื่องมือเฉพาะเช่น Mem0 Mem0 ทำงานเป็นชั้นความจำถาวร ช่วยให้เอเย่นต์สามารถเรียกคืนปฏิสัมพันธ์ที่เกี่ยวข้อง เก็บความชอบของผู้ใช้และบริบททางข้อเท็จจริง และเรียนรู้จากความสำเร็จและความล้มเหลวตามเวลา แนวคิดคือเอเย่นต์ที่ไม่มีสถานะถูกเปลี่ยนให้มีสถานะ
มันทำงานผ่าน ท่อความจำสองขั้นตอน: การสกัดและการอัปเดต ก่อนอื่น ข้อความที่เพิ่มเข้าไปในเธรดของเอเย่นต์จะถูกส่งไปยังบริการ Mem0 ซึ่งใช้ LLM (Large Language Model) สรุปประวัติการสนทนาและสกัดความจำใหม่ จากนั้นขั้นตอนการอัปเดตที่ขับเคลื่อนด้วย LLM จะตัดสินใจว่าจะเพิ่ม แก้ไข หรือลบความจำเหล่านี้ แล้วเก็บไว้ในฐานข้อมูลไฮบริดที่อาจรวมทั้งฐานข้อมูลเวกเตอร์ กราฟ และคีย์-แวลู ระบบนี้ยังรองรับประเภทของ Memory หลายชนิดและสามารถผนวก memory แบบกราฟเพื่อจัดการความสัมพันธ์ระหว่างเอนทิตี้ได้
แนวทางทรงพลังอีกประการคือการใช้ Cognee ซึ่งเป็น semantic memory แบบเปิดเผยสำหรับ AI agents ที่แปลงข้อมูลมีโครงสร้างและไม่มีโครงสร้างให้เป็น knowledge graph ที่สามารถสืบค้นได้โดยมี embeddings เป็นฐาน Cognee ให้โครงสร้าง dual-store ซึ่งรวมการค้นหาความคล้ายคลึงด้วยเวกเตอร์กับความสัมพันธ์ของกราฟ ทำให้เอเย่นต์เข้าใจไม่ใช่แค่ข้อมูลที่คล้ายกัน แต่ยังเข้าใจว่าคอนเซปต์เชื่อมโยงกันอย่างไร
มันโดดเด่นในเรื่อง การดึงแบบผสม ที่ผสมผสานความคล้ายคลึงเวกเตอร์ โครงสร้างกราฟ และตรรกะของ LLM - ตั้งแต่การค้นหาแบบชิ้นส่วนดิบไปจนถึงการตอบคำถามที่รับรู้กราฟ ระบบรักษา memory ที่มีชีวิต ซึ่งพัฒนาและเติบโตไปพร้อมกัน ในขณะที่ยังสามารถสืบค้นได้ในฐานะกราฟที่เชื่อมโยงกันเดียว รองรับทั้งบริบทเซสชันระยะสั้นและ memory ถาวรระยะยาว
บทช่วยสอนโน้ตบุ๊ก Cognee (13-agent-memory-cognee.ipynb) แสดงการสร้างชั้น memory รวมนี้ พร้อมตัวอย่างปฏิบัติของการนำเข้าข้อมูลหลากหลาย แสดงกราฟความรู้ และสืบค้นข้อมูลด้วยกลยุทธ์การค้นหาที่ปรับให้เหมาะสมกับความต้องการเฉพาะของเอเย่นต์
นอกจากเครื่องมือ Memory เฉพาะทางเช่น mem0 แล้ว คุณยังสามารถใช้บริการค้นหาที่แข็งแกร่งอย่าง Azure AI Search เป็นแบ็คเอนด์สำหรับการเก็บและดึงความจำได้ โดยเฉพาะสำหรับ Structured RAG
นี้ทำให้คุณสามารถอิงคำตอบของเอเย่นต์กับข้อมูลของคุณเอง เพื่อให้ได้คำตอบที่เกี่ยวข้องและแม่นยำยิ่งขึ้น Azure AI Search สามารถใช้เก็บ memory การเดินทางเฉพาะผู้ใช้ แคตตาล็อกสินค้า หรือความรู้เฉพาะโดเมนอื่น ๆ ได้
Azure AI Search รองรับความสามารถเช่น Structured RAG ซึ่งโดดเด่นในการดึงและเรียกคืนข้อมูลที่หนาแน่นและมีโครงสร้างจากชุดข้อมูลขนาดใหญ่ เช่น ประวัติสนทนา อีเมล หรือแม้แต่ภาพ ซึ่งให้ความแม่นยำและการเรียกคืนระดับเหนือมนุษย์เมื่อเทียบกับวิธีการแบ่งชิ้นข้อความและ embedding แบบดั้งเดิม
รูปแบบทั่วไปสำหรับเอเย่นต์ที่พัฒนาตนเองได้ คือการแนะนำ “knowledge agent” เอเย่นต์แยกนี้ทำหน้าที่เฝ้าดูการสนทนาหลักระหว่างผู้ใช้และเอเย่นต์หลัก หน้าที่ของมันคือ:
ระบุข้อมูลที่มีค่า: ตัดสินว่าบางส่วนของบทสนทนาควรถูกเก็บเป็นความรู้ทั่วไปหรือความชอบเฉพาะของผู้ใช้หรือไม่
สกัดและสรุป: สกัดสาระสำคัญของการเรียนรู้หรือความชอบจากบทสนทนา
เก็บไว้ในฐานความรู้: เก็บข้อมูลสกัดนี้ไว้ซึ่งมักเป็นฐานข้อมูลเวกเตอร์ เพื่อที่สามารถดึงข้อมูลได้ในภายหลัง
เสริมคำถามในอนาคต: เมื่อผู้ใช้เริ่มคำถามใหม่ knowledge agent จะดึงข้อมูลที่เกี่ยวข้องมาและต่อท้ายให้กับ prompt ของผู้ใช้ เพื่อให้บริบทสำคัญกับเอเย่นต์หลัก (คล้ายกับ RAG)
• การจัดการความล่าช้า: เพื่อหลีกเลี่ยงการชะลอการโต้ตอบกับผู้ใช้ สามารถใช้โมเดลที่ถูกกว่าและเร็วกว่าในเบื้องต้นเพื่อตรวจสอบอย่างรวดเร็วว่าข้อมูลนั้นควรเก็บหรือดึงหรือไม่ จากนั้นค่อยเรียกใช้กระบวนการสกัด/ดึงข้อมูลที่ซับซ้อนมากขึ้นเมื่อจำเป็นเท่านั้น
• การบำรุงรักษาฐานความรู้: สำหรับฐานความรู้ที่เติบโตขึ้น ข้อมูลที่ใช้บ่อยน้อยกว่าสามารถย้ายไปเก็บใน “cold storage” เพื่อจัดการค่าใช้จ่าย
เข้าร่วมที่ Microsoft Foundry Discord เพื่อพบปะกับผู้เรียนอื่น ๆ เข้าร่วม office hours และรับคำตอบสำหรับคำถามของคุณเกี่ยวกับ AI Agents
ข้อจำกัดความรับผิดชอบ:
เอกสารฉบับนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าพวกเราจะพยายามให้ความถูกต้องสูงสุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยมนุษย์ผู้เชี่ยวชาญ พวกเราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดใด ๆ ที่เกิดขึ้นจากการใช้การแปลนี้