Coze使用了Milvus 向量数据库。
上次知识库报错:
dense_text_content vector dim 1024 not match collection definition, which has dim of 2048
清理 Milvus 数据目录并重启服务,但 错误依旧存在:
这说明 —— Milvus 中的 collection 仍然存在,且 schema 未被重建!
🚨 根本原因:Milvus 的元数据没有被清除!
我删除的是 ./data/milvus/*
—— 这是 Milvus 的数据存储目录,但 collection schema(结构定义)是存储在 Milvus 的元数据系统中的,而元数据默认存储在 etcd
里!
也就是说:
✅ 删了向量数据
❌ 但没删 collection 定义(schema)→ 重启后 Milvus 从 etcd 恢复了旧的 2048 维 schema!
终极解决方案:同时清空 Milvus 数据 + ETCD 元数据
✅ 步骤一:彻底关闭服务
docker compose down
✅ 步骤二:清空 Milvus 数据目录 + ETCD 数据目录
rm -rf ./data/milvus/*
rm -rf ./data/bitnami/etcd/*
⚠️ 这会清空所有 Milvus 集合定义、索引、数据 —— 适合开发环境。生产环境请先导出或联系 DBA。
✅ 步骤三:重启依赖服务(etcd + minio + milvus)
docker compose up -d etcd minio
# 等待 etcd 和 minio 启动成功
sleep 10
docker compose up -d milvus
此时 Milvus 是“全新”的 —— 没有任何 collection。
✅ 步骤四:启动 coze-server,触发自动建表(1024维)
docker compose up -d coze-server
然后:
- 访问 Coze Studio(http://localhost:8888)
- 创建新知识库 → 上传文档 → 等待 Embedding 和向量化完成
- 系统会自动创建新的 Milvus collection,维度 =
OPENAI_EMBEDDING_DIMS=1024
✅ 验证是否成功
你可以进入 Milvus Web UI 或使用 pymilvus
查看当前 collection 的 schema:
方法一:使用 Milvus CLI(推荐)
# 进入 milvus 容器
docker exec -it coze-milvus bash
# 安装 milvus_cli(如果没装)
pip install pymilvus milvus-cli
# 连接本地 milvus
milvus_cli
然后执行:
connect -h localhost -p 19530
list_collections
describe_collection -c <你的collection名,如:coze_knowledge_12345>
你应该看到类似:
"fields": [
{
"name": "dense_text_content",
"type": "FloatVector",
"params": {
"dim": 1024 # ✅ 必须是1024!
}
}
]
🛡️ 未来避免此问题
在切换 Embedding 模型或维度时:
- 先删除知识库(在 Coze UI 中)
- 再删 Milvus + ETCD 数据(或 drop collection)
- 最后切换模型配置并重启
✅ 最终确认
操作完成后:
- 上传文档 → 触发 Embedding → 自动建表 → 向量插入成功 ✅
成功完成向量化
问答此知识库,正常返回上传内容: