安装与配置 #

本章介绍 Qdrant 的多种安装和配置方式,从本地开发到生产部署。

安装方式概览 #

text
Qdrant 安装方式:

┌─────────────────────────────────────────────────────────────┐
│                                                              │
│  本地开发          生产部署              云服务              │
│  ┌─────────┐      ┌─────────────┐      ┌─────────────┐     │
│  │ Docker  │      │ Kubernetes  │      │ Qdrant Cloud│     │
│  │ Python  │      │ Docker Swarm│      │             │     │
│  │ Binary  │      │ 裸机部署     │      │             │     │
│  └─────────┘      └─────────────┘      └─────────────┘     │
│                                                              │
└─────────────────────────────────────────────────────────────┘

Docker 安装(推荐) #

Docker 是最简单快捷的 Qdrant 安装方式,适合开发和测试环境。

快速启动 #

bash
docker run -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/qdrant_storage:/qdrant/storage \
    qdrant/qdrant

端口说明 #

text
端口映射:

6333 → REST API 端口
       ├── HTTP 接口
       ├── Web UI (http://localhost:6333/dashboard)
       └── 健康检查

6334 → gRPC 端口
       ├── 高性能接口
       └── 批量操作

数据持久化 #

bash
docker run -p 6333:6333 -p 6334:6334 \
    -v /path/to/data:/qdrant/storage \
    qdrant/qdrant

自定义配置 #

bash
docker run -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/config/production.yaml:/qdrant/config/production.yaml \
    -v $(pwd)/storage:/qdrant/storage \
    qdrant/qdrant ./qdrant --config-path /qdrant/config/production.yaml

Docker Compose #

yaml
version: '3.8'

services:
  qdrant:
    image: qdrant/qdrant:latest
    ports:
      - "6333:6333"
      - "6334:6334"
    volumes:
      - ./qdrant_storage:/qdrant/storage
    environment:
      - QDRANT__LOG_LEVEL=INFO
    restart: unless-stopped

启动命令:

bash
docker-compose up -d

Python 内存模式 #

适合快速测试和原型开发,无需启动服务器。

安装客户端 #

bash
pip install qdrant-client

内存模式使用 #

python
from qdrant_client import QdrantClient

client = QdrantClient(":memory:")

client.create_collection(
    collection_name="test_collection",
    vectors_config={
        "size": 384,
        "distance": "Cosine"
    }
)

print("内存模式客户端已就绪")

连接本地服务器 #

python
from qdrant_client import QdrantClient

client = QdrantClient(url="http://localhost:6333")

print(client.get_collections())

Kubernetes 部署 #

适合生产环境的大规模部署。

单节点部署 #

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: qdrant
  labels:
    app: qdrant
spec:
  replicas: 1
  selector:
    matchLabels:
      app: qdrant
  template:
    metadata:
      labels:
        app: qdrant
    spec:
      containers:
      - name: qdrant
        image: qdrant/qdrant:latest
        ports:
        - containerPort: 6333
          name: http
        - containerPort: 6334
          name: grpc
        volumeMounts:
        - name: qdrant-storage
          mountPath: /qdrant/storage
      volumes:
      - name: qdrant-storage
        persistentVolumeClaim:
          claimName: qdrant-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: qdrant
spec:
  selector:
    app: qdrant
  ports:
  - port: 6333
    name: http
    targetPort: 6333
  - port: 6334
    name: grpc
    targetPort: 6334
  type: ClusterIP

使用 Helm 部署 #

bash
helm repo add qdrant https://qdrant.github.io/qdrant-helm
helm repo update

helm install qdrant qdrant/qdrant \
    --set replicaCount=3 \
    --set persistence.size=100Gi

分布式集群配置 #

yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: qdrant-cluster
spec:
  serviceName: qdrant-headless
  replicas: 3
  selector:
    matchLabels:
      app: qdrant
  template:
    metadata:
      labels:
        app: qdrant
    spec:
      containers:
      - name: qdrant
        image: qdrant/qdrant:latest
        ports:
        - containerPort: 6333
        - containerPort: 6334
        env:
        - name: QDRANT__CLUSTER__ENABLED
          value: "true"
        volumeMounts:
        - name: data
          mountPath: /qdrant/storage
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 50Gi

Qdrant Cloud #

Qdrant 官方提供的托管云服务,无需运维。

创建集群 #

text
1. 访问 https://cloud.qdrant.io/
2. 注册账号
3. 创建集群:
   ├── 选择区域
   ├── 选择规格
   └── 配置网络
4. 获取连接信息

连接云实例 #

python
from qdrant_client import QdrantClient

client = QdrantClient(
    url="https://your-cluster-url.qdrant.io",
    api_key="your-api-key"
)

print(client.get_collections())

云服务优势 #

text
✅ 无需运维
✅ 自动备份
✅ 高可用保证
✅ 自动扩展
✅ 监控告警
✅ 安全合规

配置文件详解 #

Qdrant 使用 YAML 格式的配置文件。

基础配置 #

yaml
log_level: INFO

storage:
  storage_path: ./storage
  
  snapshots_path: ./snapshots
  
  on_disk_payload: true

  performance:
    max_search_threads: 4
    max_optimization_threads: 2

  wal:
    wal_capacity_mb: 32
    wal_segments_ahead: 0

  optimizers:
    deleted_threshold: 0.2
    vacuum_min_vector_count: 1000
    default_segment_number: 5
    max_segment_size_kb: 100000
    memmap_threshold_kb: 50000
    indexing_threshold_kb: 20000
    flush_interval_sec: 5
    max_optimization_threads: 2

service:
  host: 0.0.0.0
  http_port: 6333
  grpc_port: 6334
  max_request_size_mb: 32

telemetry_disabled: false

性能优化配置 #

yaml
storage:
  performance:
    max_search_threads: 8
    max_optimization_threads: 4

  optimizers:
    indexing_threshold_kb: 10000
    max_segment_size_kb: 100000
    memmap_threshold_kb: 50000

hnsw_graph:
  m: 16
  ef_construct: 100
  full_scan_threshold_kb: 10000

集群配置 #

yaml
cluster:
  enabled: true
  
  p2p:
    port: 6335
  
  consensus:
    tick_period_ms: 100
  
  collection:
    replication_factor: 2
    write_consistency_factor: 1
    read_consistency_factor: 1

安全配置 #

yaml
service:
  api_key: your-secret-api-key
  
  tls:
    cert: /path/to/cert.pem
    key: /path/to/key.pem

storage:
  snapshots_path: ./snapshots

环境变量 #

Qdrant 支持通过环境变量配置:

bash
export QDRANT__LOG_LEVEL=DEBUG
export QDRANT__SERVICE__HTTP_PORT=6333
export QDRANT__SERVICE__GRPC_PORT=6334
export QDRANT__STORAGE__STORAGE_PATH=/data/qdrant

docker run -d \
    -e QDRANT__LOG_LEVEL=INFO \
    -e QDRANT__SERVICE__API_KEY=your-api-key \
    -p 6333:6333 \
    -p 6334:6334 \
    qdrant/qdrant

客户端安装 #

Python 客户端 #

bash
pip install qdrant-client

pip install qdrant-client[fastembed]
python
from qdrant_client import QdrantClient

client = QdrantClient(
    url="http://localhost:6333",
    api_key="optional-api-key"
)

JavaScript/TypeScript 客户端 #

bash
npm install @qdrant/js-client-rest
typescript
import { QdrantClient } from '@qdrant/js-client-rest';

const client = new QdrantClient({
  url: 'http://localhost:6333',
  apiKey: 'optional-api-key'
});

Go 客户端 #

bash
go get github.com/qdrant/go-client
go
import "github.com/qdrant/go-client/qdrant"

client, err := qdrant.NewClient(&qdrant.Config{
    Host: "localhost",
    Port: 6334,
})

Rust 客户端 #

toml
[dependencies]
qdrant-client = "1.7"
rust
use qdrant_client::client::QdrantClient;

let client = QdrantClient::from_url("http://localhost:6334").build()?;

验证安装 #

检查服务状态 #

bash
curl http://localhost:6333/health

响应:

json
{
  "title": "qdrant - vector search engine",
  "version": "1.7.0",
  "status": "ok"
}

访问 Web UI #

text
打开浏览器访问:
http://localhost:6333/dashboard

Python 测试 #

python
from qdrant_client import QdrantClient

client = QdrantClient(url="http://localhost:6333")

print(client.get_collections())

client.create_collection(
    collection_name="test",
    vectors_config={"size": 4, "distance": "Cosine"}
)

print("安装验证成功!")

常见问题 #

端口冲突 #

bash
修改端口映射:

docker run -p 16333:6333 -p 16334:6334 qdrant/qdrant

连接时使用新端口:
client = QdrantClient(url="http://localhost:16333")

权限问题 #

bash
修复存储目录权限:

chmod -R 755 ./qdrant_storage
chown -R 1000:1000 ./qdrant_storage

内存不足 #

yaml
调整配置减少内存使用:

storage:
  optimizers:
    indexing_threshold_kb: 5000
  performance:
    max_search_threads: 2

hnsw_graph:
  m: 8
  ef_construct: 50

小结 #

本章介绍了 Qdrant 的多种安装方式:

  • Docker:最简单快捷,适合开发测试
  • Kubernetes:生产环境推荐
  • Qdrant Cloud:无需运维,开箱即用
  • 内存模式:快速原型开发

下一步 #

安装完成后,继续学习 核心概念,了解 Qdrant 的数据模型!

最后更新:2026-04-04