快速结论:在 Open WebUI 中调用内置工具 grep_knowledge_files 检索知识库时,若 pattern 里包含 \. 这类合法的正则转义(典型如 Art\. 40),工具会因正则自动识别不完整而判定为字面量匹配,返回 “No matches” 假阴性;优先检查 pattern 中的转义字符,并改用未转义形式验证文档检索本身是否正常。
适用环境:Open WebUI v0.12.5 与 v0.13.0(Docker 安装);Fedora Linux 44 x86_64;Firefox 159;Ollama 0.40.13。Issue 未提供 Python、CUDA、显卡等信息。
最快修复方案:暂无确认的一步修复方案。Issue 讨论中未给出已合入的代码修复或配置开关,可优先尝试改用未转义的检索模式(例如用 Art. 40 替代 Art\. 40)临时绕过。
注意事项:绕过方式会改变匹配语义:未转义的 . 在正则下可匹配任意单字符,可能带来额外误匹配;而在当前自动识别逻辑下,它实际按字面量处理,行为并不显式可控。Issue 期望的“显式指定 literal/regex 匹配模式”尚未被证实已实现。
问题场景
用户在 Open WebUI 中把已索引的 PDF 上传到 Knowledge 集合,并以 native function calling 方式挂载到模型,再通过多轮对话触发内置工具 grep_knowledge_files 检索文档内容。当模型生成的搜索 pattern 对句点等标点做了正则转义时(如 Art\. 40),工具返回无匹配,导致模型误判文档中不存在相应段落。该问题在 v0.12.5 和 v0.13.0 上均可复现。
报错原文
issue: grep_knowledge_files returns false negatives for escaped punctuation due to incomplete regex auto-detection
No matches for "Art\. 40"
原因分析
最可能的原因是:grep_knowledge_files 需要自行判断传入的 pattern 应作为正则表达式还是字面量字符串处理,但其正则自动识别逻辑没有把 \. 视为正则语法的标志,于是把整个 pattern 当作字面量,去匹配文本中真实存在的反斜杠与句点组合,自然匹配不到 Art. 40。Issue 中还提到同类工具此前已有正则解析失败的报告(如 #26781 的 alternation 失效、#26744 的换行处理问题),说明该匹配/识别子系统可能存在多类缺陷。具体到本 Issue,尚未见维护者给出根因定论。
环境排查
- 确认 Open WebUI 版本:问题在 v0.12.5 与 v0.13.0 上均复现,v0.12.5、v0.13.0 之外版本未在 Issue 中验证。
- 确认部署方式为 Docker。
- 确认模型以 native function calling 方式挂载 Knowledge 集合,并检查对话中实际传给 grep_knowledge_files 的 pattern 是否带有反斜杠转义。
- 确认文件已索引完成,并用 view_knowledge_file 能取回目标文本,排除文件缺失或 PDF 抽取失败。
- Issue 未涉及 Python、CUDA、PyTorch 或显卡版本,无需针对这些项排查。
解决步骤
- 先按 Issue 方式复现:准备含
Art. 40 Example section heading的纯文本文档,上传到 Knowledge 集合并等待索引完成。 - 调用 grep_knowledge_files,参数为
pattern = "Art. 40"、case_insensitive = false,确认可命中目标文本。 - 用
pattern = r"Art\. 40"重复调用,观察是否返回No matches for "Art\. 40";也可带上正确的file_id限制到单文件再次验证。 - 用 view_knowledge_file 读取同一文件,确认目标文本确实存在,从而排除索引与抽取问题。
- 临时绕过:在对话或工具调用中,让模型使用未转义的形式(如
Art. 40)作为检索 pattern,并对比两次结果。 - 若必须依赖转义 pattern(例如模型在 function calling 中稳定输出
\.),需关注该 Issue 是否已有修复版本;Issue 讨论中未提供配置文件或参数级修复手段,不建议自行修改内部实现作为长期方案。
验证方法
在同一个已索引文档上分别执行未转义 pattern 与转义 pattern 的 grep_knowledge_files 调用,并配合 view_knowledge_file 核对原文:若未转义能命中、转义仍返回 No matches,即说明问题未解决;若两种写法都能返回相同的匹配行,则说明自动识别逻辑已正常。对于带文件范围的调用,还应确认带 file_id 时结果与全库检索一致。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


