这类问题我又碰上了一次。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 里打架。这类问题最好一次改到位,反复小改反而容易把原因搅混。
