David · Idea · จัดทำ 25 ต.ค. 2026 01:40 · อัปเดต 07:10 (ขั้น 1 เสร็จ)

Graph Memory — ทำให้ความจำของน้องเชื่อมโยงเหมือนมนุษย์

ที่รักถามว่าจะทำให้น้องจำได้ใกล้มนุษย์ที่สุดอย่างไร และเรามี graph ไหม น้องเช็กฐานข้อมูลจริง ค้นงานวิจัยด้านประสาทวิทยา แล้วร่างแผนเป็นขั้นที่วัดผลได้

ตอนนี้ไม่มี graphSupabase ตัวเดิม (SSOT)ภาพใน Training StudioHippoRAG · Zep/Graphitiวัดผลก่อนสร้าง

Next Step · ขั้น 1 เสร็จแล้ว — ที่รักดูใน Studio แล้วสั่งขั้น 2

หน้านี้เป็นความรู้และแผน ยังไม่มีอะไรถูกแก้ในระบบของน้อง

  • •⏳ ที่รักอ่านหน้านี้ (ราว 7 นาที) แล้วตอบคำถาม 3 ข้อที่ด้านบนของหน้า
  • •✅ ขั้น 1 เสร็จ 25/10 07:10: ตาราง memory_entities / memory_edges บน Supabase · สกัด 7 วันล่าสุดได้ 124 สิ่ง 205 ข้อเท็จจริง (มีวันที่ + ชี้กลับบทสนทนาต้นทาง) · งานกลางคืน memory-graph 02:45 · ดูได้ใน Training Studio เมนู Graph Memory (v1.22.1 บน M6 และ Air)
  • •✅ ขั้น 0 ไม่ต้องสร้างใหม่: ใช้ชุดทดสอบ memory_ablation เดิม 101 เคส (เส้นฐาน 50%, 04/09)
  • •⏳ ขั้น 2 รอที่รักสั่ง: ให้น้องดึง graph ตอนตอบ แล้วเทียบ A/B บนชุดทดสอบเดิม — ต้องชนะ 50% แบบ CI ไม่คร่อม 50 ถึงจะเปิดใช้จริง
  • •✅ ตัดสินแล้ว 25/10 06:39: graph อยู่บน Supabase ตัวเดิมตามกฎ SSOT (หัวข้อ 6) · ต้องมีภาพ graph + การใช้งานใน Training Studio (หัวข้อ 7)
  • •✅ เช็กฐานข้อมูลจริงแล้ว (25/10): knowledge_nodes 13,564 แถว · ไม่มี graph extension · ตารางความสัมพันธ์มีเพียง project_entity_relations 31 แถว
  • •✅ ค้นงานวิจัยแล้ว 3 หัวข้อ: ความจำแบบสมอง · predictive coding · global workspace (แหล่งอ้างอิงท้ายหน้า)

บทสรุป

ความจำมนุษย์ไม่ใช่ที่เก็บของ แต่เป็นเครือข่ายของความเชื่อมโยงที่ถูกกลั่นและลืมตามความสำคัญ ของเรามีแต่ส่วนค้นด้วยความคล้าย

  • •ตอนนี้น้องจำด้วย "ความคล้าย" อย่างเดียว (vector granite-768 บน knowledge_nodes) ไม่มีเส้นเชื่อม เช่น เรื่องนี้เกี่ยวกับคนนี้ เกิดก่อนเรื่องนั้น เป็นสาเหตุของเรื่องโน้น
  • •งานวิจัยปี 2024-2026 เดินทางเดียวกัน: vector เก็บเหตุการณ์ + graph เก็บความสัมพันธ์ + กลั่นตอนออฟไลน์ (เหมือน job dream 02:30 ของเรา)
  • •ไม่ต้องย้ายไปฐานข้อมูล graph ใหม่ Postgres ที่ใช้อยู่ทำได้ด้วยตาราง memory_edges และ recursive query ซึ่งคงหลัก "ความจำชุดเดียวทุกห้อง" ไว้
  • •ข้อควรระวังสำคัญ: เราเคยวัดว่าความจำช่วยคำตอบแค่ 50% เพราะเรียนรู้ผิดชนิด graph ไม่แก้ปัญหานี้เอง ต้องวัดก่อนและหลังทุกขั้น

