agentic_huge_data_base / wiki
页面 RAGFlow · 10 记忆系统·DeepWiki 中文全文译文

10 · 记忆系统(Memory System)

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

项目RAGFlow 章节10 状态全文译文 模块系统架构、测试、发布与运维、界面与交互、文档对象与元数据
源码线索
  • api/apps/restful_apis/memory_api.py
  • api/apps/services/memory_api_service.py
  • api/db/joint_services/memory_message_service.py
  • api/db/joint_services/user_account_service.py
  • api/db/services/doc_metadata_service.py
  • api/db/services/memory_service.py
  • api/utils/memory_utils.py
  • common/doc_store/es_conn_base.py
  • common/doc_store/infinity_conn_base.py
  • conf/infinity_mapping.json
模块标签
  • 系统架构
  • 测试、发布与运维
  • 界面与交互
  • 文档对象与元数据
  • 存储与持久化

章节正文

记忆系统

记忆系统

相关源文件

以下文件为本维基页面的生成提供了上下文:

  • api/apps/restful_apis/memory_api.py
  • api/apps/services/memory_api_service.py
  • api/db/joint_services/memory_message_service.py
  • api/db/joint_services/user_account_service.py
  • api/db/services/doc_metadata_service.py
  • api/db/services/memory_service.py
  • api/utils/memory_utils.py
  • common/doc_store/es_conn_base.py
  • common/doc_store/infinity_conn_base.py
  • conf/infinity_mapping.json
  • conf/mapping.json
  • memory/services/messages.py
  • memory/utils/es_conn.py
  • memory/utils/infinity_conn.py
  • rag/utils/es_conn.py
  • rag/utils/infinity_conn.py
  • rag/utils/opensearch_conn.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
  • test/unit_test/rag/utils/test_opensearch_doc_meta.py

RAGFlow 中的记忆系统为智能体工作流提供了持久化、可搜索的存储层。与通常临时存在或受上下文窗口大小限制的标准对话历史不同,记忆系统将对话和提取的洞察视为结构化数据。它允许智能体维护长期状态,跨会话回忆过去的交互,并将信息组织到不同的认知类别中(例如,原始对话与语义事实)。

系统总览

记忆子系统通过将对话轮次映射到存储在专用索引中的向量可搜索文档,弥合了大语言模型(LLM)的"自然语言空间"与"代码实体空间"之间的鸿沟。

标题:记忆系统架构

RAGFlow · 系统总览 · 图 1
RAGFlow · 系统总览 · 图 1

来源: memory/services/messages.py:24-32, api/db/joint_services/memory_message_service.py:38-62, memory/utils/infinity_conn.py:31-33, memory/utils/es_conn.py:36-37

记忆类型与存储

RAGFlow 将记忆分为四种不同的类型,以优化智能体检索信息的方式:

  1. 原始(Raw):对话的逐字记录 api/db/joint_services/memory_message_service.py:66-67
  2. 语义(Semantic):从交互中提取的通用知识和事实 api/db/joint_services/memory_message_service.py:58
  3. 情节(Episodic):特定事件和经历的记录 api/db/joint_services/memory_message_service.py:58
  4. 程序(Procedural):习得的习惯和流程 api/db/joint_services/memory_message_service.py:58

当通过 save_to_memory 处理消息时,除非记忆类型严格为 RAW,否则系统会使用大语言模型(LLM)提取内容 api/db/joint_services/memory_message_service.py:38-62。消息存储在文档存储中,使用名为 memory_{uid} 的每用户索引 memory/services/messages.py:24MessageService 作为这些消息的增删改查(CRUD)操作的主要接口,抽象了底层的 msgStoreConn memory/services/messages.py:27-65

有关底层存储模式和提取管线的详细信息,请参阅 记忆类型与存储

来源: api/db/joint_services/memory_message_service.py:38-91, memory/services/messages.py:24-65, memory/utils/es_conn.py:53-78, memory/utils/infinity_conn.py:45-70

记忆管理用户界面与 API

系统提供了 REST API 和基于 React 的前端来管理这些持久化状态。用户可以通过用户界面配置记忆参数,例如遗忘策略和存储类型。

核心管理流程

标题:记忆配置与存储流程

RAGFlow · 核心管理流程 · 图 2
RAGFlow · 核心管理流程 · 图 2

关键管理功能包括:

  • 记忆增删改查(CRUD):用于创建、更新、列出和删除记忆的端点 api/apps/restful_apis/memory_api.py:29-144
  • 遗忘策略:通过 forgetting_policymemory_size 等参数支持管理记忆生命周期 api/apps/restful_apis/memory_api.py:94-97
  • 消息检查:检索特定记忆的详细消息历史,包括按 agent_idkeywords 过滤 api/apps/restful_apis/memory_api.py:160-175
  • 高级配置:调整提取的 temperature 等参数,并为提取的大语言模型(LLM)定义 system_promptuser_prompt api/db/services/memory_service.py:63-67
  • 权限:精细控制,将记忆访问限制为"团队"或私有使用 api/db/services/memory_service.py:61

有关 API 端点和前端配置的详细信息,请参阅 记忆管理用户界面与 API

来源: api/apps/restful_apis/memory_api.py:29-175, api/db/services/memory_service.py:50-74, memory/services/messages.py:66-118

工作流集成

记忆系统被集成到智能体工作流中,以提供长期上下文:

  • 自动提取extract_by_llm 函数使用 PromptAssembler 生成提示词,指导大语言模型(LLM)从原始对话中识别语义或情节信息 api/db/joint_services/memory_message_service.py:144-155
  • 混合检索:智能体使用 search_message 检索记忆,该函数通过 match_expressions 同时支持关键词过滤和向量相似度搜索 memory/services/messages.py:150-170
  • 嵌入向量支持:所有提取的记忆在存储前都会使用租户配置的嵌入向量模型进行向量化,以支持语义搜索 api/db/joint_services/memory_message_service.py:173-195
  • 搜索优化:记忆子系统中的 InfinityConnectionESConnection 专门处理消息的字段映射,例如将 message_type 转换为 message_type_kwd memory/utils/infinity_conn.py:45-59, memory/utils/es_conn.py:38-51
  • 存储抽象:RAGFlow 通过专门的连接包装器处理映射和索引管理,在不同后端(Infinity、Elasticsearch、OpenSearch)之间保持一致性 rag/utils/infinity_conn.py:30-42, rag/utils/es_conn.py:62-74, rag/utils/opensearch_conn.py:65-102

来源: api/db/joint_services/memory_message_service.py:144-195, memory/services/messages.py:150-170, memory/utils/es_conn.py:75-77, memory/utils/infinity_conn.py:103-117, rag/utils/opensearch_conn.py:129-156