免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

Dify版本升级过程记录(1.9.0升级至1.11.1版本,含weaviate数据迁移)

发布日期:2025-12-29 12:08:38 浏览次数: 1947
作者:陈大金说

微信搜一搜,关注“陈大金说”

推荐语

Dify版本升级全流程解析,包含weaviate数据迁移的详细操作指南,助你顺利完成系统迭代。

核心内容:
1. 从1.9.0升级至1.11.1版本的具体步骤
2. 关键环境变量配置与注意事项
3. weaviate数据迁移的完整解决方案

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

一、dify从1.9.1升级至1.11.1

1、FitCS仓库中拉取最新的dify镜像,(具体配套镜像版本需要查看对应版本difydocker-compose.yaml 文件明细)



docker pull anggenius/dify-api-local:1.11.1.0
docker pull langgenius/dify-plugin-daemon:0.5.1-local



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://


di******me.com


SERVICE_API_URL=https://


di******me.com


TRIGGER_URL=https://


di******me.com


APP_API_URL=https://


di******me.com


APP_WEB_URL=https://


di******me.com


FILES_URL=https://


di******me.com


INTERNAL_FILES_URL=https://


di******me.com


 #

修改允许上传文件大小



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/certbotvolumes/dbvolumes/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



二、weaviate向量数据库迁移

当前状态为已从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文件暴露weaviate808050051端口



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+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询