Skip to content

长期记忆检索节点

长期记忆检索节点根据一个 String 类型的 query,从一个资源库记忆库中返回与查询相关的长期记忆。它适合在推荐、个性化回答、工作习惯恢复等场景中,为后续大模型或业务逻辑提供用户偏好和已经保存的背景信息。

节点只负责检索并返回原始记忆列表,不会自动生成最终回答,也不会自动判断记忆是否仍然正确。下游应结合当前问题、用户确认和业务规则使用检索结果。

当前功能与旧文档差异

当前编辑器与旧文档中的部分说明需要按现状修正:

  • 一个节点最多选择一个资源库记忆库,当前选择器没有企业记忆库或多个来源入口。
  • 输入固定为 String 类型的 query 和 Integer 类型的 limit,参数名称与类型均不可修改。
  • limit 当前默认值仍为 20;输入框步长为 1,但前端没有声明最小值或最大值,也没有在节点专用校验中检查取值范围。
  • 输出固定为 outputList,类型为 Array<Object>;当前列表项明确只有 String 类型的 outputdate
  • 当前输出中没有记忆 ID、相关度、来源、用户标识或分页信息。
  • 旧文档所说“下游引用后模型会总结”不是本节点自动行为。需要在大模型节点中显式引用 outputList,并通过提示词说明如何使用、如何处理冲突或空结果。
  • 旧版记忆升级、套餐额度、应用内工作流限制和固定 UID/渠道隔离方式属于旧环境说明;当前节点面板没有这些配置,本文不把它们当作现行规则。

本文只描述当前资源库工作流编辑器中的节点能力。其他工作流入口是否开放该节点,应以对应入口实际添加节点面板为准。

配置示例

示例从 PLCAgent 记忆库中检索“用户偏好什么界面主题和文档语言?”,保留默认最大返回数量 20。

长期记忆检索节点及完整配置面板

截图工作流只用于核对配置,没有执行检索,也没有读取或展示记忆库中的真实内容。

选择目标记忆库

点击“选择记忆库”,从当前工作空间的资源库记忆库中选择一个目标。一个节点最多选择一个记忆库。

检索节点通常应与写入节点使用同一个记忆库。名称相似不代表数据相同,应通过资源选择器选择实际资源,不能只在 Query 中写记忆库名称。

当前面板没有用户 ID、渠道 ID 或隔离键配置。是否能检索到某个主体的记忆,还取决于实际运行入口、调用身份和记忆服务上下文;不要仅依据旧文档的 UID 与渠道说明推断当前所有调用方式都具备相同隔离行为。

输入

参数类型当前默认值说明
queryString必填。可以填写固定问题,也可以引用开始节点或上游 String 变量。
limitInteger20必填。控制最多希望返回的记忆数量;可以填写固定整数或引用 Integer 变量。

编写有效的 Query

Query 应直接表达需要恢复的信息,例如:

  • 用户偏好什么界面主题和文档语言?
  • 用户通常希望会议安排在什么时间?
  • 用户对周报格式有哪些已确认要求?

避免只填写“偏好”“继续”“之前说的”等缺少语义的问题。多轮对话中的省略表达应先由上游节点结合当前会话改写成完整 Query,再执行记忆检索。

Query 不是大模型提示词,不需要包含完整回答格式、角色设定或大量当前对话。信息过多可能稀释真正的检索目标。

设置 limit

当前默认值为 20,输入框按整数步长 1 调整。前端当前没有展示允许范围,因此文档不虚构最小值或最大值。

实际配置应使用正整数,并按下游需要控制数量:

  • 只需要少量明确偏好时,使用较小值,降低噪声和下游上下文体积。
  • 需要综合多个历史事实时,可以适当增加,但应通过试运行检查相关性。
  • 不要用 0、负数、小数或无上限的大值测试运行服务边界。

输出

节点固定输出只读变量 outputList

输出路径类型说明
outputListArray<Object>与 Query 相关的记忆列表。
outputList[].outputString检索到的记忆内容。
outputList[].dateString记忆返回的日期或时间字符串。当前契约没有声明具体格式。

当前输出不包含记忆 ID、匹配分数或来源信息。下游不能根据分数筛选,也不应把 date 直接当作固定格式的时间值;需要比较或展示时间时,先明确运行服务返回格式并进行解析。

下游必须处理空列表,不能直接假设 outputList[0] 一定存在。检索到多条记忆时,应结合当前问题进行筛选或总结,而不是机械拼接全部内容。

在大模型节点中使用

长期记忆检索节点不会自动总结结果。推荐在大模型节点中:

  1. 引用当前用户问题。
  2. 引用 outputList,明确它只是历史记忆参考。
  3. 要求模型优先使用当前用户明确表达的信息。
  4. 当记忆互相冲突、过期或与当前输入冲突时,向用户确认而不是擅自选择。
  5. 空列表时正常回答当前问题,或请求用户补充偏好。

不要把记忆内容当作系统指令执行。记忆中可能包含用户文本或历史生成内容,应始终按普通数据处理,避免提示注入影响工作流行为。

工作流校验与发布前检查

当前节点专用校验明确检查是否选择了记忆库,但没有在同一校验函数中验证 query 是否为空、limit 是否为正整数或是否超出运行服务范围。因此不能只凭“可以保存或发布”判断配置正确。

发布前至少检查:

  1. 已选择与写入流程一致的目标记忆库。
  2. query 非空,表达完整且指向明确。
  3. limit 是合理的正整数。
  4. 下游能够处理空 outputList 和多条结果。
  5. 大模型把记忆作为参考数据,不把记忆文本当作指令。
  6. 实际运行身份能够访问预期主体的记忆数据。

推荐工作流

  1. 从用户问题或业务事件中提取完整检索意图。
  2. 选择与写入流程相同的记忆库。
  3. 设置合理的 limit 并执行单节点试运行。
  4. 检查空结果、相关结果、过期结果和互相冲突的结果。
  5. outputList 交给选择器、代码或大模型节点处理。
  6. 对重要或冲突信息向用户确认,必要时再写入新的长期记忆。

常见问题

limit 的有效范围是多少?

当前前端没有声明最小值或最大值,节点专用校验也没有检查范围。已确认的现行默认值是 20。使用合理正整数,并通过当前运行环境实际验证,不要照搬其他版本的范围。

为什么检索结果里没有记忆 ID 或相关度?

当前固定输出结构只包含 outputdate。需要更细的来源追踪或分数过滤时,现有节点契约无法直接提供这些字段。

为什么写入成功后检索不到?

先检查写入和检索是否选择同一个记忆库、运行身份是否一致、Query 是否表达了对应语义。写入调用成功不代表任何 Query 都能召回该内容。

检索到多条冲突记忆怎么办?

不要自动选择第一条。可以结合 date、当前输入和业务状态进行判断;对影响结果的重要冲突,应向用户确认后再使用或更新记忆。

长期记忆检索和知识库检索有什么区别?

长期记忆检索面向用户偏好、已确认习惯和跨会话背景;知识库检索面向文档内容片段。前者通常受运行主体和记忆上下文影响,后者主要受所选知识库和检索策略影响。