先这样答
用户长期偏好不应该全部塞进 Prompt。应该按用途拆分存储。稳定偏好,例如称呼和格式习惯,放在关系数据库里。会话开始时,再把这些偏好注入上下文。这样可以让模型知道用户的固定要求,也避免每次都把所有历史内容放进 Prompt。
语义记忆,例如用户的兴趣和历史决策,适合向量化存储。需要使用时,通过检索找到相关记忆,再提供给模型。它不需要在每轮对话开始时全部加载。这样能把长期信息和当前问题分开处理。
动态上下文才进入 Prompt。它包括当前对话中正在处理的信息,以及本轮真正需要参考的记忆。敏感字段要单独加密存储。删除时要提供接口级联处理:关系库删除记录,向量库删除对应 embedding,同时让缓存失效。核心判断是按用途选择存储位置,而不是把 Memory、关系库和向量库当成互相替代的选项。
面试官会怎么追问
-
「为什么稳定偏好不直接放进向量库?」 稳定偏好具有明确字段和固定用途,适合放在关系数据库里。会话开始时读取并注入,比通过语义检索寻找称呼或格式习惯更直接。
-
「语义记忆什么时候才应该放进 Prompt?」 只有当前问题需要相关记忆时,才通过检索取出并放进 Prompt。语义记忆本身放在向量库里,不应该把全部历史兴趣和决策长期堆在 Prompt 中。
-
「用户要求删除敏感信息时,你会怎么处理?」 删除接口需要同时处理不同存储位置。关系库删记录,向量库删 embedding,缓存也要失效,不能只删其中一处。
回答的坑
- 把所有长期信息都放进 Prompt,会把存储和上下文使用混在一起,属于反模式。
- 只删除关系库记录,却保留向量库中的 embedding 或缓存,会导致敏感信息仍可能被检索或使用。
同系列的题
这家公司的面经实录
相关深度笔记
—— 本题完 ——