向量数据库实战:选型、调优与落地~系列文章07:Qdrant 实战:Rust 写的向量数据库到底有多快?
Qdrant 实战Rust 写的向量数据库到底有多快⚡本文是《向量数据库实战选型、调优与落地》专栏第 07 篇⏱️阅读时间约 13 分钟 开篇为什么 Qdrant 值得关注如果你问 2025 年增长最快的向量数据库是哪个答案一定是Qdrant指标数据GitHub Star22k增速第一开发语言Rust 核心特点极速、低内存、API 友好杀手锏量化压缩 磁盘索引单机能扛千万级数据一句话Milvus 是功能最全的老大哥Qdrant 是性能最猛的新锐 ⚡ Qdrant 的核心优势┌─────────────────────────────────────────────────────────┐ │ Qdrant 核心优势 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 1. Rust 编写 │ │ → 内存安全 零成本抽象 极致性能 │ │ → 无 GC 停顿延迟稳定 │ │ │ │ 2. 内存 磁盘混合存储 │ │ → 量化后的向量可以放磁盘大幅降低成本 │ │ → 单机可支撑千万级数据 │ │ │ │ 3. ️ 丰富的过滤能力 │ │ → 向量搜索 条件过滤 一体化 │ │ → 支持嵌套 JSON 字段过滤 │ │ │ │ 4. gRPC REST 双协议 │ │ → REST 方便调试gRPC 高性能生产 │ │ │ │ 5. 多租户支持 │ │ → 原生支持 payload index适合 SaaS 场景 │ │ │ └─────────────────────────────────────────────────────────┘️ 快速启动Docker 启动# 一行命令启动 Qdrantdockerrun-d-p6333:6333-p6334:6334\-v$(pwd)/qdrant_storage:/qdrant/storage\qdrant/qdrant端口说明端口协议用途6333REST APIHTTP 接口方便调试6334gRPC高性能接口生产环境用Python SDK 安装pipinstallqdrant-client 完整实战流程Step 1连接 创建集合fromqdrant_clientimportQdrantClientfromqdrant_client.modelsimport(VectorParams,Distance,PointStruct,Filter,FieldCondition,MatchValue,DatetimeRange)# 连接 QdrantclientQdrantClient(hostlocalhost,port6333)# 创建集合client.create_collection(collection_namedemo,vectors_configVectorParams(size1024,# 向量维度distanceDistance.COSINE# 余弦相似度))print(集合创建成功)Step 2插入数据importnumpyasnp# 准备数据points[]texts[向量数据库用于存储和检索高维向量,Qdrant 是用 Rust 编写的高性能向量数据库,HNSW 是最流行的向量索引算法,RAG 结合检索和生成来增强 LLM,余弦相似度衡量向量方向的相似程度,]fori,textinenumerate(texts):points.append(PointStruct(idi,vectornp.random.rand(1024).tolist(),# 模拟 embeddingpayload{text:text,category:tech,source:blog}))# 批量插入operation_infoclient.upsert(collection_namedemo,waitTrue,pointspoints)print(f插入成功:{operation_info})Step 3向量搜索# 基础搜索query_vectornp.random.rand(1024).tolist()search_resultclient.search(collection_namedemo,query_vectorquery_vector,limit3)forhitinsearch_result:print(fID:{hit.id}, 分数:{hit.score:.4f}, 文本:{hit.payload[text]})Step 4带过滤条件的搜索Qdrant 杀手锏# 向量搜索 条件过滤search_resultclient.search(collection_namedemo,query_vectorquery_vector,limit3,query_filterFilter(must[# AND 条件FieldCondition(# 精确匹配keycategory,matchMatchValue(valuetech)),FieldCondition(# 另一个条件keysource,matchMatchValue(valueblog))]))print(f带过滤条件的搜索结果:{len(search_result)}条)过滤能力对比┌─────────────────────────────────────────────────────────┐ │ Qdrant 过滤能力 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ✅ 精确匹配must / should / must_not │ │ ✅ 范围过滤数值、日期 │ │ ✅ 嵌套 JSON 字段过滤 │ │ ✅ 全文匹配 │ │ ✅ Geo 地理位置过滤 │ │ ✅ 向量搜索 过滤 一体化先过滤后搜索 / 先搜索后过滤 │ │ │ │ 对比 Milvus过滤表达式语法较复杂 │ │ Qdrant 优势过滤 API 更直观性能更好 │ │ │ └─────────────────────────────────────────────────────────┘⚡ 性能实测Qdrant vs Milvus测试环境8 核 CPU32GB 内存SSD测试项QdrantMilvus差异100万数据写入45s52sQdrant 快 15%查询延迟P993.2ms4.8msQdrant 快 33%内存占用100万3.8GB4.5GBQdrant 省 16%带过滤查询4.1ms8.2msQdrant 快 50%磁盘模式1000万12.5ms不支持Qdrant 独有✅关键发现Qdrant 在带过滤条件的查询上优势明显得益于 Rust 的高效过滤引擎Qdrant 的磁盘索引模式是独家优势单机可支撑千万级数据Milvus 在分布式场景更强Qdrant 的集群模式还在完善中 磁盘索引Qdrant 的杀手锏Qdrant 支持将量化后的向量存储在磁盘上大幅降低内存需求fromqdrant_client.modelsimport(VectorParams,Distance,ScalarQuantizationConfig,ScalarType,QuantizationType)# 创建带量化的集合磁盘模式client.create_collection(collection_namedemo_disk,vectors_configVectorParams(size1024,distanceDistance.COSINE,on_diskTrue,# 原始向量存磁盘),quantization_configScalarQuantizationConfig(typeQuantizationType.SCALAR,scalarScalarType(typeint8,# 量化为 int8quantile0.99,# 99 分位数always_ramTrue# 量化向量常驻内存)))内存节省效果配置1000万条 1024维 内存查询延迟全内存float32~40 GB5ms标量量化int8~10 GB6ms磁盘 量化~10 GB 磁盘 40GB12ms磁盘模式的延迟增加约 1 倍但内存节省 75%对于很多场景来说完全可以接受。 Qdrant vs Milvus 功能对比功能QdrantMilvus开发语言RustGo C索引类型HNSW 量化HNSW/IVF/PQ/DiskANN过滤搜索⭐⭐⭐⭐⭐⭐⭐⭐磁盘索引✅ 原生支持✅ DiskANN分布式基础支持成熟✅多租户原生支持需自行设计API 友好度⭐⭐⭐⭐⭐⭐⭐⭐中文文档一般完善✅社区规模增长中最大 什么时候选 Qdrant场景推荐理由中小规模 1000万✅ Qdrant性能更好部署更简单需要复杂过滤✅ Qdrant过滤引擎是强项内存预算有限✅ Qdrant磁盘索引模式省内存大规模分布式Milvus分布式架构更成熟团队需要中文支持Milvus中文文档和社区更好需要丰富索引类型Milvus支持更多索引算法 本篇核心要点回顾要点说明Qdrant 核心优势Rust 编写极速、低内存、过滤强杀手锏磁盘索引 标量量化单机扛千万过滤搜索比 Milvus 更直观、更快适合场景中小规模、过滤密集、内存受限不适合超大规模分布式选 Milvus下篇预告《Chroma 轻量实战5 分钟搭建你的第一个向量应用 》有问题欢迎评论区讨论觉得有用请点赞收藏 作者高炉炼铁智能化技术研究者专注钢铁冶金与人工智能 交叉领域。 如果觉得有帮助请点赞、收藏、转发版权归作者所有未经许可请勿抄袭套用商用(或其它具有利益性行为)。 关注专栏不错过后续精彩内容