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
参考资料
热门推荐
NPN和PNP传感器电路结构的内部工作原理
二审程序是什么?详解中国法律体系中的上诉机制
2025年最新三年存款利率全解析
TPU薄膜制造进程:揭秘构建高性能产品的关键
新高考选科:一道决定人生轨迹的“多选题”
晚上头被风吹了头痛怎么办
芒稻河变身美丽景观河:从污染治理到生态修复的绿色转型
数字化转型:保险营销服务的痛点及解决方案
宁波渔民捕到怪鱼,被叫做“虎鱼”的它是什么?世界最毒珊瑚鱼近亲
《第五人格》杰克雾刃玩法全攻略:从入门到精通
认知行为疗法在心理健康中的应用研究
元气少女缘结神:十年后的奇幻与浪漫重温
中法工艺同桌展示,这场匠艺游园会带来手工艺人的精彩对话
去除鱼腥味的实用方法
炒股需要具备哪些基本能力?这些能力如何提高投资成功率?
心绞痛在哪个位置?一文详解心绞痛疼痛位置及应对方法
盐酸吗啉胍片成人使用指导说明
不等式运算的秘密:揭秘解题关键
多发性皮下血管瘤的成因是什么
氧化铝价格创近十年新高 供给收紧局面难改
科学家跨越时间的对话:波粒二象性的新发现为未来量子技术铺路
冰箱冷藏异常的原因与解决办法(常见冰箱冷藏问题及解决方法)
三亚,夏天错峰出行的理想目的地,比很多城市都舒服,你选对了吗
Appetite:儿童不同的吃饭习惯与父母情绪和行为的关系
什么是故事板?如何为视频制作故事板?
固态电池和锂电池区别是什么?哪个更好?
手机屏幕圆偏振光和线偏振光的区别,你了解吗?
盘式制动器的工作原理
何建行教授:中国创新技术助力全球肺癌早诊早治
健身气功培训教程:九大健身气功的调息与呼吸训练方法