issue: search_memories tool loses semantic vector search, falls back to substring matching

用户在使用 Open WebUI 内置工具 search_memories 时触发。该工具原本通过向量相似性搜索(vector similarity search)从嵌入数据库中检索语义相关的记忆。但在 commit dbdcfd8c6 (2026年6月29日)之后,该工具不再使用向量数据库,改为从

issue: search_memories tool loses semantic vector search, falls back to substring matching

issue: search_memories tool loses semantic vector search, falls back to substring matching

快速结论:这个注册在 Open WebUI 用户记忆搜索工具中的问题,发生在记忆搜索从向量检索被更改为纯子串匹配之后。优先排查是否升级到了引入此变更的 commit 之后版本,并确认记忆注入流程(add_memory_context)是否仍在正常工作。

问题场景

用户在使用 Open WebUI 内置工具 search_memories 时触发。该工具原本通过向量相似性搜索(vector similarity search)从嵌入数据库中检索语义相关的记忆。但在 commit dbdcfd8c6(2026年6月29日)之后,该工具不再使用向量数据库,改为从 SQL 数据库加载所有用户记忆,再用客户端侧的大小写不敏感子串匹配(case-insensitive substring matching)进行过滤,并按照路径相关性和更新时间排序。

报错原文

No errors appear in logs — the tool runs successfully, just with incorrect search behavior.

原因分析

这是有意的架构变更,而非 bug。根据维护者解释,commit 260f3c3a2search_memories 从向量检索改为搜索与浏览工具(search-and-browse)。新增了 pathmemory_idtype 参数,允许模型进行路径结构化的记忆树浏览(如 “列出 work/ 下的所有内容”),而向量查询无法回答这类需求。

语义检索并未被移除,而是迁移到了注入层:当启用记忆时,add_memory_context 仍会调用 query_memory(默认 k=8),在模型看到对话之前就把向量检索命中的记忆混合到上下文中。工具层不再承担向量检索任务。

环境排查

  • 确认 Open WebUI 版本(Issue 中提到 v0.10.2 触发,但更关键的是是否包含了 commit dbdcfd8c6260f3c3a2 的版本)。
  • 确认记忆功能已在用户设置中启用。
  • 确认模型支持原生函数调用(native function calling)并已启用记忆。
  • 如果怀疑记忆注入丢失,需要检查 log 中 add_memory_context 的行为。

解决步骤

  1. 确认这是预期行为:根据维护者声明,这是设计变更。工具的描述已改为 “Search or browse saved user memories”(搜索或浏览保存的用户记忆),query 变为可选的搜索内容路径字段。模型不再需要通过 search_memories 来获取语义相关的记忆,而是通过 add_memory_context 自动注入。
  2. 验证记忆注入是否正常:如果发现模型应得到但未得到语义相关的记忆,请单独开 issue 报告 add_memory_context 的问题,并附上具体记忆内容和对话上下文。
  3. 检查工具使用模式:如果模型调用 search_memories 是为了精确筛选(如按路径 “work/meetings” 浏览),则当前子串匹配行为是正确的;如果是为了语义检索(如 “用户喜欢喝什么”),则应依赖 add_memory_context 自动注入,而非通过工具搜索。
  4. 如果确认需要向量搜索:维护者明确拒绝了混合方案的 PR 方向。如需恢复工具层向量搜索,需要提交新的功能请求 issue,并说明用例为何不能通过注入层满足。

验证方法

测试以下场景:

  • 添加三条记忆:”用户最喜欢的颜色是蓝色”、”用户住在旧金山”、”用户更喜欢咖啡而不是茶”;
  • 在聊天中询问 “用户喜欢喝什么”;
  • 如果模型在没有调用 search_memories 的情况下正确回答 “咖啡”,则说明注入层工作正常,这是预期行为;
  • 如果模型调用 search_memories 且返回空结果或无关结果,则说明注入层可能有问题,或者模型在注入后仍错误地使用工具搜索(需要进一步调试)。

参考来源

open-webui/open-webui #27079

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 15086

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注