记忆管理 UI 与 API
记忆管理界面与 API
相关源文件
本章引用的主要源码文件:
api/apps/restful_apis/memory_api.pyapi/apps/services/memory_api_service.pyapi/db/services/memory_service.pyapi/utils/memory_utils.pytest/testcases/test_web_api/test_memory_app/conftest.pytest/testcases/test_web_api/test_memory_app/test_create_memory.pytest/testcases/test_web_api/test_memory_app/test_list_memory.pytest/testcases/test_web_api/test_memory_app/test_rm_memory.pytest/testcases/test_web_api/test_memory_app/test_update_memory.pyweb/src/components/memories-form-field.tsxweb/src/components/webhook-response-status.tsxweb/src/hooks/use-memory-request.tsweb/src/interfaces/database/memory.tsweb/src/pages/agent/form/begin-form/webhook/response.tsxweb/src/pages/agent/form/message-form/index.tsxweb/src/pages/agent/form/message-form/use-show-response-status.tsweb/src/pages/dataset/dataset/reparse-dialog.tsxweb/src/pages/dataset/dataset/use-run-document.tsweb/src/pages/dataset/process-log-modal.tsxweb/src/pages/memories/add-or-edit-modal.tsxweb/src/pages/memories/constants/index.tsxweb/src/pages/memories/hooks.tsweb/src/pages/memories/interface.tsweb/src/pages/memory/memory-message/hook.tsweb/src/pages/memory/memory-message/index.tsxweb/src/pages/memory/memory-message/interface.tsweb/src/pages/memory/memory-message/message-table.tsxweb/src/pages/memory/memory-setting/advanced-settings-form.tsxweb/src/pages/memory/memory-setting/hook.tsweb/src/pages/memory/memory-setting/index.tsxweb/src/pages/memory/memory-setting/memory-model-form.tsxweb/src/services/memory-service.ts
RAGFlow 中的记忆系统为智能体交互提供了持久化的长期存储,超越了简单的基于会话的历史记录。本文档记录了 REST API 端点、前端管理界面以及用于维护和检索不同类型记忆(原始记忆、语义记忆和程序记忆)的配置机制。
1. 记忆管理 API
后端提供了一套全面的 REST API,用于管理记忆实体及其包含的消息。这些 API 通过 memory_api 模块 api/apps/restful_apis/memory_api.py:1-25 实现了对多层记忆系统的编程式访问。
1.1 记忆实体端点
这些端点管理记忆"桶"的元数据和配置。
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /memories | 使用特定的大语言模型(LLM)和嵌入向量模型创建新的记忆实体 api/apps/restful_apis/memory_api.py:29-32。 |
GET | /memories | 列出当前租户的所有记忆,支持分页和关键字过滤 api/apps/restful_apis/memory_api.py:129-139。 |
PUT | /memories/<memory_id> | 更新记忆配置,包括提示词、遗忘策略和温度参数 api/apps/restful_apis/memory_api.py:90-93。 |
DELETE | /memories/<memory_id> | 删除一个记忆及其所有关联的消息 api/apps/restful_apis/memory_api.py:115-117。 |
GET | /memories/<memory_id>/config | 获取指定记忆 ID 的具体配置 api/apps/restful_apis/memory_api.py:146-148。 |
1.2 消息操作
这些端点允许对特定记忆中存储的数据进行细粒度控制。
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /memories/<memory_id> | 检索记忆中的消息,可按 agent_id 和 keywords 过滤 api/apps/restful_apis/memory_api.py:160-174。 |
PUT | /memories/message/<message_id> | 更新特定消息的状态(启用/禁用)api/apps/restful_apis/memory_api.py:184-186。 |
DELETE | /memories/message/<message_id> | 按 ID "遗忘"特定消息 api/apps/restful_apis/memory_api.py:202-204。 |
数据流:从 API 到服务层
下图展示了从 REST 层到服务层的转换过程。
记忆 API 序列
来源:api/apps/restful_apis/memory_api.py:29-63、api/apps/services/memory_api_service.py:75-114、api/db/services/memory_service.py:115-151
2. 前端记忆界面
记忆管理的前端界面提供了一个集中式中心,用于配置记忆行为和审计存储的数据。
2.1 记忆配置界面
配置页面 web/src/pages/memory/memory-setting/index.tsx 允许用户定义智能体如何学习和遗忘:
- 基本信息:名称、头像和描述
web/src/pages/memory/memory-setting/index.tsx:53-55。 - 模型选择:用户指定
embd_id(嵌入向量模型)和llm_id(聊天模型)web/src/pages/memory/memory-setting/index.tsx:51-52。 - 记忆类型:支持多种并发类型:
semantic(语义)、raw(原始)和procedural(程序)web/src/pages/memory/memory-message/interface.ts:3。 - 高级设置:
- 权限:控制访问级别,例如"仅自己"或"团队"
web/src/pages/memory/memory-setting/advanced-settings-form.tsx:67-72。 - 存储类型:定义底层结构,当前支持
table(表)web/src/pages/memory/memory-setting/advanced-settings-form.tsx:85。 - 遗忘策略:清除旧记忆的逻辑,支持
FIFO(先进先出)web/src/pages/memory/memory-setting/advanced-settings-form.tsx:100。 - 提示词:在记忆提取过程中大语言模型(LLM)使用的可自定义
system_prompt(系统提示词)和user_prompt(用户提示词)web/src/pages/memory/memory-setting/advanced-settings-form.tsx:137-158。 - 温度参数:控制大语言模型(LLM)处理记忆时的随机性
web/src/pages/memory/memory-setting/advanced-settings-form.tsx:119-122。
2.2 消息表格(记忆浏览器)
MemoryTable 组件提供了存储消息的详细视图 web/src/pages/memory/memory-message/message-table.tsx。
| 列名 | 代码引用 | 描述 |
|---|---|---|
| 会话 ID | accessorKey: 'session_id' | 按聊天会话对消息进行分组 web/src/pages/memory/memory-message/message-table.tsx:127。 |
| 智能体 | accessorKey: 'agent_name' | 标识生成该记忆的智能体 web/src/pages/memory/memory-message/message-table.tsx:173。 |
| 类型 | accessorKey: 'message_type' | 显示记忆是原始、语义还是程序类型 web/src/pages/memory/memory-message/message-table.tsx:182。 |
| 启用/禁用 | accessorKey: 'status' | 一个开关,用于手动切换记忆是否在检索时处于活动状态 web/src/pages/memory/memory-message/message-table.tsx:217-224。 |
| 遗忘时间 | accessorKey: 'forget_at' | 指示根据策略何时清除记忆 web/src/pages/memory/memory-message/message-table.tsx:203。 |
来源:web/src/pages/memory/memory-setting/index.tsx:1-114、web/src/pages/memory/memory-message/message-table.tsx:124-235、web/src/pages/memory/memory-setting/advanced-settings-form.tsx:12-163
3. 实现与数据流
3.1 代码实体映射
此图将 UI 组件映射到对应的后端服务类和数据库交互。
UI 到代码实体映射
来源:api/apps/restful_apis/memory_api.py:25、api/apps/services/memory_api_service.py:18-25、web/src/pages/memory/memory-setting/index.tsx:20-25、api/db/services/memory_service.py:28-30
3.2 约束与校验
系统在记忆管理过程中强制执行多项技术约束:
- 命名:记忆名称长度有限制,且不能为空或仅包含空白字符
api/apps/services/memory_api_service.py:87-92。 - 大小:最大存储大小受
MEMORY_SIZE_LIMIT限制api/apps/services/memory_api_service.py:165-166。 - 校验:前端使用
zod和react-hook-form确保必填字段(如记忆类型和模型)已被选择web/src/pages/memory/memory-setting/index.tsx:30-44。 - 智能体配置:在智能体画布中,
MessageForm允许用户通过memory_ids选择要保存到的记忆web/src/pages/agent/form/message-form/index.tsx:45。
3.3 任务执行
保存到记忆涉及索引和提取的后台任务。
- 任务状态:界面使用
ProcessLogModal显示记忆任务的处理日志和进度web/src/pages/memory/memory-message/message-table.tsx:111-122。 - 提取逻辑:记忆提取通过
queue_save_to_memory_task排队,并使用设置中定义的提示词api/apps/services/memory_api_service.py:22。 - 手动切换:用户可以更新消息的
status,将其从未来的检索中排除,而无需删除数据web/src/pages/memory/memory-message/message-table.tsx:223-228。
来源:api/apps/services/memory_api_service.py:75-114、web/src/pages/memory/memory-setting/index.tsx:48-65、web/src/pages/memory/memory-message/message-table.tsx:68-76、web/src/pages/dataset/process-log-modal.tsx:85-110