agentic_huge_data_base / wiki
页面 RAGFlow · 10.2 记忆管理 UI 与 API·DeepWiki 中文全文译文

10.2 · 记忆管理 UI 与 API(Memory Management UI and API)

复杂文档理解与引用检索 · 聚焦本章的模块关系、源码依据与实现要点。

项目RAGFlow 章节10.2 状态全文译文 模块接口与服务契约、界面与交互、配置治理、文档对象与元数据
源码线索
  • api/apps/restful_apis/memory_api.py
  • api/apps/services/memory_api_service.py
  • api/db/services/memory_service.py
  • api/utils/memory_utils.py
  • test/testcases/test_web_api/test_memory_app/conftest.py
  • test/testcases/test_web_api/test_memory_app/test_create_memory.py
  • test/testcases/test_web_api/test_memory_app/test_list_memory.py
  • test/testcases/test_web_api/test_memory_app/test_rm_memory.py
  • test/testcases/test_web_api/test_memory_app/test_update_memory.py
  • web/src/components/memories-form-field.tsx
模块标签
  • 接口与服务契约
  • 界面与交互
  • 配置治理
  • 文档对象与元数据
  • 系统架构

章节正文

记忆管理 UI 与 API

记忆管理界面与 API

相关源文件

本章引用的主要源码文件:

  • api/apps/restful_apis/memory_api.py
  • api/apps/services/memory_api_service.py
  • api/db/services/memory_service.py
  • api/utils/memory_utils.py
  • test/testcases/test_web_api/test_memory_app/conftest.py
  • test/testcases/test_web_api/test_memory_app/test_create_memory.py
  • test/testcases/test_web_api/test_memory_app/test_list_memory.py
  • test/testcases/test_web_api/test_memory_app/test_rm_memory.py
  • test/testcases/test_web_api/test_memory_app/test_update_memory.py
  • web/src/components/memories-form-field.tsx
  • web/src/components/webhook-response-status.tsx
  • web/src/hooks/use-memory-request.ts
  • web/src/interfaces/database/memory.ts
  • web/src/pages/agent/form/begin-form/webhook/response.tsx
  • web/src/pages/agent/form/message-form/index.tsx
  • web/src/pages/agent/form/message-form/use-show-response-status.ts
  • web/src/pages/dataset/dataset/reparse-dialog.tsx
  • web/src/pages/dataset/dataset/use-run-document.ts
  • web/src/pages/dataset/process-log-modal.tsx
  • web/src/pages/memories/add-or-edit-modal.tsx
  • web/src/pages/memories/constants/index.tsx
  • web/src/pages/memories/hooks.ts
  • web/src/pages/memories/interface.ts
  • web/src/pages/memory/memory-message/hook.ts
  • web/src/pages/memory/memory-message/index.tsx
  • web/src/pages/memory/memory-message/interface.ts
  • web/src/pages/memory/memory-message/message-table.tsx
  • web/src/pages/memory/memory-setting/advanced-settings-form.tsx
  • web/src/pages/memory/memory-setting/hook.ts
  • web/src/pages/memory/memory-setting/index.tsx
  • web/src/pages/memory/memory-setting/memory-model-form.tsx
  • web/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_idkeywords 过滤 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 序列

RAGFlow · 数据流:从 API 到服务层 · 图 1
RAGFlow · 数据流:从 API 到服务层 · 图 1

来源:api/apps/restful_apis/memory_api.py:29-63api/apps/services/memory_api_service.py:75-114api/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

列名代码引用描述
会话 IDaccessorKey: '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-114web/src/pages/memory/memory-message/message-table.tsx:124-235web/src/pages/memory/memory-setting/advanced-settings-form.tsx:12-163

3. 实现与数据流

3.1 代码实体映射

此图将 UI 组件映射到对应的后端服务类和数据库交互。

UI 到代码实体映射

RAGFlow · 3.1 代码实体映射 · 图 2
RAGFlow · 3.1 代码实体映射 · 图 2

来源:api/apps/restful_apis/memory_api.py:25api/apps/services/memory_api_service.py:18-25web/src/pages/memory/memory-setting/index.tsx:20-25api/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
  • 校验:前端使用 zodreact-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-114web/src/pages/memory/memory-setting/index.tsx:48-65web/src/pages/memory/memory-message/message-table.tsx:68-76web/src/pages/dataset/process-log-modal.tsx:85-110