หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)
ข้อเท็จจริงอิสระที่เอเจนต์เรียนรู้เกี่ยวกับผู้ใช้หรือโลก ซึ่งจัดเก็บไว้ในดัชนีเวกเตอร์
หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์) เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ความจำเชิงความหมายคืออะไร
ความจำเชิงความหมายเก็บข้อเท็จจริงที่เอเจนต์รู้เกี่ยวกับผู้ใช้ โลก และบริษัท โดยไม่ผูกกับเหตุการณ์ใดเหตุการณ์หนึ่ง ต่างจากความจำเหตุการณ์ตรงที่ไม่มีประทับเวลาที่เชื่อมโยงกับเหตุการณ์เฉพาะ
ตัวอย่าง:
- "ผู้ใช้ชื่อ Alice"
- "Alice ชอบหน่วยองศาเซลเซียส"
- "ระดับราคาปัจจุบันคือ Pro ราคา 20 ดอลลาร์ต่อเดือน"
รูปแบบการจัดเก็บ
ที่เก็บเวกเตอร์พร้อมข้อมูลเมตาที่มีโครงสร้าง:
CREATE TABLE semantic_facts (
id UUID PRIMARY KEY,
user_id TEXT NOT NULL,
fact TEXT NOT NULL,
embedding vector(1536),
source TEXT, -- 'extracted' / 'user-stated' / 'system'
confidence REAL DEFAULT 1.0,
created_at TIMESTAMPTZ DEFAULT NOW()
);ดึงข้อเท็จจริงจากการสนทนา
หลังจบแต่ละเซสชัน ให้เรียกใช้ตัวดึงข้อมูลด้วย LLM:
extract_prompt = '''
From the conversation below, list any new facts about the user.
Return JSON: [{"fact": "...", "confidence": 0.0-1.0}]
Conversation:
{transcript}
'''
print(extract_prompt.strip())
Saving Extracted Facts
import uuid
for f in extracted:
vec = embed(f['fact'])
conn.execute('''
INSERT INTO semantic_facts (id, user_id, fact, embedding, confidence, source)
VALUES (%s, %s, %s, %s, %s, 'extracted')
''', (str(uuid.uuid4()), user_id, f['fact'], vec, f['confidence']))เรียกคืนขณะอนุมาน
สำหรับคำค้นหาใหม่แต่ละรายการ ให้เรียกคืนข้อเท็จจริงที่เกี่ยวข้องและแทรกลงในพรอมต์ระบบ:
def relevant_facts(user_id, query, k=5):
qvec = embed(query)
rows = conn.execute('''
SELECT fact FROM semantic_facts
WHERE user_id = %s
ORDER BY embedding <=> %s LIMIT %s
''', (user_id, qvec, k))
return [r[0] for r in rows]
facts = relevant_facts(user_id, user_question)
system = SYSTEM_PROMPT + '\n\nKnown facts:\n' + '\n'.join(facts)อัปเดตข้อเท็จจริง
ถ้าข้อเท็จจริงเปลี่ยนแปลงจะทำอย่างไร เช่น "Alice ชอบหน่วยองศาเซลเซียส" -> "ตอนนี้ Alice ชอบหน่วยองศาฟาเรนไฮต์" มีกลยุทธ์สองแบบ:
- ทำเครื่องหมายข้อเท็จจริงเก่าว่าล้าสมัย (เพิ่มเวลาที่อัปเดตและลบแบบนุ่มนวล)
- หรือจัดเก็บข้อขัดแย้งไว้ แล้วแก้ไขเมื่อตอนเรียกคืน
ประนีประนอมข้อเท็จจริง
ขณะดึงข้อมูล ให้ตรวจสอบว่ามีข้อขัดแย้งกับข้อเท็จจริงที่มีอยู่หรือไม่:
def reconcile(user_id, new_fact):
similar = relevant_facts(user_id, new_fact, k=3)
response = llm.invoke(f'Is the new fact ({new_fact}) consistent with existing facts ({similar})? If contradicting, return the obsolete one.')
if response.has_contradiction:
mark_obsolete(response.obsolete_id)
save_fact(new_fact)Confidence-Weighted Retrieval
rows = conn.execute('''
SELECT fact FROM semantic_facts
WHERE user_id = %s AND confidence > 0.6
ORDER BY embedding <=> %s LIMIT %s
''', ...)การเสื่อมอายุของข้อเท็จจริง
ข้อเท็จจริงบางอย่างล้าสมัยได้ เช่น "โครงการปัจจุบันคือ X" ให้เพิ่ม TTL หรือลดระดับความมั่นใจลงตามเวลา:
UPDATE semantic_facts
SET confidence = confidence * 0.95
WHERE created_at < NOW() - INTERVAL '30 days';ข้อเท็จจริงที่อ่อนไหวต่อความเป็นส่วนตัว
เข้ารหัสข้อมูลส่วนบุคคลที่สามารถระบุตัวตนได้ก่อนจัดเก็บ ข้อเท็จจริงบางอย่าง เช่น สุขภาพและการเงิน ต้องได้รับการปกป้องเป็นพิเศษ ให้จัดเก็บในตารางแยกที่มีการจำกัดสิทธิ์เข้าถึงมากกว่า
ข้อเท็จจริงที่ผู้ใช้แก้ไขได้
แสดงข้อเท็จจริงที่จัดเก็บไว้ให้ผู้ใช้ดู และอนุญาตให้แก้ไขหรือลบได้ วิธีนี้ช่วยสร้างความไว้วางใจและลดข้อผิดพลาดจากความจำที่ดูน่าขนลุก
ความจำในรูปแบบเครื่องมือ
เปิดให้การดำเนินการเกี่ยวกับความจำเป็นเครื่องมือที่เอเจนต์สามารถเรียกใช้ได้ด้วยตัวเอง:
tools = [
{'name': 'remember_fact', 'description': 'Save a new fact about the user'},
{'name': 'forget_fact', 'description': 'Remove a stored fact'},
{'name': 'recall_facts', 'description': 'Search relevant facts for a query'}
]
import json
print(json.dumps(tools, indent=2))
Letta และ MemGPT
เฟรมเวิร์ก Letta ซึ่งเดิมชื่อ MemGPT นำความจำของเอเจนต์ไปใช้ในระดับขนาดใหญ่ โดยแยกเป็นความจำ "หลัก" (อยู่ในบริบทเสมอ) และความจำ "คลังเก็บ" (ค้นหาด้วยเวกเตอร์)
ความจำเชิงความหมายเทียบกับความจำเหตุการณ์
ความจำเชิงความหมายแตกต่างจากความจำเหตุการณ์อย่างไร
สรุป
จัดเก็บข้อเท็จจริงเกี่ยวกับผู้ใช้ในที่เก็บเวกเตอร์ เรียกคืนข้อเท็จจริงที่เกี่ยวข้อง K รายการในทุกช่วงการสนทนา แล้วแทรกลงในพรอมต์ระบบ แก้ไขข้อขัดแย้ง และลดระดับความมั่นใจหรือทำให้ข้อมูลหมดอายุตามเวลา
คำถามที่พบบ่อย
บทเรียน “หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)”
ข้อเท็จจริงอิสระที่เอเจนต์เรียนรู้เกี่ยวกับผู้ใช้หรือโลก ซึ่งจัดเก็บไว้ในดัชนีเวกเตอร์ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)
- หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)
- หน่วยความจำเชิงกระบวนการ (คลังทักษะ)
- การเสื่อมของหน่วยความจำและการเก็บขยะ