🧩 Dify 集成 Milvus 配置指南
🔧 詳細配置步驟
1. 環境準備與克隆倉庫
首先確保你的系統已安裝 Git、Docker 和 Docker Compose。然后克隆 Dify 的代碼倉庫:
git clone https://github.com/langgenius/dify.git
cd dify/docker
2. 配置環境變量
復制環境變量模板文件并進行修改:
cp .env.example .env
你需要編輯 .env
文件,找到并修改以下關鍵參數:
環境變量 | 示例值 | 說明 |
---|---|---|
VECTOR_STORE | milvus | 指定向量存儲為 Milvus |
MILVUS_URI | http://host.docker.internal:19530 | Milvus 服務地址(Docker 內訪問) |
MILVUS_URI | http://YOUR_ALIYUN_MILVUS_ENDPOINT:19530 | 阿里云 Milvus 公網地址 |
MILVUS_USER | username | 連接 Milvus 的用戶名(若需認證) |
MILVUS_PASSWORD | password | 連接 Milvus 的密碼(若需認證) |
MILVUS_ENABLE_HYBRID_SEARCH | True | 可選,啟用混合檢索 |
在.env添加Milvus 的圖形化管理工具attu
attu:container_name: attuimage: zilliz/attu:v2.5.6environment:MILVUS_URL: milvus-standalone:19530ports:- "9092:3000"depends_on:- "milvus-standalone"
# The type of vector store to use.
# Supported values are `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase`, `opengauss`, `tablestore`,`vastbase`,`tidb`,`tidb_on_qdrant`,`baidu`,`lindorm`,`huawei_cloud`,`upstash`, `matrixone`, `clickzetta`.
VECTOR_STORE=milvus# Milvus configuration. Only available when VECTOR_STORE is `milvus`.
# The milvus uri.
MILVUS_URI=http://host.docker.internal:19530
MILVUS_DATABASE=
MILVUS_TOKEN=
MILVUS_USER=root
MILVUS_PASSWORD=Milvus
# 啟用或禁用混合搜索
MILVUS_ENABLE_HYBRID_SEARCH=False
MILVUS_ANALYZER_PARAMS=# 啟用或禁用基于角色的訪問控制(RBAC)和身份驗證-測試階段目前設置為False
MILVUS_AUTHORIZATION_ENABLED=false#此配置告知 Milvus 的 S3 插件(用于與 MinIO 或 AWS S3 交互)是否使用 AWS 管理的 IAM(身份和訪問管理)角色進行身份驗證
PLUGIN_S3_USE_AWS_MANAGED_IAM=true
#配置用于 指定 S3 插件的 URL 請求風格。
PLUGIN_S3_USE_PATH_STYLE=true
Milvus默認賬號是root , 密碼是Milvus
💡 重要提示:
- 使用 Docker 環境內的 Milvus(例如使用
docker-compose
同時啟動)時,MILVUS_URI
通常設置為http://host.docker.internal:19530
。 - 連接的是阿里云 Milvus 或其他外部獨立部署的 Milvus 實例,則需要將其設置為該實例的公網地址(或內網地址,如果 Dify 與它在同一網絡),例如
http://your-milvus-endpoint:19530
,并提供相應的用戶名和密碼(如果啟用了認證)。 - 如果你的 Milvus 實例啟用了認證(如用戶名密碼或 Token),務必填寫
MILVUS_USER
和MILVUS_PASSWORD
(或MILVUS_TOKEN
)。
3. 啟動 Docker 服務
配置好環境變量后,使用 Docker Compose 啟動所有服務:
docker compose up -d
等待所有容器成功啟動后,你就可以通過瀏覽器訪問 http://localhost
(或你的服務器 IP)來進入 Dify 的安裝頁面,初始化管理員賬戶并登錄控制臺。
🔍 驗證集成效果
成功啟動并登錄 Dify 后,建議通過以下步驟驗證 Milvus 是否已正常集成:
-
創建知識庫并上傳文檔:
- 在 Dify 控制臺,進入 “知識庫”。
- 點擊 “創建知識庫”,上傳一個示例文檔(如 PDF、TXT)。
- 處理過程中,Dify 會自動將文檔切片并向量化,然后存儲到 Milvus 中。
-
在 Milvus 中驗證數據:
- 如果使用阿里云 Milvus,可以登錄其控制臺,使用 Attu Manager 工具查看是否生成了對應的 Collection 以及向量數據是否已導入。
- 如果使用本地部署的 Milvus,你也可以通過 Attu 的可視化界面(可單獨部署)或命令行工具來連接并檢查。
-
創建 RAG 應用測試:
- 在 Dify “工作室” 創建一個新的應用。
- 在應用的 “上下文” 配置中,添加你剛剛創建的知識庫。
- 發布并運行該應用,嘗試詢問一些基于你上傳文檔內容的問題。如果它能正確回答,說明 Milvus 的向量檢索和 Dify 的 RAG 流程工作正常。
Attu可視化工具
訪問地址:http://你的ip:9092
?? 常見問題與排查
集成過程中可能會遇到一些問題,這里有一些排查思路:
問題現象 | 可能原因 | 排查與解決 |
---|---|---|
Dify 無法連接 Milvus | MILVUS_URI 配置錯誤;網絡不通;認證失敗 | 檢查 MILVUS_URI 地址和端口是否正確;確保網絡連通性(如從 Dify 容器內 telnet MILVUS_IP 19530 );核對用戶名和密碼 |
上傳文檔處理失敗 | Milvus 連接超時或權限不足 | 查看 Dify 后臺容器日志(docker logs <dify-api-container> )獲取詳細錯誤信息 |
應用無法檢索到知識庫內容 | 知識庫處理未成功;Collection 未正確創建 | 在 Dify 知識庫界面確認文檔處理狀態是否為成功;通過 Attu 檢查 Milvus 中是否存在對應的 Collection 和數據 |
🔧 高級配置:
- 性能優化:對于生產環境,可以考慮啟用混合檢索 (
MILVUS_ENABLE_HYBRID_SEARCH=True
)、調整索引參數等。 - 安全性:為生產環境的 Milvus 實例配置安全的認證機制。