Qdrant服务需运行于6333端口且Dify可访问,通过docker ps和curl -s http://localhost:6333/health验证;.env中设VECTOR_STORE=qdrant、QDRANT_URL=http://localhost:6333(Docker环境用host.docker.internal或宿主机IP);手动创建dify_knowledge collection,维度须匹配embedding模型;上传文档后查日志确认indexing completed,并用curl验证向量入库。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

确认Qdrant服务已就绪并可被Dify访问
确保Qdrant容器正在运行且监听6333端口,同时Dify所在宿主机能直接通过localhost:6333与之通信——这是后续所有配置生效的前提。
执行 docker ps | grep qdrant,确认输出中包含 qdrant/qdrant 镜像和 PORTS 列显示 0.0.0.0:6333->6333/tcp;若无,则需先启动:docker run -d -p 6333:6333 -p 6334:6334 --name qdrant-local qdrant/qdrant。
在Dify部署机上运行 curl -s http://localhost:6333/health | jq '.status',返回 "ok" 才算真正就绪。如果报 connection refused,说明Qdrant没起来或端口被占;返回 timeout,则可能是Docker网络隔离导致Dify容器无法访问宿主机localhost——此时必须改用宿主机真实IP(如192.168.1.100),不能写localhost。
这一步卡住的人超过七成,根源全在“以为docker run完就等于通了”。【务必用curl实测,别只看docker ps】
修改Dify的.env配置文件启用Qdrant后端
进入Dify项目根目录,打开 .env 文件,找到 VECTOR_STORE 这一行,将其值改为 qdrant。
紧接着配置Qdrant连接参数:取消 #QDRANT_URL=... 和 #QDRANT_API_KEY=... 前的注释符号#,并将 QDRANT_URL 的值设为 http://localhost:6333(开发环境)或 http://host.docker.internal:6333(Docker for Mac/Windows下Dify容器访问宿主Qdrant);QDRANT_API_KEY 留空即可,本地单机部署无需认证。
特别注意:若Dify本身也跑在Docker中(比如用docker-compose up启动),则 localhost 指向的是Dify容器内部,根本连不到宿主机上的Qdrant。此时必须用 host.docker.internal(Mac/Win)或宿主机真实局域网IP(Linux)。【Linux Docker用户必须手动查宿主机IP,不能依赖localhost】
保存 .env 后无需重启Dify服务,配置会在下一次知识库上传或向量同步时自动加载。
创建Qdrant Collection并验证结构兼容性
Qdrant不会自动建库,Dify首次上传文档时才会尝试创建collection,但前提是命名与字段定义匹配预期。你得提前手动初始化一个标准collection,避免Dify因权限或schema错误静默失败。
方法一:用Python客户端快速建库
安装客户端:pip install qdrant-client;然后运行以下代码:
from qdrant_client import QdrantClient
from qdrant_client.models import VectorParams, Distance
client = QdrantClient(host="localhost", port=6333)
client.create_collection(
collection_name="dify_knowledge",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)
其中 size=1536 是OpenAI text-embedding-3-large等主流模型的默认维度;如果你用的是百炼qwen-plus或Ollama内置embedding,要按实际输出维度调整,否则插入向量时会报400错误。
方法二:用curl一次性创建(适合无Python环境)
curl -X PUT 'http://localhost:6333/collections/dify_knowledge' \
-H 'Content-Type: application/json' \
-d '{
"vectors": {
"size": 1536,
"distance": "Cosine"
}
}'
上传文档触发向量化并检查日志是否成功落库
登录Dify Web界面 → 进入「知识库」→ 新建知识库 → 上传任意PDF或TXT文件 → 点击「保存并处理」。
立即打开Dify后台日志:docker logs -f dify-api-1(或对应api服务容器名),滚动查看最后20行。出现类似 [INFO] vector_indexing: indexing completed for document_id=xxx 的日志,说明向量已写入Qdrant。
若看到 [ERROR] vector_indexing: failed to upsert points 或 ConnectionError,则回到第一步检查Qdrant健康状态;若看到 [WARNING] vector_indexing: collection dify_knowledge not found,说明collection名称不一致或未创建成功。
最终验证:执行 curl 'http://localhost:6333/collections/dify_knowledge/points/count',返回 {"count":127} 类似结果,数字大于0即表示已有向量入库。


















