快速结论:该报错发生在 Open WebUI 调用 Ollama 或 OpenAI 兼容接口生成批量嵌入向量时,代码无条件发送 Bearer 头导致与 URL 中的 Basic Auth 凭据冲突。优先检查 embedding 服务地址是否包含 user:pass@ 前缀,以及 API Key 是否为空字符串。
适用环境:Open WebUI(latest),RAG 嵌入引擎为 Ollama 或 OpenAI 兼容接口,服务部署在带 HTTP Basic Auth 的反向代理之后。
最快修复方案:暂无确认的一步修复方案。Issue 中提出的代码修复(仅在 key 非空时添加 Authorization 头)尚未被官方合并验证,需等待上游修复或自行 patch。
注意事项:该修复涉及 backend/open_webui/retrieval/utils.py 中四个批量嵌入函数,自行修改需谨慎,且上游尚未发布包含此修复的版本。
问题场景
用户在自建环境中将 Ollama 或 OpenAI 兼容的嵌入服务放在反向代理(如 Nginx)后面,并用 HTTP Basic Auth 保护。当通过 Open WebUI 上传文档或触发 RAG 检索、嵌入流程时,后端调用批量嵌入函数 generate_openai_batch_embeddings、agenerate_openai_batch_embeddings、generate_ollama_batch_embeddings、agenerate_ollama_batch_embeddings,触发报错。
报错原文
ValueError: Cannot combine AUTHORIZATION header with AUTH argument or credentials encoded in URL
原因分析
可能原因是 backend/open_webui/retrieval/utils.py 中的批量嵌入函数无条件构造 Authorization: Bearer {key} 请求头,即使 key 为空字符串也会发送。当用户在 URL 中通过 userinfo 携带 Basic Auth 凭据(如 https://user:pass@host)时,aiohttp 同时收到 Authorization 头和 URL 中的凭据,抛出上述 ValueError。若 Basic Auth 服务端配置了空 key,则悬空的 Bearer 头会导致 401 错误,响应为 HTML 登录页,r.json() 解析失败抛出 ContentTypeError。
环境排查
- 确认 Open WebUI 是否为 latest 版本。
- 确认 RAG 嵌入引擎为 Ollama 或 OpenAI 兼容接口。
- 检查嵌入服务 URL 是否包含
user:pass@前缀。 - 检查 Open WebUI 的嵌入 API Key 配置是否为空字符串(而非未设置)。
- 确认反向代理是否启用了 HTTP Basic Auth。
解决步骤
- 检查 Open WebUI 的嵌入 API Key 设置,若非必要请删除空字符串的 key 配置,或填入实际密钥。
- 若使用 URL userinfo 传递 Basic Auth 凭据,需要修改
backend/open_webui/retrieval/utils.py,将 headers 初始化为仅包含Content-Type,仅在 key 非空时添加Authorization头。可优先尝试此方案,但需自行验证修改效果。 - 如果不想修改代码,可考虑在反向代理层放行嵌入路径,或改用 API Key 认证方式替代 Basic Auth。
- 关注上游 Issue 状态,等待官方修复合并到正式版本后升级 Open WebUI。
验证方法
修改后重新上传文档或触发 RAG 嵌入流程,确认不再抛出 ValueError 或 ContentTypeError,文档能够正常完成嵌入和检索。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


