快速结论:当启用 ENABLE_FORWARD_USER_INFO_HEADERS=true 且使用外部 embedding/reranking 后端时,从聊天界面(而非 API 路由)发起的 RAG 混合检索查询会因 UserModel 对象缺少 name 属性而崩溃。优先检查 backend/open_webui/utils/headers.py 中 include_user_info_headers 对用户属性的访问是否缺少防御性判断。
适用环境:Open WebUI v0.11.0,启用了 ENABLE_FORWARD_USER_INFO_HEADERS=true、ENABLE_RAG_HYBRID_SEARCH=true,并配置 OpenAI 兼容的外部 embedding 引擎。
最快修复方案:暂无官方确认的一步修复方案。Issue 作者提供了一种构建时补丁方案——在 include_user_info_headers 中用 getattr(..., '') or '' 保护所有用户属性访问(可优先尝试)。根治方案需要让聊天路径构造与 get_verified_user 相同字段的完整用户对象(参考 #27641)。
注意事项:防御性 getattr 补丁只能掩盖症状,不能解决用户对象构造不完整这一根本缺陷;该补丁尚未经过官方验证,且需要手动修改源码并每次升级后重新应用。
问题场景
在 Open WebUI v0.11.0 中,配置了 ENABLE_FORWARD_USER_INFO_HEADERS=true 和外部 embedding/reranking 后端后,从聊天界面针对知识库集合发起 RAG 查询时触发崩溃。相同查询通过 /api/v1/retrieval/query/collection 接口调用却能正常返回,这使得问题不易察觉。
报错原文
bug: include_user_info_headers crashes on chat-path user objects ('UserModel' object has no attribute 'name') — breaks hybrid search with ENABLE_FORWARD_USER_INFO_HEADERS
'UserModel' object has no attribute 'name'
raised from backend/open_webui/utils/headers.py →
include_user_info_headers, which accesses user.name.strip() (and
user.email.strip()) unguarded:
return {
**headers,
FORWARD_USER_INFO_HEADER_USER_NAME: quote(user.name.strip(), safe=' '),
...
}
原因分析
聊天路径构造的 UserModel 对象没有设置 name 属性(可能也未设置 email 属性),而 include_user_info_headers 直接调用 user.name.strip() 和 user.email.strip() 未做任何防护。API 路由请求通过 get_verified_user 携带的是完整填充的 UserModel,因此能正常工作。该缺陷与 #27641 报告的根本缺陷相同——内置检索工具也构造了不完整的 UserModel。
此错误的间接影响被 ENABLE_RAG_HYBRID_SEARCH=true 的混合检索回退行为放大:原生混合检索失败后,系统会回退到旧版全集合 BM25 预取,在大集合上导致 OOM 崩溃。
环境排查
- Open WebUI 版本(确认是否为 v0.11.0)
- 确认设置了
ENABLE_FORWARD_USER_INFO_HEADERS=true - 确认设置了
ENABLE_RAG_HYBRID_SEARCH=true - 确认使用 OpenAI 兼容的外部 embedding 引擎
- 排查时注意:从聊天 UI 发起查询(而非 retrieval API)
- 日志级别需调至 debug 才能看到具体的 AttributeError 堆栈
解决步骤
- 临时缓解——构建时补丁(可优先尝试):修改
backend/open_webui/utils/headers.py中include_user_info_headers,将所有用户属性访问改为getattr(..., '') or ''保护,包括name、email及其他属性访问。 - 确认相关 Issue 状态:查看 #27641(内置检索工具构造不完整
UserModel)是否已有官方修复或合并方案,若已修复,更新到包含该修复的版本。 - 跟进官方修复:关注本 Issue 及 #27641 的后续进展,等待官方从用户对象构造层面根治,而不是依赖补丁。
- 升级前验证补丁兼容性:每次升级 Open WebUI 后,重新检查源码补丁是否需要重新应用。
验证方法
应用补丁后,从聊天 UI 重新对知识库集合发起 RAG 查询,确认不再出现 'UserModel' object has no attribute 'name' 报错,且大集合的混合检索不会触发旧版回退导致的 OOM。检查调试日志确认原生混合检索路径不再被 AttributeError 中断。
参考来源
open-webui/open-webui #27641(相关:内置检索工具的不完整用户对象)
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


