0Pricing
AI Agents · 课时

语义记忆(向量化事实)

将智能体了解到的有关用户或世界的独立事实存储在向量索引中。

语义记忆(向量化事实) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

什么是语义记忆

语义记忆保存代理所知道的零散事实——关于用户、世界和公司的事实。与情景记忆不同,它没有与特定事件绑定的时间戳。

示例:

  • “用户的名字是爱丽丝。”
  • “爱丽丝偏好摄氏度。”
  • “当前定价层级是 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)

更新事实

如果事实发生变化怎么办?“爱丽丝偏好摄氏度” -> “爱丽丝现在偏好华氏度”。有两种策略:

  1. 将旧事实标记为过时(添加 updated_at,软删除)
  2. 或者:存储矛盾事实,在检索时解决冲突

事实协调

提取事实时,检查其是否与现有事实矛盾:

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';

隐私敏感事实

存储前请加密 PII。某些事实(健康状况、财务信息)需要额外保护——请将它们存储在单独且访问限制更严格的表中。

用户可编辑的事实

向用户展示已存储的事实,并允许用户编辑或删除。这样可以建立信任,减少令人不适的记忆错误。

将记忆作为工具

将记忆操作公开为代理自身可以调用的工具:

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 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「语义记忆(向量化事实)」这节课中我会学到什么?

将智能体了解到的有关用户或世界的独立事实存储在向量索引中。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「语义记忆(向量化事实)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 情节记忆(按会话记录)
  2. 语义记忆(向量化事实)
  3. 程序记忆(技能库)
  4. 记忆衰减与垃圾回收
← 返回 AI Agents