跳到主要内容

常见问题 FAQ

七天实战

边学边练请访问 7 天学会 Memory Engineering:首页记忆分层可视化、/learn 七天课表、/lab 五个本地沙盒、社区与资源矩阵。

本文按主题组织真实工程问答。每条回答尽量包含为什么会这样怎么处理,避免一句话打发。

概念与边界

Q1. Memory Engineering 和 RAG 有什么区别?

答: RAG 通常面向相对静态的知识库问答:文档切块、检索、生成。Memory Engineering 面向 Agent 生命周期:对话与工具轨迹会持续写入,需要门禁、冲突合并、遗忘、跨会话个性化与多租户治理。

你可以做 RAG 而不做完整记忆工程;但做长期 Agent 时,只上「文档向量库」往往不够——还要处理偏好 KV、会话摘要、程序策略与评测。详见 入门介绍

Q2. 上下文窗口越来越大,还需要外挂记忆吗?

答: 需要。原因不只是「装不下」:

  1. 成本:每次把全年聊天塞进提示,账单与延迟线性恶化。
  2. 噪声:旧闲聊稀释当前任务。
  3. 隐私:敏感历史反复暴露在提示与日志中。
  4. 治理:无法按条删除、审计、衰减。

长窗口是 Working 的扩容,不是 LTM 的替代。正确用法是:窗口内放「此刻该激活」的内容,外存放可检索资产。

Q3. 情景 / 语义 / 程序 / 偏好一定要四张表吗?

答: 逻辑上要分,物理上可同库不同 kind 字段。分开的价值是:检索策略与权限不同。例如偏好要高优先级精确读;情景要时间衰减;程序要版本管理;语义要冲突检测。混成无类型大杂烩,三个月后无法调参。

Q4. 「程序记忆」是不是就是 System Prompt?

答: System Prompt 是程序记忆的运行时投影,不是全部。完整程序记忆还包括工具定义版本、成功/失败策略、Reflexion 模板、可灰度的技能包。Prompt 应能从程序记忆生成,并支持回滚。

上下文工程

Q5. 滑动窗口丢了早期关键信息怎么办?

答: 窗口负责连贯,不负责永久保存。关键信息应在写入门禁时进入 LTM(或会话结束摘要)。若已丢失:从日志回放重建摘要;并补规则——含「决定 / 约束 / 凭证变更」的 Turn 强制入库。

Q6. Token 预算比例 20/60/20 能照搬吗?

答: 只能当起点。工具密集 Agent 常需增大 Retrieved;强人设助手增大 System 中的画像锚点。用评测集扫一圈比例,看 Faithfulness 与用户满意度,而不是拍脑袋。

Q7. 摘要后 Agent「记错了」,是谁的锅?

答: 常见因果链:生成式摘要幻觉 → 摘要被当事实写入 → 下一轮当证据引用。处理:

  1. 摘要旁路保存 source_turn_ids
  2. 高关键断言用抽取式或结构化槽位。
  3. 用户可纠正;纠正触发旧摘要作废。

Q8. LangGraph Checkpointer 算长期记忆吗?

答: 主要是线程状态持久化(STM/工作流)。跨线程画像、语义检索、遗忘合规仍要 LTM 组件。详见 GitHub 项目

向量检索

Q9. 相似度很高但答案仍错,为什么?

答: 相似 ≠ 相关 ≠ 正确 ≠ 当前任务可用。补齐:元数据过滤、时间衰减、重排、权限、矛盾检测。只调阈值解决不了「检对了但过期」的问题。

Q10. 该选 Chroma、Qdrant 还是 Milvus?

答: 原型与本地:Chroma 足够。需要强过滤/混合与中等规模生产:Qdrant 常被选。超大规模与云原生运维:评估 Milvus。先用适配层,避免业务代码绑死客户端。对照实验方法见生态导读文。

Q11. 换 Embedding 模型后检索变差?

答: 向量空间不可混用。必须重建索引,并在元数据标注 embedding_version。双跑旧新集合对比 Recall,再切流量。

Q12. HNSW 参数怎么调?

答: 一次只改一个:先 efSearch 看延迟-召回曲线,再考虑 M。没有冻结评测集就调参,等于随机游走。见 开发指南

Q13. 要不要上 HyDE?

答: 开放域文档问答有时有效;用户记忆场景风险更大——假设文档可能写入错误实体。优先共指消解与查询扩展;HyDE 放实验开关。

知识图谱

Q14. 有了向量还要图谱吗?

答: 向量擅长模糊召回;图谱擅长关系与多跳约束(「同项目且未关闭的风险」)。中小产品可先 KV+向量;出现大量关系问题再上图,避免一上来运维两套重系统。

Q15. 图谱里事实打架怎么办?

答: 不要静默覆盖。用 valid_to 关闭旧边、降置信度、向用户澄清。冲突本身应可查询,便于审计。