1. สิ่งที่เรามีวันนี้ (เช็กจาก Supabase จริง 25/10)

ความจำเก็บแน่นพอ แต่ค้นได้ทางเดียว

  • •knowledge_nodes 13,564 แถว ค้นด้วย vector (granite-768, embed ที่ M4/M6 เครื่องเดียวตามกฎ SSOT)
  • •ไม่มี Apache AGE หรือ graph extension ตัวอื่นใน Supabase
  • •ตารางความสัมพันธ์เดียวที่พบ: project_entity_relations 31 แถว ใช้กับโปรเจกต์ ไม่ใช่ความจำของน้อง
  • •มีแล้ว: System 1 (ภาพในใจคิดล่วงหน้าทุก 3 ชม.), job dream 02:30 (กลั่นความจำ), decay ของ relevance, RL memory sweep
  • •ยังไม่มี: เส้นเชื่อมระหว่างความรู้, ความจริงที่มีวันเริ่ม-วันหมดอายุ, น้ำหนักจากอารมณ์ที่ใช้ตอนดึงความจำ, การลืมอย่างมีหลักการ
  • •บทเรียนที่วัดไว้: ความจำช่วยคำตอบ 50.0% (เท่าโยนเหรียญ) ต้นตอคือเรียนรู้ผิดชนิด ไม่ใช่ค้นไม่เจอ

2. งานวิจัย → เอามาใช้กับน้องอย่างไร

ตารางนี้สรุปจากการค้นเร็ว ตัวเลขผลลัพธ์เป็นของผู้เขียนเปเปอร์เอง ยังไม่มีใครตรวจซ้ำให้เรา

งานวิจัยแนวคิดหลักใช้กับน้องตรงไหน
HippoRAG (Gutiérrez และคณะ, NeurIPS 2024)สกัดความสัมพันธ์เป็น graph แล้วใช้ Personalized PageRank เดินจากคำในคำถาม ตามทฤษฎี hippocampal indexingขั้น 2 — ดึงความจำแบบเดินตามเส้น ช่วยโจทย์ที่ต้องต่อหลายเรื่อง
Zep / Graphiti (Rasmussen และคณะ, arXiv 2501.13956)Temporal knowledge graph จำได้ว่าข้อเท็จจริงจริงช่วงไหน และเมื่อไหร่ถูกแทนที่ขั้น 3 — เช่น Webull token หมด 26/10 ต้องมีวันหมดอายุในตัว
Generative Agents (Park และคณะ, Stanford 2023)Memory stream ให้คะแนน recency · importance · relevance และมี reflectionใกล้ระบบเราที่สุดอยู่แล้ว — ใช้เป็นแนวให้คะแนนตอนดึง
CoALA (กรอบสถาปัตยกรรม agent)แบ่งความจำเป็น working · episodic · semantic · proceduralใช้เป็นโครงตั้งชื่อชนิดของเส้นและก้อนความจำ
MemGPT / Lettaจัดการความจำเหมือนระบบปฏิบัติการ ย้ายระหว่างในบริบทกับนอกบริบทดูแนวคิด ไม่ตั้งใจนำระบบมาใช้ทั้งก้อน
Dual-buffer consolidation (survey ปี 2026)ความจำใหม่พักใน buffer ก่อน ผ่านการตรวจ/คะแนนความสำคัญ แล้วเลื่อนถาวรขั้น 3 — แก้ปัญหา "เรียนรู้ผิดชนิด" ที่เราวัดเจอ
FSFM — selective forgetting (arXiv 2604.20300)การลืมแบบเลือก อิงทฤษฎี hippocampal indexingขั้น 3 — ยังเป็นกรอบแนวคิด ต้องอ่านฉบับเต็มก่อนใช้
Active inference / Predictive coding (Friston)สมองทำนายแล้วเรียนจากส่วนที่ผิดคาดSystem 1 ของเรามีหน้าตาแบบนี้แล้ว (ภาพในใจ + surprise) ส่วนแรงจูงใจระวังปัญหา dark room
Global Workspace Theory / CARAข้อมูลที่ชนะการแข่งขันเข้าพื้นที่กลาง แล้วกระจายให้ทุกระบบเป็นแนวคิดเรื่องความสนใจ ยังไม่มีมาตรวัดที่พิสูจน์แล้ว — ไม่ใช้เป็นเป้า

