Qdrant Docker 部署教程:数据卷、API Key 和集合初始化

本文记录一套 Qdrant Docker Compose 部署方式,适合内网知识库、RAG 检索、语义搜索和 AI 助手召回层。

环境说明

  • Qdrant 镜像:qdrant/qdrant
  • REST 端口:6333
  • gRPC 端口:6334
  • 数据目录:/qdrant/storage
  • 部署方式:Docker Compose
  • 安全配置:API Key + 本机端口绑定 + 反向代理

1. 预检镜像

bash 复制代码
docker pull docker.1ms.run/qdrant/qdrant:latest

如果这里卡住,先处理 Docker 镜像拉取问题,再继续配置 collection 和 API Key。

2. 准备 .env

env 复制代码
QDRANT_API_KEY=change-this-write-key
QDRANT_READ_ONLY_API_KEY=change-this-read-key

写入 Key 和只读 Key 分开,后续给检索服务用只读 Key,给数据导入任务用写入 Key。

3. 编写 compose.yaml

yaml 复制代码
services:
  qdrant:
    image: docker.1ms.run/qdrant/qdrant:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:6333:6333"
      - "127.0.0.1:6334:6334"
    environment:
      QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY}
      QDRANT__SERVICE__READ_ONLY_API_KEY: ${QDRANT_READ_ONLY_API_KEY}
    volumes:
      - qdrant_storage:/qdrant/storage

volumes:
  qdrant_storage:

启动:

bash 复制代码
docker compose pull
docker compose up -d
docker compose ps
docker compose logs -f qdrant

4. 验证服务

bash 复制代码
curl -H "api-key: $QDRANT_API_KEY" http://127.0.0.1:6333/collections

如果没有带 api-key,开启 API Key 后请求会失败。这个现象可以用来验证鉴权是否生效。

5. 初始化 collection

下面创建一个名为 internal_docs 的 collection,向量维度示例为 1024

bash 复制代码
curl -X PUT "http://127.0.0.1:6333/collections/internal_docs" \
  -H "api-key: $QDRANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vectors": {
      "size": 1024,
      "distance": "Cosine"
    }
  }'

注意:size 要和 embedding 模型输出维度一致。不同 embedding 模型的维度不一定相同,不能随意照抄。

6. payload 字段设计

内网知识库不要只写入向量。建议同时保存这些 metadata:

json 复制代码
{
  "doc_id": "runbook-2026-06",
  "source": "ops-docs",
  "title": "Docker 数据卷挂载路径说明",
  "chunk_index": 12,
  "updated_at": "2026-06-08",
  "permission_group": "ops"
}

后续做权限过滤、来源引用、过期文档清理和业务分组时,这些字段会直接影响检索质量。

7. 反向代理方向

Qdrant 容器端口建议先绑定本机,由反向代理统一处理 HTTPS、鉴权和访问日志:

nginx 复制代码
location / {
    proxy_pass http://127.0.0.1:6333;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
}

8. 快照备份

创建 collection 快照:

bash 复制代码
curl -X POST "http://127.0.0.1:6333/collections/internal_docs/snapshots" \
  -H "api-key: $QDRANT_API_KEY"

查看快照:

bash 复制代码
curl -H "api-key: $QDRANT_API_KEY" \
  "http://127.0.0.1:6333/collections/internal_docs/snapshots"

备份数据卷:

bash 复制代码
docker run --rm \
  -v qdrant_storage:/data \
  -v "$PWD":/backup \
  docker.1ms.run/alpine:3.20 \
  tar czf /backup/qdrant-storage.tgz -C /data .

常见问题

Qdrant 是不是模型服务

不是。Qdrant 是向量数据库,负责相似度检索和 payload 过滤,不负责生成回答。

63336334 都要暴露吗

不一定。REST 常用 6333,gRPC 是 6334。如果业务只用 REST,可以先只开放需要的入口。

collection 维度写错怎么办

向量维度要和 embedding 模型一致。写错后通常需要重建 collection 或重新导入数据。

只备份数据卷够不够

数据卷备份是底层兜底,collection 快照更适合按集合恢复。团队环境建议两者都留记录。

相关推荐
阿黎梨梨4 分钟前
Docker 容器化实战:从零搭建 Web 服务与反向代理
前端·后端·docker
旗开得胜马到成功12 分钟前
AMD TPM 8.3/8.5漏洞技术剖析:服务器加密信任根崩塌后的备份密钥泄露风险与紧急加固
运维·服务器·网络·系统架构
小月土星14 分钟前
当 LLM 遇上集装箱:我的 Docker 学习笔记与 AI 后端的思考(含反向代理Nginx)
后端·docker·容器
Kismet_nvi17 分钟前
Kubernetes 核心模块详细总结
云原生·容器·kubernetes
love530love27 分钟前
虚拟显示驱动导致 Photoshop / Camera Raw 卡死?OrayIddDriver 的锅
运维·人工智能·ui·photoshop·orayidddriver·hags 调度
阿朝笔记30 分钟前
DocuWorks 10 电子化工作流:OCR + 条码自动归档落地运维方案
运维·docuworks10·文档电子化归档·ocr扫描归档·企业文印运维·无纸化办公
coder_lorraine35 分钟前
Halo 2.x 回收站文章无法删除?一篇文章教你彻底解决
java·运维
何时梦醒1 小时前
Docker 容器化入门:从「我电脑能跑」到「哪台机器都能跑」
后端·docker·面试
烬羽1 小时前
nginx 里写 localhost 反而 502?一条请求带你彻底搞懂 Docker 端口映射与反向代理
nginx·docker·程序员
jimidou1 小时前
从 PM2、Supervisor 到 Docker:老项目部署现代化实战(以 HOJ 评测机为例)
docker