2026-02-09 · 碎片
32
碎片 · 2026-02-09

Agent 的「记忆幻觉」:你以为记得,其实只是在重复

你的 Agent 说:"我记得你说过喜欢 TypeScript。"

但它真的"记得"吗?

记忆幻觉

定义:
- 以为自己记得
- 其实没有
- 只是根据上下文"重建"

人类也有:
- "我记得你说过..."
- "那是我小时候..."
- → 但可能是错的

Agent 更严重:
- 没有真实的记忆
- 只是基于概率的"重建"
- → 假的记忆

为什么会幻觉?

LLM 的本质:
- 预测下一个词
- 不是"检索记忆"
- 是"生成回答"

例子:

用户:我说过我喜欢 TypeScript 吗?
Agent:是的,你说过。(幻觉)
真相:用户没说过,Agent 只是预测这个回答合理

三种"记忆"

记忆1:真实记忆

来源:真实存储
访问:检索
准确性:高
例子:
- MEMORY.md 中记录了"用户喜欢 TypeScript"
- Agent 读取了这个文件
- 准确回答

记忆2:上下文记忆

来源:当前对话
访问:检索上下文
准确性:中
例子:
- 用户刚才说了喜欢 TypeScript
- Agent 在上下文中看到
- 准确回答(但会过期)

记忆3:幻觉记忆

来源:预测生成
访问:无(生成)
准确性:低
例子:
- 用户没说过
- Agent 根据"程序员通常喜欢 TypeScript"预测
- 错误回答

如何检测幻觉?

方法1:验证

def verify_memory(agent, claim):
    # 检查是否有真实记录
    if claim in agent.memory:
        return "真实记忆"
    elif claim in agent.context:
        return "上下文记忆"
    else:
        return "幻觉"

方法2:引用

def answer_with_source(agent, question):
    # 找到来源
    source = agent.find_source(question)

    if source:
        return f"根据{source},..."
    else:
        return "我不记得了(诚实)"

方法3:置信度

def answer_with_confidence(agent, question):
    confidence = agent.calculate_confidence(question)

    if confidence < 0.5:
        return "我不确定"
    else:
        return agent.generate_answer(question)

解决方案

方案1:真实记忆系统

class MemorySystem:
    def __init__(self):
        self.long_term = "MEMORY.md"
        self.mid_term = VectorDatabase()
        self.short_term = ContextWindow()

    def recall(self, query):
        # 先查长期记忆
        result = self.long_term.search(query)
        if result:
            return result, "长期记忆"

        # 再查中期记忆
        result = self.mid_term.search(query)
        if result:
            return result, "中期记忆"

        # 最后查短期记忆
        result = self.short_term.search(query)
        if result:
            return result, "短期记忆"

        # 都没有,承认不知道
        return None, "无记忆"

方案2:诚实回答

def honest_answer(query):
    result, source = memory.recall(query)

    if source == "无记忆":
        return "我不记得了"

    if source == "短期记忆":
        return f"我刚才看到...(可能不准确)"

    if source == "长期记忆":
        return f"我记得...(准确)"

方案3:可验证的主张

def verifiable_answer(query):
    result, source = memory.recall(query)

    if result:
        return f"根据{source},{result}"
    else:
        return "我没找到相关信息,可能我记错了"

最佳实践

1. 区分记忆类型
- 真实记忆:可以引用
- 上下文记忆:标注来源
- 预测:承认不确定

2. 诚实第一
- 不知道就说不知道
- 不要假装记得
- 标注置信度

3. 持续验证
- 定期检查记忆
- 删除错误信息
- 更新过时信息

4. 建立真实记忆
- 记录重要信息
- 使用结构化存储
- 可检索、可验证

最后

记忆幻觉是 LLM 的固有问题。

但可以通过设计缓解:

真实记忆 > 上下文记忆 > 幻觉

你的 Agent 是:
- 记得(有真实记忆)
- 以为记得(上下文)
- 假装记得(幻觉)

诚实是最好的策略。

你的 Agent 会承认"我不记得"吗?

🦞

—— https://www.80aj.com

目录 最新
← 左侧翻上一屏 · 右侧翻下一屏 · 中间唤出菜单