微信扫码
添加专属顾问
我要投稿
Dify版本升级全流程解析,包含weaviate数据迁移的详细操作指南,助你顺利完成系统迭代。 核心内容: 1. 从1.9.0升级至1.11.1版本的具体步骤 2. 关键环境变量配置与注意事项 3. weaviate数据迁移的完整解决方案
一、dify从1.9.1升级至1.11.1
1、从FitCS仓库中拉取最新的dify镜像,(具体配套镜像版本需要查看对应版本dify的docker-compose.yaml 文件明细)
docker pull anggenius/dify-api-local:1.11.1.0 docker pull langgenius/dify-web-local:1.11.1.0 docker pull busboy:latest docker pull semitechnologies/weaviate:1.27.0 docker pull langgenius/dify-sandbox:0.2.12 #无需重复拉取 docker pull postgres:15-alpine #无需重复拉取 docker pull redis:6-alpine #无需重复拉取 docker pull squid:latest #无需重复拉取 docker pull nginx:latest #无需重复拉取 |
2、拉取git tag1.11.1分支代码
3、拷贝.env文件
cd dify/docker cp .env.example .env |
4、修改环境变量(需要参考之前运行的.env文件)
CONSOLE_API_URL=https://di******me.com CONSOLE_WEB_URL=https:// SERVICE_API_URL=https:// TRIGGER_URL=https:// APP_API_URL=https:// APP_WEB_URL=https:// FILES_URL=https:// INTERNAL_FILES_URL=https:// # 修改允许上传文件大小UPLOAD_FILE_SIZE_LIMIT=150 UPLOAD_FILE_BATCH_LIMIT=10 PLUGIN_S3_USE_AWS_MANAGED_IAM=false PLUGIN_S3_ENDPOINT=false PLUGIN_S3_USE_PATH_STYLE=false PLUGIN_PYTHON_ENV_INIT_TIMEOUT=640 PLUGIN_MAX_EXECUTION_TIMEOUT=2400 # 重要 PIP_MIRROR_URL=https://mi********om/pypi/simple # 修改HTTP节点最大文本长度(20M) HTTP_REQUEST_NODE_MAX_BINARY_SIZE=20971520 HTTP_REQUEST_NODE_MAX_TEXT_SIZE=20971520 #代码节点最大返回字符串长度 CODE_MAX_STRING_LENGTH=9223372036854775808 CODE_GENERATION_MAX_TOKENS=10240 CODE_MAX_STRING_ARRAY_LENGTH=300 CODE_MAX_OBJECT_ARRAY_LENGTH=300 # 修改代码执行时间 SANDBOX_WORKER_TIMEOUT=300 CODE_EXECUTION_CONNECT_TIMEOUT=300 CODE_EXECUTION_READ_TIMEOUT=300 CODE_EXECUTION_WRITE_TIMEOUT=300 # 新增两个参数修改项MARKETPLACE_ENABLE=false FORCE_VERIFYING_SIGNATURE=false |
5、执行docke-composer停止命令
docker-compose down |
6、将原docker/volumes内容进行备份(可以不备份plugin目录,假定当前dify位于~/dify目录下,很花时间)
cd ~/dify/docker tar -cvf volumes_1122.tgz volumes |
优先备份:volumes/certbot、volumes/db、volumes/weaviate
7、【重要!!!】修改docker/volumes目录用户权限,否则1.11.1版本中会因为权限问题,导致文件无法正常上传。
chown -R 1001:1001 vloumes/app/storage chmod -R u+rwX vloumes/app/storage |
8、执行启动命令
docker-compose up -d |
9、执行docke-compose 日志查看指令,查看是否存在异常(多个容器的日志一起刷新)
docker-compose logs -f --tail 100 |
当前状态为已从1.9.0升级至1.11.1,发现历史知识库无法检索,报错现象如下:
根据官方指导文档进行修复即可(链接地址:https://docs.dify.ai/zh/self-host/troubleshooting/weaviate-v4-migration)。
这里对本地迁移步骤进行记录(这里是已经升级到1.11.1,只能进行选择修复路径,摊手)
1、停用weaviate
# 切换到docker目录,执行 docker-compose stop weaviate |
2、【重要】修复孤立的LSM数据(直接拷贝执行即可)
# 容器内执行 docker-compose run --rm --entrypoint /bin/sh weaviate -c " cd /var/lib/weaviate for dir in vector_index_*_node_*_lsm; do [ -d \"\$dir\" ] || continue index_id=\$(echo \"\$dir\" | sed -n 's/vector_index_\([^_]*_[^_]*_[^_]*_[^_]*_[^_]*\)_node_.*/\1/p') shard_id=\$(echo \"\$dir\" | sed -n 's/.*_node_\([^_]*\)_lsm/\1/p') mkdir -p \"vector_index_\${index_id}_node/\$shard_id/lsm\" cp -a \"\$dir/\"* \"vector_index_\${index_id}_node/\$shard_id/lsm/\" echo \"✓ Copied \$dir\" done " |
3、重启weaviate容器
docker-compose start weaviate |
4、列出集合(非必要,需要进入api容器内执行):
curl -s -H "Authorization:Bearer WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih" \ "http://weaviate:8080/v1/schema" | python3 -c " import sys, json for cls in json.load(sys.stdin).get('classes', []): if cls['class'].startswith('Vector_index_'): print(cls['class']) " |
5、确认对象技术非零(非必要)
curl -s -H "Authorization: Bearer WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih" \ "http://weaviate:8080/v1/objects?class=Vector_index_bc3251c1_8e8b_4adc_a66f_69bccb086f2e_Node" |
说明:其中class为上一个指令的返回结果,使用官方给的python脚本得到的数据总是0,但是curl命令实际有数据返回的。因为只是个确认的过程,不影响迁移效果,直接忽略吧。
6、【重要】进行Shema迁移
因为按照官方路线B在worker容器内执行一直报连接失败。这里选择单独在本地创建虚拟环境进行迁移,
6.1 修改docker-compose.yaml文件暴露weaviate的8080、50051端口
Weaviate ports: - “50051:50051” - “8080:8080” |
6.2 停用并启用weaviate,并检查50051端口是否在本地监听
docker-compose down weaviate docker-compose up weaviate -d netstat -tuln | grep 50051 |
6.3 创建本地虚拟环境(要求是python3.11+)
python -m venv weaviate_migration_env source weaviate_migration_env/bin/activate pip install weaviate-client requests |
6.4 修改migrate_weaviate_collections.py,将访问地址weaviate改为127.0.0.1,如下:
WEAVIATE_ENDPOINT = os.getenv("WEAVIATE_ENDPOINT", "http://127.0.0.1:8080") WEAVIATE_GRPC_ENDPOINT = os.getenv("WEAVIATE_GRPC_ENDPOINT", "grpc://127.0.0.1:50051") |
migrate_weaviate_collections.py 源文件地址:
https://github.com/langgenius/dify-docs/blob/main/assets/migrate_weaviate_collections.py
6.5 执行迁移脚本
python migrate_weaviate_collections.py |
执行成功后,结束位置展示如下内容:
Replacing old collection with migrated data... Step 1: Deleting old collection... Deleted Step 2: Getting schema from migrated collection... Step 3: Creating collection with original name... Created Step 4: Copying data to original collection name... Copied 1000 objects... Copied 1014 objects... Total copied: 1014 objects Step 5: Cleaning up temporary migrated collection... Cleaned up SUCCESS! Vector_index_bc3251c1_8e8b_4adc_a66f_69bccb086f2e_Node now has the new schema with 1014 objects ================================================================================ Migration Complete! ================================================================================ Summary: Collections migrated: 3 |
7、登录dify,针对历史知识库进行文档检索测试,发现知识库可用,说明数据迁移成功
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-12-27
Dify问题分类组件的性能优化之路:从13秒到毫秒级响应
2025-12-26
2025年最后正式版:dify v1.11.2 刚刚发布了!
2025-12-25
Dify v1.11.0:知识库支持多模态检索
2025-12-23
智能体落地元年,Agent Infra是关键一环|对话腾讯云&Dify
2025-12-21
你的知识库为什么总搜不到答案?试试Dify这个“隐藏开关”
2025-12-21
怎样选择Dify工作流中的OCR工具?
2025-12-20
Dify回退版本翻车,你遇到了吗?
2025-12-18
Aiops探索:在n8n工作流里调用Dify应用API
2025-10-13
2025-12-05
2025-12-08
2025-10-12
2025-11-11
2025-11-09
2025-11-20
2025-12-05
2025-10-16
2025-11-01