真实面经题目 · 原创解析
Agent 如何从对话中更新向量记忆库里的用户画像,避免脏记忆、过期记忆和隐私风险?
这题考 Agent 长期记忆的写入路径:从对话提取用户画像不能直接整段入库,而要做候选抽取、确认、结构化、去重、过期、隐私过滤和可撤回治理。
真实面经题目 · 原创解析
这题考 Agent 长期记忆的写入路径:从对话提取用户画像不能直接整段入库,而要做候选抽取、确认、结构化、去重、过期、隐私过滤和可撤回治理。
从对话更新向量记忆库里的用户画像,我会设计成一条受控写入链路,而不是把对话原文直接 embedding 入库。第一步是候选抽取:从用户明确表达或高置信行为中抽取可长期复用的信息,例如偏好、长期目标、常用环境、语言风格、禁忌和稳定属性;临时情绪、一次性任务、模型推断和敏感信息不能默认写入。第二步是分类和置信度:区分用户显式声明、系统观察、模型推测和第三方信息,并给每条记忆记录来源、时间、置信度、作用域和过期策略。第三步是确认机制:高影响或敏感画像要用户确认,低风险偏好可以先作为候选记忆,在多次对话一致后提升置信度。第四步是存储结构:不要只存一段向量文本,还要存结构化字段、用户 ID 或租户隔离键、记忆类型、版本、TTL、来源 trace、可删除标记和 embedding。第五步是更新策略:新记忆要和旧记忆做相似度去重、语义冲突检测和版本合并;过期记忆要降权或删除,冲突记忆要保留新旧来源并等待确认。最后是隐私和安全:敏感信息最小化、加密、访问控制、用户可查看和撤回、不要跨用户召回,并在生成时只召回与当前任务相关且未过期的画像。评估要看画像准确率、脏记忆率、过期召回率、用户纠错率、隐私投诉和召回后任务收益。
对话里并不是所有内容都应该进入用户画像。适合写入的是稳定、可复用、用户明确表达或多次一致出现的信息,例如偏好、长期目标、工作环境、常用格式和明确禁忌。不适合默认写入的是一次性指令、临时情绪、模型猜测、未经确认的敏感属性和与当前任务无关的闲聊。
抽取层可以把对话转成候选记忆,但每条候选都要标记来源类型:用户显式声明、行为观察、工具结果、模型推测或历史合并。不同来源对应不同置信度和确认策略。比如“我以后都想用中文回答”比“用户可能喜欢简短风格”更适合作为高置信偏好。
只把一句话 embedding 入库会让后续治理很困难。更好的记录包含 memoryId、userId 或 tenantId、类型、文本、结构化槽位、embedding、来源 trace、时间、版本、置信度、TTL、敏感等级、可见范围和删除状态。向量用于语义召回,结构化字段用于过滤、冲突处理、权限和生命周期管理。
新候选写入前要和已有画像做相似度匹配和字段比对。相同偏好可以合并并提升置信度;更具体的信息可以覆盖泛化信息;冲突信息不能静默覆盖,要记录新旧来源、时间和置信度,必要时向用户确认。比如用户曾说喜欢长答案,后来明确说当前只要简短回答,应区分全局偏好和当前会话约束。
脏记忆通常来自误抽取、模型脑补、提示注入、过度泛化和把一次性任务当长期偏好。过期记忆来自用户偏好变化、项目结束或环境变化。治理手段包括写入阈值、用户确认、TTL、衰减权重、用户纠错入口、定期重评估、黑名单字段和删除传播。召回时也要过滤低置信、过期和不相关记忆。
用户画像涉及长期个人信息,必须做最小化存储、敏感字段过滤、加密、访问控制、租户隔离、可查看可删除和审计。向量库不能只靠向量相似度隔离用户,检索必须先按用户或租户过滤,再做语义召回。生成时也不能把无关画像强行注入上下文,避免隐私暴露和个性化过度。
因为会写入大量一次性任务、临时情绪、重复内容和敏感信息,召回时还会放大噪声。长期记忆需要筛选、结构化、置信度和生命周期管理。
通常两者结合。关系型或文档库保存结构化字段、权限、版本和生命周期,向量库保存可语义召回的记忆文本或片段。只用向量库会让过滤和治理变难。
区分显式声明和模型推测,推测类候选降低置信度,必要时要求用户确认。写入文本也要保留“不确定”状态,不能改写成确定画像。
先区分全局偏好和当前任务约束,再看时间、新来源可信度和用户显式程度。不能静默覆盖高影响记忆,必要时保留冲突记录并让用户确认。
可以看任务完成率、个性化采纳率、用户纠错率、脏记忆率、过期召回率、隐私投诉、召回命中质量和注入画像后的回答质量变化。