Q16. 实体链接错了会怎样?

答: 错误边会污染多跳推理。落地:低置信链接进隔离区;人工或二次校验后晋升;检索时限制置信阈值。

多 Agent

Q17. 多 Agent 共用一个 Memory 集合可以吗?

答: 可以共用服务,不可以无命名空间共用可写集合。至少分层:全局只读 / 团队 / 个人。写入用协议(投票或权威),否则谣言放大器。见 最佳实践

Q18. 联邦记忆的摘要会不会泄漏隐私?

答: 会,如果摘要含 PII 或可重识别细节。共享前跑脱敏与策略检查;默认共享「聚合洞察」而非原文;敏感域禁止出域。

Q19. 测试 Agent 如何避免污染生产记忆?

答: 独立 tenant_id 或独立集群;禁止测网凭证访问生产 collection;CI 使用一次性命名空间并在结束时销毁。

生产与架构

Q20. 什么时候该拆 Memory Service?

答: 出现多个运行时共用记忆、需要独立扩容/限流、或合规要求审计集中时拆。单 Bot 原型阶段模块化即可,但接口先按服务边界设计,避免将来挖肉。

Q21. L1–L4 每一层都必须上吗?

答: 逻辑分层必须有;物理上可合并。例如早期 L2 与进程内缓存合一,L4 用本地磁盘。等 QPS 与合规要求上来再拆 Redis/对象存储。

Q22. 如何证明「已删除」?

答: 记录删除请求、索引清理任务完成时间、抽检查询为空;冷层若法律保留,应不可被默认检索路径触达。forget_lag 纳入 SLO。

Q23. 记忆导致幻觉,如何归因?

答: 日志中记录注入的 memory_ids 与原文。若回答声称的事实不在注入集,是模型幻觉;若在注入集但内容错,是记忆质量/过期问题。两者修复路径完全不同。

合规与安全

Q24. 用户说「忘掉我说过的一切」怎么做?

答: 产品应提供 forget:按 user_id 删除热温索引,冷层按政策匿名或延期销毁,并返回工单号。仅回复「好的」却继续检索,是合规事故。

Q25. 如何防止提示注入污染记忆?

答: 分通道存储用户话与工具输出;写入分类器拒绝「忽略指令/导出密钥」类模式;仅用户显式「请记住」提升置信;管理员操作走另一鉴权路径。

Q26. 能否用用户记忆训练模型?

答: 默认不能。需独立同意、脱敏、法律评估。工程上 Memory 存储与训练语料桶分离,避免误用导出脚本。

学习路径

Q27. 七天课表如何与本站文档对应?

Day主题文档
1–2认知与上下文快速开始
2–5写读路径与压缩开发指南
生态开源选型GitHub 项目
6–7多 Agent 与生产最佳实践
大作业端到端从零到一

Q28. 实验室 /lab 和文档什么关系?

答: 文档给模型与清单;实验室给直觉(Token 仪表盘、检索对比、质量分析、多 Agent 模拟)。先文档后动手,或对着实验现象回查文档,效率最高。

Q29. 巩固任务把闲聊写成「用户信念」怎么办?

答: 说明可信度函数过松或提示未要求「可验证」。修复:提高门槛;要求信念必须引用 source_ids;对无用户确认的推断默认 confidence≤0.4 进隔离区。定期抽检隔离区,比抽检已上线 LTM 更便宜。

Q30. 多设备同步记忆会冲突吗?

答: 会。手机与桌面同时改「语气偏好」时,应用向量钟或 updated_at+权威设备策略,并在 UI 提示冲突。同步的是 Memory Service 中的权威状态,不是各端私有 JSON 互拷。离线队列上线后重放要走同一写路径门禁。

Q31. 为什么「请记住」有时记住了有时没有?

答: 常见原因:门禁关键词过窄、异步写入尚未可检索、检索过滤掉了 kind、或 Working 预算把 Retrieved 裁掉。排障顺序:写日志是否 accept → 按 id get 是否存在 → search 是否命中 → pack 是否注入。

Q32. 程序记忆更新后旧会话还在用旧策略?

答: 程序记忆要有版本号;运行时启动或按 turn 加载 skill_version。旧 thread 可钉死版本以保持可复现调试;新 thread 用最新版。这与「提示词随缘粘贴」不同,是可发布的技能制品。

排障速查表

症状先查再查
完全不记得写路径 accept 日志租户过滤、异步延迟
记错人user_id 是否串集合是否共用
又贵又慢注入 token 分布重排候选数、巩固频率
突然变傻embedding/schema 版本摘要是否覆盖事实
合规投诉删不掉forget 任务队列冷层是否仍被检索

仍未覆盖?

到子站 社区 提问时请附:架构草图、是否多租户、embedding 版本、最小复现对话。记忆问题没有这些上下文,几乎无法诊断。