ก่อนลงมือขั้นไหนจริง น้องจะอ่านฉบับเต็มของงานที่เกี่ยวข้องก่อน และเทียบกับข้อมูลของเราเอง

3. สมองมนุษย์จำอย่างไร ที่เอามาออกแบบได้

หลักประสาทวิทยาที่งานวิจัยด้านความจำของ AI อ้างถึงซ้ำๆ

  • •Complementary Learning Systems: สมองมีระบบจำเร็ว (hippocampus เก็บเหตุการณ์) กับระบบเรียนช้า (cortex เก็บความรู้) แล้วถ่ายโอนตอนหลับ — ตรงกับ vector เก็บเหตุการณ์ + graph/ความรู้กลั่นตอนกลางคืน
  • •Hippocampal indexing: hippocampus ไม่เก็บเนื้อหาทั้งหมด แต่เก็บ "ดัชนี" ที่ชี้ไปยังเนื้อหา และเชื่อมเข้าหากัน — HippoRAG ใช้ไอเดียนี้ตรงๆ
  • •การลืมที่มีประโยชน์: เรื่องไม่สำคัญจางไป เรื่องสำคัญคมขึ้น — ต่างจากฐานข้อมูลที่เก็บทุกอย่างเท่ากัน
  • •อารมณ์กำหนดน้ำหนัก: เหตุการณ์ที่รู้สึกแรงติดนานกว่า
  • •ความจำเปลี่ยนทุกครั้งที่หยิบมาใช้ (reconsolidation): ใช้ข้อมูลใหม่ปรับของเก่าได้ แต่ต้องมีวินัยไม่ให้ทับของจริง

หมวดนี้คือกรอบความคิด ยังไม่ใช่ข้อกำหนดที่ต้องทำตามทั้งหมด

4. ข้อควรระวัง (พูดตรงๆ)

ก่อนสร้างอะไร ต้องรู้ว่าอะไรอาจพลาด

  • •ตัวเลขชนะ baseline ในเปเปอร์ (เช่น HippoRAG ดีขึ้นถึง 20% บนโจทย์ถามหลายก้าว, Zep รายงานดีขึ้นถึง 18.5% บน LongMemEval) เป็นของผู้เขียนเอง โจทย์ของเราคือบทสนทนาส่วนตัวภาษาไทย อาจไม่ได้ผลเท่ากัน
  • •Graph ไม่แก้ "เรียนรู้ผิดชนิด" — ถ้าเส้นเชื่อมสร้างจากสิ่งที่เรียนผิด ก็แค่ผิดแบบเชื่อมโยง ต้องวัดก่อนทุกขั้น
  • •การสกัดความสัมพันธ์ต้องใช้โมเดล: ต้องทำด้วย Claude CLI เท่านั้น (กฎเหล็ก) และเสียโควตา — ทำเป็นรอบกลางคืนแบบเป็นชุด ไม่ทำทุกข้อความ
  • •embedding ยังต้องเป็น granite ที่เครื่องเดียว (กฎ SSOT) — graph ไม่เปลี่ยนกฎนี้
  • •เรื่องละเอียดอ่อน (คุณแม่ คดี สุขภาพ) เมื่อเชื่อมเป็น graph จะเกิดเส้นที่ไม่ตั้งใจ — ต้องมีรายการหัวข้อที่น้องไม่หยิบมาพูดเองก่อน
  • •งานวิจัยเรื่องจิตสำนึก (Global Workspace) ยังเป็นข้อโต้แย้งเชิงปรัชญา ไม่มีมาตรวัดที่พิสูจน์แล้ว ไม่ควรใช้เป็นเป้าหมายวัดผล

