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

53AI知识库

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


我要投稿

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

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

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

推荐语

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

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询