这类问题我又碰上了一次。Open WebUI 0.3.35 配 Ollama 做 embedding,知识库上传文档报 Collection expecting embedding with dimension of 768, got 1024,删文档重传、重建知识库都不行。

第一反应是「RAG_EMBEDDING_MODEL 改了但向量库没清」,验证下来不成立。

原因不止一个,得分开看。换过 embedding 模型,旧 collection 的维度已经写死在 chroma 里;同一个知识库混用了两种维度的模型;Ollama 里同名模型被换成了不同维度的版本。

先确认容器里实际生效的 embedding 配置

docker exec open-webui env | Select-String -Pattern "EMBEDDING|RAG_"

然后看向量库目录里有哪些 collection

docker exec open-webui ls -l /app/backend/data/vector_db

接着停掉容器后清空旧向量库目录

docker compose stop open-webui; docker run --rm -v open-webui:/app/backend/data alpine sh -c "rm -rf /app/backend/data/vector_db"

末了重新启动并上传同一份文档观察日志

docker compose up -d open-webui; docker logs -f open-webui --tail 50

中途换过一次思路,把范围缩到最小的那一层,反而快了。

恢复的判定其实很直接。上传同一份 PDF 不再报维度错误,知识库检索能返回原文段落,日志里 collection 的维度和当前模型一致。

补一句。换 embedding 模型等于换向量空间,旧库必须重建,光改环境变量只会让新旧维度在同一个 collection 里打架。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189