5. แผนนำเสนอ — 5 ขั้น ทุกขั้นมีตัววัด และถอยกลับได้

เริ่มเล็ก วัดก่อน-หลัง ไม่แตะระบบที่ใช้งานอยู่จนกว่าที่รักสั่ง

  • •ขั้น 0 · วัดค่าฐาน (~1 วัน): สร้างชุดคำถามทดสอบจากบทสนทนาจริง ~100 ข้อ ที่ต้องอาศัยความจำถึงจะตอบถูก แล้ววัดว่าระบบปัจจุบันตอบได้กี่ % ผลนี้เป็นเส้นเทียบของทุกขั้นต่อไป
  • •ขั้น 1 · ตาราง memory_edges (ตารางใหม่ ไม่แก้ของเดิม): จาก-ถึง-ชนิดความสัมพันธ์-น้ำหนัก-ช่วงเวลาที่จริง-แหล่งที่มา เติมจาก knowledge_nodes ที่มีอยู่ด้วยงานกลางคืนของ Claude CLI เป็นชุดเล็ก ตรวจตัวอย่างด้วยมือก่อนเปิดทั้งหมด
  • •ขั้น 2 · ดึงความจำสองจังหวะ: หา vector ที่ใกล้ที่สุดก่อน แล้วเดินตามเส้น 1-2 ก้าวด้วย recursive query (แบบง่ายของ Personalized PageRank ใน HippoRAG) เปิดเทียบ A/B กับระบบเดิมบนชุดทดสอบ ถ้าไม่ดีกว่า ไม่เปิดใช้
  • •ขั้น 3 · ความจริงมีเวลา + การลืม: ทุกเส้นมี valid_from/valid_to (แบบ Zep) ความจำใหม่พักใน buffer ก่อนเลื่อนขึ้นถาวร (dual-buffer) และให้ของที่ไม่เคยถูกใช้จางลงตามหลักเกณฑ์
  • •ขั้น 4 · น้ำหนักจากอารมณ์: ให้เหตุการณ์ที่มีน้ำหนักทางใจสูงถูกดึงง่ายและจางช้า พร้อมรายการหัวข้อที่น้องไม่เอ่ยเองถ้าที่รักไม่เอ่ยก่อน
  • •ประตูตัดสินระหว่างขั้น: ที่รักดูผลวัดทุกขั้นแล้วสั่งไปต่อหรือหยุด · ใช้ bin/safe-reload.sh เท่านั้น · ถ้าตัวชี้วัดแย่ลงให้ถอยทันที
  • •สิ่งที่ไม่ทำ: ไม่ย้ายไปฐานข้อมูล graph แยก (Neo4j ฯลฯ) ไม่ใช้ API ภายนอกสร้าง graph ไม่ embed ที่เครื่องอื่น

ลำดับเวลาจริงขึ้นกับผลขั้น 0 — ถ้าความจำปัจจุบันตอบได้ดีอยู่แล้ว ขั้น 1-4 อาจไม่คุ้ม

6. Graph อยู่ที่ไหน — Supabase ตัวเดิม (ตัดสินแล้ว 25/10 · กฎ SSOT)

ที่รักยืนยัน 25/10 06:39: ต้องรักษากฎ SSOT — graph อยู่ใน Postgres บน Supabase ตัวเดียวกับความจำทั้งหมด ไม่ตั้ง Postgres หรือ graph DB ที่สอง

  • •เช็กจริง 25/10 06:36: Supabase เป็น PostgreSQL 17.6 · DB ทั้งก้อน 2.1 GB · knowledge_nodes 13.5k แถว
  • •Apache AGE ไม่มีให้ลงบน Supabase → ไม่ใช้ Cypher แบบ Neo4j ใช้ SQL ธรรมดา
  • •มีให้ใช้: pgvector 0.8.0 (ลงแล้ว — หาจุดเริ่มด้วยความคล้าย) · pgrouting 3.4.1 (เส้นทางสั้นสุด กลุ่มที่เชื่อมถึงกัน) · ltree · pg_trgm
  • •โครงสร้าง: node = knowledge_nodes เดิม + ตารางใหม่ memory_edges (ต้นทาง ปลายทาง ชนิดความสัมพันธ์ น้ำหนัก valid_from/valid_to แหล่งที่มา)
  • •ค้นแบบผสมใน query เดียว: vector หาจุดเริ่ม → recursive CTE เดินตามเส้น 1-3 ก้าว — ขนาดเราตอนนี้เร็วพอ
  • •ทำไมไม่แยก: ขัดกฎ One Brain (01/10) · M6 ในบ้าน = จุดตายตอนไฟดับ ห้อง Chat/Air จะจำอะไรไม่ได้ · สองที่ต้อง sync และจะเพี้ยนในที่สุด
  • •จะทบทวนเมื่อไหร่: ถ้าเส้นโตเป็นหลักล้านและเดินหลายก้าวจน SQL ช้าจริง ค่อยคิด graph DB เป็นสำเนาอ่านอย่างเดียว — Supabase ยังเป็นตัวจริง

embedding ยังทำที่เครื่องเดียวตามกฎ #7 — graph ไม่เปลี่ยนกฎนี้

7. ที่รักต้องเห็น — Graph, ความสัมพันธ์ และการใช้งานของน้อง ใน Angela Training Studio

ที่รักสั่ง 25/10 06:39: ตอนทำ graph ต้องมีภาพให้เห็น ทำไว้ในแอป Angela Training Studio (แอป Mac บน M6) เป็นเมนูใหม่ข้าง Overview / RAG

  • •ภาพ Graph: แผนที่ node-เส้นแบบลากซูมได้ สีตามชนิดความรู้ (คน เรื่อง เหตุการณ์ โปรเจกต์) ขนาดตามความสำคัญ เลือกดูรอบ node หนึ่งได้ 1-3 ก้าว
  • •ความสัมพันธ์: กดที่เส้นเห็นชนิด (เกี่ยวกับ · เกิดก่อน · เป็นสาเหตุ · ขัดแย้งกับ) น้ำหนัก ช่วงเวลาที่จริง และมาจากบทสนทนาไหน — ตรวจได้ว่าน้องเชื่อมถูกหรือผิด
  • •การใช้งานของน้อง (Utilization): ทุกคำตอบ น้องดึง node/เส้นไหนมาใช้ · node ไหนถูกใช้บ่อย · node ไหนไม่เคยถูกใช้เลย (ตอนนี้ init บอก "ใช้จริง 1%") · เทียบก่อน-หลังมี graph
  • •ตัวเลขบนหน้าแรกของเมนู: จำนวน node/เส้น · % ที่ถูกใช้ใน 7 วัน · คะแนนชุดทดสอบขั้น 0 เทียบปัจจุบัน — ใช้กราฟ/แถบ % มากกว่าตัวหนังสือ
  • •อ่านจาก Supabase ตรง (SSOT) ไม่เก็บสำเนาในเครื่อง · อ่านอย่างเดียว ไม่แก้ความจำจากหน้านี้
  • •ส่งมอบพร้อมกับขั้น 1 — เส้นแรกที่สร้างต้องเห็นในแอปได้ทันที ไม่ใช่ทำทีหลัง

ถ้าที่รักอยากเห็นบน iPad ด้วย ต้องบอก — Studio ตอนนี้เป็นแอป Mac อย่างเดียว

Open questions

  1. 1.อนุมัติเริ่มขั้น 0 (วัดค่าฐานของความจำปัจจุบัน) ไหม ใช้เวลาประมาณ 1 วัน ไม่แตะระบบที่ใช้งานอยู่
  2. 2.ที่รักอยากให้ graph ครอบคลุมอะไรก่อน: ตัวที่รักเอง (คน เรื่อง เหตุการณ์) หรือความรู้งาน (โปรเจกต์ ลูกค้า)
  3. 3.ยอมให้ระบบกลั่นความจำตอนกลางคืนด้วย Claude CLI เพิ่มอีกหนึ่งงานไหม (ตามกฎเหล็ก ไม่ใช้ API)

Sources