字数 1238,阅读大约需 7 分钟
索引
在索引方面,Qdrant使用分层可导航小世界(HNSW)算法,该算法对于标准向量搜索非常有效,但在过滤搜索操作方面效果不佳
部署
在线
免费的4GB存储空间,1GB内存,05vcpus
https://cloud.qdrant.io/accounts/[1]
单机
version: '3.3'
services:
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
- "6334:6334"
volumes:
- "./qdrant:/qdrant/storage"
environment:
- QDRANT__SERVICE__API_KEY=Pz&aAb@Ygx9%vfpvs^
restart: on-failure
hostname: kafka.local
networks:
- platform-common-net
networks:
platform-common-net:
external: true
API
https://api.qdrant.tech/api-reference[2]
应用
Kilo code
先进行ollma配置向量化的embedding模型
在插件里配置相应信息
索引中:Indexing - Indexed 0 / 5777 blocks found
在Qdrant里创建了集合:ws-400d00ebdad6d633
对collection分析
{
"result": {
"status": "green",
"optimizer_status": "ok",
"indexed_vectors_count": 0,
"points_count": 0,
"segments_count": 8,
"config": {
"params": {
"vectors": {
"size": 1024,
"distance": "Cosine"
},
"shard_number": 1,
"replication_factor": 1,
"write_consistency_factor": 1,
"on_disk_payload": true
},
"hnsw_config": {
"m": 16,
"ef_construct": 100,
"full_scan_threshold": 10000,
"max_indexing_threads": 0,
"on_disk": false
},
"optimizer_config": {
"deleted_threshold": 0.2,
"vacuum_min_vector_number": 1000,
"default_segment_number": 0,
"max_segment_size": null,
"memmap_threshold": null,
"indexing_threshold": 20000,
"flush_interval_sec": 5,
"max_optimization_threads": null
},
"wal_config": {
"wal_capacity_mb": 32,
"wal_segments_ahead": 0
},
"quantization_config": null,
"strict_mode_config": {
"enabled": false
}
},
"payload_schema": {
"pathSegments.2": {
"data_type": "keyword",
"points": 0
},
"pathSegments.4": {
"data_type": "keyword",
"points": 0
},
"pathSegments.3": {
"data_type": "keyword",
"points": 0
},
"pathSegments.1": {
"data_type": "keyword",
"points": 0
},
"pathSegments.0": {
"data_type": "keyword",
"points": 0
}
}
},
"status": "ok",
"time": 0.001513041
}
# Qdrant 向量数据库参数配置详解
以下是 Qdrant 集合配置中所有参数的详细解释,按照功能模块分类:
## 1. 基本状态信息
**`status`**: "green"
- 集合健康状态,可能值有:
- "green":正常运行
- "yellow":部分功能受限
- "red":严重问题
**`optimizer_status`**: "ok"
- 后台优化器状态,表示自动维护任务是否正常执行
**`indexed_vectors_count`**: 0
- 已构建HNSW索引的向量数量(当前为0表示没有向量被索引)
**`points_count`**: 0
- 集合中存储的总数据点数量(向量+payload)
**`segments_count`**: 8
- 数据分片(segment)数量,Qdrant内部将数据分成多个segment以提高并行性
## 2. 核心配置参数 (`params`)
**`vectors.size`**: 1024
- 每个向量的维度大小(这里是1024维向量)
**`vectors.distance`**: "Cosine"
- 向量相似度计算方法,可选:
- "Cosine":余弦相似度(适合文本等场景)
- "Euclid":欧氏距离
- "Dot":点积相似度
**`shard_number`**: 1
- 数据分片数量(影响水平扩展能力,1表示单分片)
**`replication_factor`**: 1
- 数据副本数量(1表示没有副本)
**`write_consistency_factor`**: 1
- 写入操作需要确认的副本数(1表示主分片确认即可)
**`on_disk_payload`**: true
- payload数据是否持久化到磁盘(true降低内存使用)
## 3. HNSW索引配置 (`hnsw_config`)
**`m`**: 16
- HNSW图中每个节点的最大连接数(影响图连通性,值越大查询精度越高但内存占用越大)
**`ef_construct`**: 100
- 构建索引时的动态候选列表大小(值越大构建质量越高但构建时间越长)
**`full_scan_threshold`**: 10000
- 当集合中点数小于此值时,直接使用暴力搜索而非HNSW索引
**`max_indexing_threads`**: 0
- 最大索引构建线程数(0表示自动根据CPU核心数决定)
**`on_disk`**: false
- 索引是否存储在磁盘上(false表示在内存中,查询更快)
## 4. 优化器配置 (`optimizer_config`)
**`deleted_threshold`**: 0.2
- segment中删除点占比超过20%时触发自动优化
**`vacuum_min_vector_number`**: 1000
- 执行vacuum操作(彻底删除标记数据)所需的最小向量数
**`default_segment_number`**: 0
- 自动优化的目标segment数量(0表示不限制)
**`max_segment_size`**: null
- 单个segment的最大大小(null表示无限制)
**`indexing_threshold`**: 20000
- segment中向量数超过此值时触发索引构建
**`flush_interval_sec`**: 5
- 内存数据刷盘间隔(秒),影响数据持久性和写入性能
## 5. WAL配置 (`wal_config`)
**`wal_capacity_mb`**: 32
- 预写日志(WAL)的最大容量(MB),用于保证数据持久性
**`wal_segments_ahead`**: 0
- 预分配的额外WAL段数量(0表示不预分配)
## 6. 其他配置
**`quantization_config`**: null
- 量化配置(如设置标量量化可减少内存占用)
**`strict_mode_config.enabled`**: false
- 是否启用严格模式(true时会禁用某些可能导致性能下降的操作)
## 7. 有效载荷模式 (`payload_schema`)
定义了5个关键字类型的字段:
- `pathSegments.0`到`pathSegments.4`
- `data_type`: "keyword"(适合存储离散值)
- `points`: 0(当前没有数据使用这些字段)
## 配置特点分析
1. **内存优化型配置**:
- `on_disk_payload`=true 减少内存使用
- HNSW索引保留在内存中(`on_disk`=false)保证查询速度
2. **中小规模数据集优化**:
- `full_scan_threshold`=10000 适合数据量不大的场景
- `hnsw_config.m`=16 平衡了精度和内存使用
3. **写入配置**:
- `flush_interval_sec`=5 提供较好的写入吞吐
- 32MB WAL适合中等写入负载
这个配置适合存储约10万级别的1024维向量,特别适合需要快速查询但数据量不是特别大的应用场景。
对代码仓索引之后,内存和CPU出现用量变化,但是没有将向量化数据写入磁盘,很奇怪,因此我提了相应的问题到discord
引用链接
[1] https://cloud.qdrant.io/accounts/:
[2] https://api.qdrant.tech/api-reference:
评论区