Coze使用embedding报错修复

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

然后:

  1. 访问 Coze Studio(http://localhost:8888
  2. 创建新知识库 → 上传文档 → 等待 Embedding 和向量化完成
  3. 系统会自动创建新的 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 模型或维度时:

  1. 先删除知识库(在 Coze UI 中)
  2. 再删 Milvus + ETCD 数据(或 drop collection)
  3. 最后切换模型配置并重启


✅ 最终确认

操作完成后:

  • 上传文档 → 触发 Embedding → 自动建表 → 向量插入成功 ✅
成功完成向量化

问答此知识库,正常返回上传内容:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容