
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 260f3c3a2 将 search_memories 从向量检索改为搜索与浏览工具(search-and-browse)。新增了 path、memory_id 和 type 参数,允许模型进行路径结构化的记忆树浏览(如 “列出 work/ 下的所有内容”),而向量查询无法回答这类需求。
语义检索并未被移除,而是迁移到了注入层:当启用记忆时,add_memory_context 仍会调用 query_memory(默认 k=8),在模型看到对话之前就把向量检索命中的记忆混合到上下文中。工具层不再承担向量检索任务。
环境排查
- 确认 Open WebUI 版本(Issue 中提到 v0.10.2 触发,但更关键的是是否包含了 commit
dbdcfd8c6或260f3c3a2的版本)。 - 确认记忆功能已在用户设置中启用。
- 确认模型支持原生函数调用(native function calling)并已启用记忆。
- 如果怀疑记忆注入丢失,需要检查 log 中
add_memory_context的行为。
解决步骤
- 确认这是预期行为:根据维护者声明,这是设计变更。工具的描述已改为 “Search or browse saved user memories”(搜索或浏览保存的用户记忆),
query变为可选的搜索内容路径字段。模型不再需要通过search_memories来获取语义相关的记忆,而是通过add_memory_context自动注入。 - 验证记忆注入是否正常:如果发现模型应得到但未得到语义相关的记忆,请单独开 issue 报告
add_memory_context的问题,并附上具体记忆内容和对话上下文。 - 检查工具使用模式:如果模型调用
search_memories是为了精确筛选(如按路径 “work/meetings” 浏览),则当前子串匹配行为是正确的;如果是为了语义检索(如 “用户喜欢喝什么”),则应依赖add_memory_context自动注入,而非通过工具搜索。 - 如果确认需要向量搜索:维护者明确拒绝了混合方案的 PR 方向。如需恢复工具层向量搜索,需要提交新的功能请求 issue,并说明用例为何不能通过注入层满足。
验证方法
测试以下场景:
- 添加三条记忆:”用户最喜欢的颜色是蓝色”、”用户住在旧金山”、”用户更喜欢咖啡而不是茶”;
- 在聊天中询问 “用户喜欢喝什么”;
- 如果模型在没有调用
search_memories的情况下正确回答 “咖啡”,则说明注入层工作正常,这是预期行为; - 如果模型调用
search_memories且返回空结果或无关结果,则说明注入层可能有问题,或者模型在注入后仍错误地使用工具搜索(需要进一步调试)。

![[RFC]: Opt-in Media URL Cache for `MediaConnector`](https://www.chat-gpts.plus/wp-content/uploads/2026/07/37075-315181f6-768x403.jpg)

