agentic_huge_data_base / wiki
页面 Open WebUI · 6.4 记忆与上下文管理·DeepWiki 中文全文译文

6.4 · 记忆与上下文管理(Memory and Context Management)

多模型对话工作台与知识应用入口 · 本章是 Open WebUI DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Open WebUI 章节6.4 状态全文译文 模块工具、记忆与模型调用、检索、召回与知识系统、接口与服务契约、系统架构
源码线索
  • backend/open_webui/models/memories.py
  • backend/open_webui/retrieval/loaders/datalab_marker.py
  • backend/open_webui/retrieval/loaders/main.py
  • backend/open_webui/retrieval/loaders/mineru.py
  • backend/open_webui/retrieval/loaders/paddleocr_vl.py
  • backend/open_webui/retrieval/utils.py
  • backend/open_webui/routers/memories.py
  • backend/open_webui/routers/retrieval.py
  • src/lib/apis/memories/index.ts
  • src/lib/apis/retrieval/index.ts
模块标签
  • 工具、记忆与模型调用
  • 检索、召回与知识系统
  • 接口与服务契约
  • 系统架构
  • 界面与交互

中文译文

记忆与上下文管理(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/6.4-memory-and-context-management
翻译时间:2026-06-09T16:08:53.378Z
翻译模型:deepseek-chat
原文字符数:9528
项目:Open WebUI (open-webui)

---

内存与上下文管理

相关源文件

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

  • backend/open_webui/models/memories.py
  • backend/open_webui/retrieval/loaders/datalab_marker.py
  • backend/open_webui/retrieval/loaders/main.py
  • backend/open_webui/retrieval/loaders/mineru.py
  • backend/open_webui/retrieval/loaders/paddleocr_vl.py
  • backend/open_webui/retrieval/utils.py
  • backend/open_webui/routers/memories.py
  • backend/open_webui/routers/retrieval.py
  • src/lib/apis/memories/index.ts
  • src/lib/apis/retrieval/index.ts
  • src/lib/components/admin/Settings/Documents.svelte
  • src/lib/components/admin/Settings/WebSearch.svelte
  • src/lib/components/chat/Controls/Valves.svelte
  • src/lib/components/chat/Settings/Personalization.svelte
  • src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte
  • src/lib/components/chat/Settings/Personalization/EditMemoryModal.svelte
  • src/lib/components/chat/Settings/Personalization/ManageModal.svelte
  • src/lib/components/common/Valves.svelte
  • src/lib/components/icons/Heart.svelte
  • src/lib/components/workspace/common/ManifestModal.svelte
  • src/lib/components/workspace/common/ValvesModal.svelte

本文档介绍 Open WebUI 的内存与上下文管理系统,该系统使 AI 模型能够访问用户特定信息、会话状态和对话历史。内存系统提供用户事实的语义存储与检索,而上下文管理则负责将相关信息注入 AI 请求。

关于聊天消息存储和历史树结构,请参见 4.3。关于 RAG 文档检索和知识库上下文,请参见 7

---

系统概览

Open WebUI 管理多种类型的上下文和内存:

类型存储方式作用域用途
用户记忆向量数据库(ChromaDB 等)每个用户用户事实和偏好的语义记忆
会话上下文JWT 令牌、Redis每个会话认证和用户身份
持久化配置SQL 数据库(config 表)全局应用级设置和状态
工具上下文函数参数 / Valves每个请求工具执行的运行时上下文
RAG 上下文向量数据库查询每个请求检索到的文档片段

---

内存系统架构

内存系统将用户特定事实存储在向量数据库中,支持对个人信息进行语义搜索。此功能通过 ENABLE_MEMORIES 配置项切换。

内存存储流程

下图展示了从自然语言添加记忆到 memories.py 中具体代码实体以及 Memories 模型的桥梁。

标题:记忆创建数据流

graph TB
    User["用户提供信息"]
    RouterFunc["open_webui.routers.memories:add_memory [routers/memories.py:62]"]

    AddMemoryForm["AddMemoryForm [routers/memories.py:54]"]
    MemoriesModel["Memories.insert_new_memory [models/memories.py:7]"]
    VectorDB["ASYNC_VECTOR_DB_CLIENT.upsert [routers/memories.py:88]"]
    Embedding["request.app.state.EMBEDDING_FUNCTION [routers/memories.py:86]"]

    User --> RouterFunc
    RouterFunc --> AddMemoryForm
    AddMemoryForm --> MemoriesModel
    MemoriesModel --> Embedding
    Embedding --> VectorDB

    VectorDB --> MemoryRecord["记忆集合:user-memory-{user.id}"]

来源: backend/open_webui/routers/memories.py:54-100, backend/open_webui/models/memories.py:7-7

内存检索流程

当 AI 需要上下文时,可以查询用户的语义记忆。检索过程通过特定的 user.id 过滤结果以确保数据隔离,并应用相关性阈值。

标题:记忆查询与上下文检索

graph TB
    Query["搜索请求"]
    QueryRouter["open_webui.routers.memories:query_memory [routers/memories.py:113]"]

    QueryMemoryForm["QueryMemoryForm [routers/memories.py:108]"]
    VectorSearch["ASYNC_VECTOR_DB_CLIENT.search [routers/memories.py:141]"]
    RelevanceCheck["相关性阈值检查 [routers/memories.py:153]"]

    Results["过滤后的 SearchResult [routers/memories.py:172]"]

    Query --> QueryRouter
    QueryRouter --> QueryMemoryForm
    QueryMemoryForm --> VectorSearch
    VectorSearch --> RelevanceCheck
    RelevanceCheck --> Results

来源: backend/open_webui/routers/memories.py:108-179

内存管理 UI

用户可以通过 ManageModal.svelte 组件管理自己的记忆。支持以下操作:

  • 查看:通过 getMemories API 调用列出当前用户的所有记忆 src/lib/components/chat/Settings/Personalization/ManageModal.svelte:89-91
  • 删除:按 ID 删除特定记忆,或通过 deleteMemoriesByUserId 清除用户的所有记忆 src/lib/components/chat/Settings/Personalization/ManageModal.svelte:74-85
  • 重置:并行重新生成所有现有文本记忆的向量嵌入。后端在此过程中有意不持有 AsyncSession,以防止长时间运行的嵌入 API 调用导致连接池耗尽 backend/open_webui/routers/memories.py:185-197

---

上下文注入管道

上下文通过复杂的检索和配置管道注入到 AI 请求中。

检索上下文(RAG)

检索系统支持多种文档提取引擎(例如 Tika、Docling、Mistral OCR)和混合搜索,结合向量相似度与 BM25 关键词匹配 backend/open_webui/retrieval/utils.py:15-19

  • 嵌入生成:由 get_ef 管理,支持 SentenceTransformers、OpenAI 和 Ollama backend/open_webui/routers/retrieval.py:139-159
  • 重排序:通过 get_rf 使用 CrossEncoders 或外部重排序 API 的可选重排序步骤 backend/open_webui/routers/retrieval.py:162-206
  • 网络搜索:使用 Brave、Google PSE 或 SearXNG 等引擎从网络动态检索上下文 backend/open_webui/routers/retrieval.py:54-83

来源: backend/open_webui/routers/retrieval.py:54-206, backend/open_webui/retrieval/utils.py:15-19, backend/open_webui/retrieval/loaders/main.py:231-241

---

会话与配置上下文

Open WebUI 使用配置系统来管理应用状态和重启后仍能保持的上下文。

持久化配置与管理员设置

设置通过集中式 API 进行管理,允许管理员配置嵌入引擎、RAG 参数和网络搜索提供商。

  • RAG 配置:管理员可以配置块大小、提取引擎(例如 Docling、Tika)和文件限制 src/lib/components/admin/Settings/Documents.svelte:229-250
  • 网络搜索配置:支持多个引擎,包括 ollama_cloudperplexity_searchsearxnggoogle_pse src/lib/components/chat/Settings/WebSearch.svelte:16-42
  • 嵌入更新:更改嵌入引擎会通过 updateEmbeddingConfig 触发配置更新 src/lib/components/admin/Settings/Documents.svelte:113-132

来源: src/lib/components/admin/Settings/Documents.svelte:113-250, src/lib/components/chat/Settings/WebSearch.svelte:16-42

---

工具执行上下文(Valves)

工具和函数通过 "Valve" 系统接收运行时上下文,支持用户特定和全局配置覆盖。

Valve 系统架构

Valves 是配置点,允许用户向工具执行环境提供特定上下文(如 API 密钥或搜索限制)。

  • UI 渲染Valves.svelte 根据 JSON schema(valvesSpec)动态渲染输入,支持 passwordselectbooleancolormap 等类型 src/lib/components/common/Valves.svelte:14-172
  • 用户 vs. 全局:用户可以通过 Controls/Valves.svelte 组件为特定工具设置自己的值 src/lib/components/chat/Controls/Valves.svelte:7-18
  • 数据流:前端值经过防抖处理后,通过 updateUserValvesById 提交到后端 src/lib/components/chat/Controls/Valves.svelte:40-49, src/lib/components/chat/Controls/Valves.svelte:73-110

来源: src/lib/components/common/Valves.svelte:14-172, src/lib/components/chat/Controls/Valves.svelte:7-110