Qdrant 使用介绍:功能、价格与上手指南
Qdrant 是一款开源向量数据库,专为 AI 应用设计,支持相似度搜索、过滤与混合检索。本文介绍其核心功能、云服务价格、安装部署方法,并提供 Python 上手指南与常见问题解答。
Qdrant 是一款专为 AI 应用设计的开源向量数据库,能够高效存储和检索高维向量数据。无论你是构建语义搜索、推荐系统,还是 RAG 应用,Qdrant 都能提供低延迟、高召回率的相似度搜索能力。本文将从功能、价格和上手实践三个角度,帮你快速掌握 Qdrant。
Qdrant 是什么?
Qdrant(读作 "quadrant")是一个用 Rust 编写的向量相似度搜索引擎。它通过 REST 和 gRPC 接口对外提供服务,支持向量数据的增删改查、过滤、分页和分布式部署。
核心定位:为 AI 应用提供生产级的向量检索层。
核心功能一览
Qdrant 的功能设计围绕“高效检索 + 灵活过滤”展开,主要包含:
- 向量相似度搜索:支持余弦、欧氏、点积等距离度量,适用于文本、图像、音频等嵌入向量。
- 丰富的过滤条件:可在搜索时结合 payload 字段进行数值范围、地理位置、关键字匹配等过滤。
- 混合检索:支持稀疏向量与稠密向量结合,提升搜索精度。
- 多向量支持:同一数据点可存储多个向量,便于多模态检索。
- 水平扩展:支持分片、副本与分布式部署,满足大规模场景。
- 量化与压缩:通过标量量化、乘积量化降低内存占用。
- 快照与备份:支持集合快照,方便数据迁移与恢复。
Qdrant 价格:开源版与云服务
Qdrant 提供开源版和托管云服务两种选择。
| 方案 | 价格 | 适用场景 |
|---|---|---|
| 开源版 | 免费 | 本地部署、测试、中小规模生产 |
| 云服务免费层 | 免费 | 1GB 内存、1 个集群,适合学习与原型 |
| 云服务标准层 | 按资源计费 | 生产环境,按 CPU、内存、存储用量付费 |
| 企业版 | 定制报价 | 需要私有部署、高级安全与支持 |
建议:个人学习或小项目优先使用开源版或云免费层;生产环境可根据数据量和 QPS 选择云标准层或自建集群。
如何快速上手 Qdrant
方式一:Docker 本地部署
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
启动后访问 http://localhost:6333/dashboard 即可打开 Web UI。
方式二:Qdrant Cloud
- 注册 Qdrant Cloud 账号。
- 创建免费集群,获取 URL 和 API Key。
- 在代码中连接即可。
Python 快速示例
安装客户端:
pip install qdrant-client
连接并创建集合:
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams
client = QdrantClient(":memory:") # 本地内存模式
client.recreate_collection(
collection_name="my_collection",
vectors_config=VectorParams(size=4, distance=Distance.COSINE),
)
插入向量并搜索:
from qdrant_client.models import PointStruct
client.upsert(
collection_name="my_collection",
points=[
PointStruct(id=1, vector=[0.05, 0.61, 0.76, 0.74], payload={"city": "Berlin"}),
PointStruct(id=2, vector=[0.19, 0.81, 0.75, 0.11], payload={"city": "London"}),
],
)
hits = client.search(
collection_name="my_collection",
query_vector=[0.2, 0.1, 0.9, 0.7],
limit=1,
)
print(hits)
以上代码演示了集合创建、数据插入与相似度搜索的完整流程。
Qdrant 与其他向量数据库对比
| 特性 | Qdrant | Milvus | Pinecone |
|---|---|---|---|
| 开源 | 是 | 是 | 否 |
| 过滤能力 | 强 | 中 | 中 |
| 部署复杂度 | 低 | 中 | 低 |
| 云服务价格 | 有免费层 | 无官方云 | 较高 |
| 多向量支持 | 是 | 有限 | 否 |
Qdrant 在过滤灵活性和易用性上表现突出,适合需要复杂条件筛选的 AI 应用。
最佳实践与注意事项
- 合理设置向量维度:维度需与嵌入模型输出一致,如 OpenAI text-embedding-3-small 为 1536 维。
- 使用 payload 索引:对频繁过滤的字段建立索引,显著提升查询速度。
- 控制批量大小:批量插入时建议每批 100-1000 条,避免单次请求过大。
- 监控内存:向量数据占用内存较高,生产环境需关注内存使用与量化配置。
- 版本升级:关注官方 Release Notes,确保客户端与服务端版本兼容。
常见问题 FAQ
Q1:Qdrant 免费吗? 开源版完全免费,云服务提供免费层,适合学习和原型验证。
Q2:Qdrant 支持中文吗? 支持。Qdrant 存储的是向量,中文文本通过嵌入模型转为向量后即可检索。
Q3:Qdrant 可以替代 Elasticsearch 吗? 两者定位不同。Qdrant 擅长向量相似度搜索,Elasticsearch 擅长全文检索。可结合使用实现混合搜索。
Q4:如何选择距离度量? 文本嵌入常用余弦距离;图像嵌入可尝试欧氏距离;具体需根据模型训练方式决定。
结论
Qdrant 是一款功能全面、上手简单的向量数据库,凭借强大的过滤能力、多向量支持和灵活的部署方式,成为 AI 应用开发者的优选工具。你可以从 Docker 本地部署或云免费层开始,结合 Python 客户端快速验证想法。对于生产环境,建议根据数据规模选择合适的云服务方案或自建集群,并遵循最佳实践优化性能。
现在就可以运行一行 Docker 命令,开启你的 Qdrant 向量搜索之旅。