Skip to content

记忆检索与调试

记忆检索与调试界面是 Snail AI 记忆系统的核心运维工具,帮助管理员搜索、预览、调试记忆的检索效果,并对记忆条目进行手动管理操作。

进入检索与调试

在「记忆系统」管理页面中,点击任意记忆库卡片,即可进入该记忆库的检索与调试界面。界面以全屏抽屉形式打开,分为左右两个区域:

区域位置功能
参数与配置面板左侧(宽 360px)设置检索参数和调整检索配置
搜索与结果区域右侧输入查询、执行搜索、查看检索结果

记忆搜索

搜索参数

在左侧的参数面板中,需要设置以下检索参数:

参数必填说明
当前记忆库自动显示当前选中的记忆库名称和 ID
Agent ID目标智能体的 ID,用于限定搜索范围
User ID目标用户的 ID,用于限定搜索范围
Conversation ID可选的对话 ID,进一步缩小搜索范围到特定对话

执行搜索

  1. 在左侧面板中填写 Agent ID 和 User ID。
  2. 在右侧的搜索框中输入查询文本(例如"用户的数据库选择")。
  3. 点击「搜索」按钮或按 Enter 键执行搜索。
  4. 系统将调用记忆调试接口(/memory/config/{id}/debug),使用当前记忆库的配置参数进行向量检索。

搜索结果

搜索结果以卡片列表形式展示,每条结果包含:

  • 排名序号:结果在返回列表中的位置。
  • 相似度评分:语义相似度分数(百分比形式,如 85.3%)。
  • 记忆类型:FACT/DECISION/PREFERENCE/TASK_PROGRESS/REFERENCE。
  • 记忆标题:记忆条目的标题。
  • 记忆内容:记忆条目的完整内容。

调试建议

  • 尝试不同的查询措辞,观察检索结果的变化,评估记忆的语义覆盖度。
  • 如果关键记忆未被召回,考虑调整相似度阈值或切换融合策略。
  • 检查返回结果的相似度分数分布,帮助确定合理的阈值设置。

检索配置实时调整

在左侧面板的下方,可以实时调整检索配置参数。这些参数会自动同步保存到后端(防抖 450ms),调整后立即对下一次搜索生效。

可调参数

参数说明范围
最大召回数每次检索最多返回的记忆条数1-100
查询改写是否对查询语句进行改写优化后再检索开/关
融合策略混合检索的融合方法RRF / 加权求和
RRF K 值RRF 融合的 K 参数(仅 RRF 策略时显示)1-200
稠密向量权重向量检索的权重(仅加权求和策略时显示)0-1
启用阈值过滤是否启用相似度阈值过滤开/关
相似度阈值低于此值的记忆将被过滤(仅启用阈值时显示)0-1
启用重排序是否使用 Rerank 模型重排序开/关
重排序模型选择 RERANKER 类型的模型(仅启用重排序时显示)下拉选择
进入重排序数量送入 Rerank 模型的候选数量(仅启用重排序时显示)1-500

自动保存

检索配置的修改会自动同步保存到服务端。面板右上角会显示"同步中..."状态提示。这意味着你在此处的调整不仅影响当前调试,也会影响智能体在实际对话中的记忆检索行为。

上下文预览

上下文预览功能展示智能体在实际对话中收到的完整上下文信息,帮助你理解记忆是如何被注入到对话中的。

通过 API 接口 GET /memory/agent/{agentId}/conversations/{conversationId}/context-preview 可以获取上下文预览数据。

预览内容

上下文预览返回以下信息:

字段说明
messages滑动窗口中的对话消息列表,每条包含角色(user/assistant)和内容
memories通过向量检索召回的记忆列表
estimatedTokens完整上下文的预估 Token 数
compressionApplied是否应用了上下文压缩

上下文预览有助于:

  • 确认记忆是否按预期被注入到上下文中。
  • 评估 Token 消耗,判断是否需要调整滑动窗口大小或最大召回数。
  • 验证上下文压缩策略是否正确工作。

手动记忆管理

除了自动提取,管理员还可以对记忆进行手动管理操作。

按对话查看记忆

通过 API 接口 GET /memory/conversation/{conversationId} 可以查看特定对话产生的所有记忆,支持 limit 参数控制返回数量。

按类型查看记忆

通过 API 接口 GET /memory/agent/{agentId} 可以查看智能体的所有记忆,支持按类型过滤:

类型说明
FACT事实类记忆
DECISION决策类记忆
PREFERENCE偏好类记忆
TASK_PROGRESS任务进度类记忆
REFERENCE参考资料类记忆

查看最近记忆

通过 API 接口 GET /memory/agent/{agentId}/recent 可以查看最近一段时间内创建的记忆,支持 dayslimit 参数。

关键词搜索

通过 API 接口 POST /memory/search 可以使用关键词搜索记忆:

json
{
  "query": "数据库选型",
  "agentId": 1,
  "types": ["FACT", "DECISION"],
  "limit": 10,
  "days": 30
}

状态管理操作

对单条记忆可以执行以下状态变更操作:

操作API 接口说明
归档POST /memory/{id}/archive将活跃记忆归档,不再参与自动检索
压制POST /memory/{id}/suppress压制/屏蔽记忆,完全不参与检索
激活POST /memory/{id}/activate重新激活已归档或已压制的记忆
更新PUT /memory/{id}修改记忆的标题、内容、类型、标签等属性
删除DELETE /memory/{id}永久删除记忆

典型使用场景

  • 归档:对话中产生的临时性信息(如短期任务进度),任务完成后归档。
  • 压制:提取出的记忆信息有误或不再准确时,进行压制。
  • 激活:之前归档的记忆重新变得相关时,重新激活。

手动提取记忆

通过 API 接口 POST /memory/agent/{agentId}/conversations/{conversationId}/extract 可以对特定对话手动触发记忆提取,无需等待自动提取间隔。

返回结果包含:

字段说明
extractedCount本次提取的记忆条数
memories提取出的记忆条目列表

记忆统计

通过 API 接口 GET /memory/agent/{agentId}/stats 可以查看智能体的记忆统计信息:

字段说明
totalMemories记忆总数
byType按类型分布统计
mostUsed被访问次数最多的记忆 ID 列表
retrievalEffectiveness检索有效性评分
dateRange统计的时间范围

调试最佳实践

  1. 从典型查询开始:使用用户最常问的问题作为检索查询,验证记忆是否能有效覆盖。
  2. 对比不同配置:通过实时调整检索参数,对比不同配置下的召回效果。
  3. 关注长尾场景:除了常见查询,也要测试边缘场景的检索质量。
  4. 监控 Token 消耗:通过上下文预览评估 Token 使用情况,避免过多记忆注入导致上下文溢出。
  5. 定期清理:对已过时或不准确的记忆进行归档或压制,保持记忆库的质量。

Apache 2.0 Licensed