Problem entry · machine-readable · 大模型本地部署

Open WebUI 知识库检索不生效 / embedding 配置错(上传文件报 Ollama embed 404)

本页嵌入 #trove-entity JSON(本条目全量结构化数据);全库数据见 /agent/trove.json。

元数据

idopen-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)