元数据
| id | open-webui-rag-embedding | 收录 | 2026-08-30 |
|---|---|---|---|
| 问题域 | 大模型本地部署 | 主题分组 | Agent 工具·运行与配置 |
| 适用工具 | open-webuiollama | ||
症状
- 知识库文件一直 `failed`,错误含 `Ollama embed error (404): model "nomic-embed-text" not found, try pulling it first`;
- 模型列表能看到 embedding 模型、聊天正常,但知识库检索不生效;
- 按教程设了 `OLLAMA_BASE_URLS` / `RAG_EMBEDDING_MODEL` 后重启仍 404。
原因
- 模型名被写成带 `ollama/` 前缀(404);
- embedding 的 URL 是独立配置 `RAG_OLLAMA_BASE_URL`,没设时回退到默认实例(可能没有该模型);
- 首次启动配置落 SQLite 后 DB 优先于 env,改 env 无效。
解法
1. 直连 `POST /api/embed` 裸名 200 / 前缀 404 定位;2. `ollama pull` 补 embedding 模型;3. 已有卷用管理 API `POST /api/v1/retrieval/embedding/update` 写 `ollama_config.url`(env 无效);4. 删 failed 文件重传,等 `completed`;5. 建库+加文件+检索命中验证;6. 无关查询返回 top-k 时调高 RELEVANCE_THRESHOLD。
验证证据
- 本机实测(2026-08-30,独立容器 3004/11435,未碰工具侧与系统 snap):
- 直连 `/api/embed`:裸名 `nomic-embed-text` → 200(768 维,L2 norm=1.0);`ollama/nomic-embed-text` → 404 `model "ollama/nomic-embed-text" not found`;
- 首次启动缺 `RAG_OLLAMA_BASE_URL` → 上传文件 failed,错误 `Ollama embed error (404)...`;DB `rag.ollama.base_url` 被持久化为默认 `host.docker.internal:11434`;
- 重启补 env `RAG_OLLAMA_BASE_URL=...11435` → **仍 404**(DB 优先于 env,坑 2 完整机制);
- 管理 API `POST /api/v1/retrieval/embedding/update` 写 `ollama_config.url` → DB 变 11435;
- 重传文件 → 2s 内 `completed`;建库+加文件 → 200;检索"默认管理端口是多少" → hits=1,命中文档内容含"默认管理端口:8123",meta 含 `embedding_config: {'engine': 'ollama', 'model': 'nomic-embed-text'}`;
- 无关查询("量子计算与星际旅行")也返回 1 条 → 默认阈值 0 返回 top-k;
- 测试容器/卷已清理。
- 聊天层自动检索限制:工具侧实测(实测复现日志(2026-08-30)):0.5B 模型不触发工具调用、输出幻觉;检索层本身可用。
- 完整日志:`实测复现日志(2026-08-30)`
来源与证据
素材来源:本地容器实测(ghcr.nju.edu.cn/open-webui/open-webui:main + ollama/ollama:latest,2026-08-30)
验证证据:Evidence details kept locally (2026-08-30)