Dify向量数据库迁移至Milvus实战指南
创作时间:
作者:
@小白创作中心
Dify向量数据库迁移至Milvus实战指南
引用
CSDN
1.
https://blog.csdn.net/u013743338/article/details/141806378
本文记录了Dify(版本0.7.2)向量数据库从Weaviate迁移到Milvus的过程,详细描述了环境配置、命令执行以及遇到的问题和解决方案。对于使用Dify并计划进行数据库迁移的用户具有重要参考价值。
一、备份
在进行任何迁移操作之前,首先需要备份当前的数据库内容。使用以下命令对挂载目录进行备份:
tar -cvf volumes-$(date +%s).tgz volumes
二、修改环境变量
找到dify/docker/.env
文件,修改其中的VETOR_STORE
值为milvus
(默认为weaviate
)。同时,建议同步修改compose-config.yml
中的Milvus版本,并添加Milvus可视化管理工具Attu。完整的配置如下:
milvus-standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.3.1
profiles:
- milvus
command: [ "milvus", "run", "standalone" ]
environment:
ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379}
MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000}
common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true}
volumes:
- ./volumes/milvus/milvus:/var/lib/milvus
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9091/healthz" ]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
ports:
- "19530:19530" # Milvus gRPC port
- "9091:9091" # Milvus HTTP port
depends_on:
- "etcd"
- "minio"
networks:
- milvus
三、重启服务
执行以下命令重启Dify服务:
docker-compose down
docker-compose up -d
重启后,检查Milvus相关容器是否正常启动:
四、执行迁移命令
尝试执行数据库迁移命令:
docker exec -it docker-api-1 flask vdb-migrate
如果遇到连接失败的错误,可能是由于端口未开放。需要在compose-config.yml
中确保Milvus的端口已正确映出:
ports:
- "19530:19530" # Milvus gRPC port
- "9091:9091" # Milvus HTTP port
五、最终解决方案
经过多次尝试,发现需要在API服务的环境变量中添加Milvus的连接信息:
api:
image: langgenius/dify-api:0.7.2
restart: always
environment:
# Use the shared environment variables.
<<: *shared-api-worker-env
# Startup mode, 'api' starts the API server.
MODE: api
MILVUS_HOST: milvus-standalone # Milvus服务的容器名称
MILVUS_PORT: 19530 # Milvus服务的端口
depends_on:
- db
- redis
volumes:
# Mount the storage directory to the container, for storing user files.
- ./volumes/app/storage:/app/api/storage
networks:
- ssrf_proxy_network
- default
同时,也需要在Worker和Web服务中添加相同的环境变量:
worker:
image: langgenius/dify-api:0.7.2
restart: always
environment:
# Use the shared environment variables.
<<: *shared-api-worker-env
# Startup mode, 'worker' starts the Celery worker for processing the queue.
MODE: worker
MILVUS_HOST: milvus-standalone # Milvus服务的容器名称
MILVUS_PORT: 19530 # Milvus服务的端口
depends_on:
- db
- redis
volumes:
# Mount the storage directory to the container, for storing user files.
- ./volumes/app/storage:/app/api/storage
networks:
- ssrf_proxy_network
- default
web:
image: langgenius/dify-web:0.7.2
restart: always
environment:
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
APP_API_URL: ${APP_API_URL:-}
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
MILVUS_HOST: milvus-standalone # Milvus服务的容器名称
MILVUS_PORT: 19530 # Milvus服务的端口
六、Attu配置
如果需要使用Attu进行可视化管理,可以在compose-config.yml
中添加以下配置:
attu:
container_name: attu
profiles:
- milvus
image: zilliz/attu:v2.4.7
environment:
MILVUS_URL: milvus-standalone:19530
ports:
- "18000:3000"
depends_on:
- "milvus-standalone"
networks:
- milvus
参考资料
热门推荐
经济纠纷诉讼时效是多久
食物发芽能不能吃?一文拆解5大常见食材+储存贴士
打完水光针后的注意事项
场外基金投资指南:策略与风险全解析
低频脉冲电治疗仪的作用和适应症是什么
公路运营维护流程包括哪些内容
如何优化硬件产品流程以提高生产效率?
已有三座偏要再加一个,乾隆为何修建团河行宫?
已有三座偏要再加一个,乾隆为何修建团河行宫?
心率超过100以上怎么办
冷镦机结构原理特点及分类和用途详解
冷镦机的结构组成与工作原理详解
汉代皇帝与宠臣关系的历史考察
《可爱的中国》:方志敏笔下的深沉爱国情怀与不朽篇章
大唐宦官杨思勖:带兵打仗有多牛?
汽车胎内侧破了,如何更换备胎?别慌,冷静,操作很容易
亚历山大帝国的继承者:帝国分裂的因果剖析
亚历山大帝国的继承者:帝国分裂的因果剖析
四维彩超检查的内容和意义
JS开发快应用:从框架选择到团队管理的全面指南
菌丝体:真菌的营养部分及其在生态系统中的重要作用
车企秀“肌肉” 供应链赋能 智能底盘应用的冲锋号响了
法人代表如何处理公司债务问题
卫青的军事生涯:如何成就一代名将?
昆明市三所重点高中2024年高考成绩出炉:一本率均超93%
国际法庭:探究其所在地及职能
2024-2025学年人教版小学数学三年级教学大纲
适合孤独迷茫时读的书籍
剪辫运动与清末民初社会变革
常见儿童疾病预防:从健康饮食开始